Commit
6e20d70a695028099b1705cfcfd1373d9d62e747
by craig.topper[LegalizeDAG] Convert strict fp nodes to libcalls without losing the chain. Previously we mutated the node and then converted it to a libcall. But this loses the chain information. This patch keeps the chain, but unfortunately breaks tail call optimization as the functions involved in deciding if a node is in tail call position can't handle the chain. But correct ordering seems more important to be right. Somehow the SystemZ tests improved. I looked at one of them and it seemed that we're handling the split vector elements in a different order and that made the copies work better. Differential Revision: https://reviews.llvm.org/D70334
|
 | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp |
 | llvm/test/CodeGen/X86/vector-constrained-fp-intrinsics.ll |
 | llvm/test/CodeGen/X86/fp-intrinsics.ll |
 | llvm/test/CodeGen/SystemZ/vector-constrained-fp-intrinsics.ll |
 | llvm/test/CodeGen/X86/fp-intrinsics-fma.ll |
Commit
d4e1ba3fa9dfec2613bdcc7db0b58dea490c56b1
by Duncan P. N. Exon SmithImplement __attribute__((objc_direct)), __attribute__((objc_direct_members)) __attribute__((objc_direct)) is an attribute on methods declaration, and __attribute__((objc_direct_members)) on implementation, categories or extensions. A `direct` property specifier is added (@property(direct) type name) These attributes / specifiers cause the method to have no associated Objective-C metadata (for the property or the method itself), and the calling convention to be a direct C function call. The symbol for the method has enforced hidden visibility and such direct calls are hence unreachable cross image. An explicit C function must be made if so desired to wrap them. The implicit `self` and `_cmd` arguments are preserved, however to maintain compatibility with the usual `objc_msgSend` semantics, 3 fundamental precautions are taken: 1) for instance methods, `self` is nil-checked. On arm64 backends this typically adds a single instruction (cbz x0, <closest-ret>) to the codegen, for the vast majority of the cases when the return type is a scalar. 2) for class methods, because the class may not be realized/initialized yet, a call to `[self self]` is emitted. When the proper deployment target is used, this is optimized to `objc_opt_self(self)`. However, long term we might want to emit something better that the optimizer can reason about. When inlining kicks in, these calls aren't optimized away as the optimizer has no idea that a single call is really necessary. 3) the calling convention for the `_cmd` argument is changed: the caller leaves the second argument to the call undefined, and the selector is loaded inside the body when it's referenced only. As far as error reporting goes, the compiler refuses: - making any overloads direct, - making an overload of a direct method, - implementations marked as direct when the declaration in the interface isn't (the other way around is allowed, as the direct attribute is inherited from the declaration), - marking methods required for protocol conformance as direct, - messaging an unqualified `id` with a direct method, - forming any @selector() expression with only direct selectors. As warnings: - any inconsistency of direct-related calling convention when @selector() or messaging is used, - forming any @selector() expression with a possibly direct selector. Lastly an `objc_direct_members` attribute is added that can decorate `@implementation` blocks and causes methods only declared there (and in no `@interface`) to be automatically direct. When decorating an `@interface` then all methods and properties declared in this block are marked direct. Radar-ID: rdar://problem/2684889 Differential Revision: https://reviews.llvm.org/D69991 Reviewed-By: John McCall
|
 | clang/include/clang/Basic/AttrDocs.td |
 | clang/test/SemaObjC/method-direct-properties.m |
 | clang/include/clang/Basic/Attr.td |
 | clang/include/clang/Sema/DeclSpec.h |
 | clang/lib/AST/JSONNodeDumper.cpp |
 | clang/include/clang/Sema/Sema.h |
 | clang/lib/AST/TextNodeDumper.cpp |
 | clang/lib/CodeGen/CGObjCGNU.cpp |
 | clang/include/clang/AST/DeclObjC.h |
 | clang/lib/Sema/SemaObjCProperty.cpp |
 | clang/lib/CodeGen/CGObjCMac.cpp |
 | clang/lib/Sema/SemaDeclObjC.cpp |
 | clang/test/Misc/pragma-attribute-supported-attributes-list.test |
 | clang/test/SemaObjC/method-direct.m |
 | clang/lib/Parse/ParseObjc.cpp |
 | clang/include/clang/Basic/DiagnosticSemaKinds.td |
 | clang/lib/AST/DeclObjC.cpp |
 | clang/lib/Sema/SemaDeclAttr.cpp |
 | clang/include/clang/Basic/ObjCRuntime.h |
 | clang/lib/CodeGen/CGObjCRuntime.h |
 | clang/lib/Sema/SemaExprObjC.cpp |
 | clang/test/CodeGenObjC/direct-method.m |
 | clang/lib/AST/DeclPrinter.cpp |
 | clang/lib/CodeGen/CGObjC.cpp |
Commit
ff75bf6ac93a9ef5a7d41f7645e02fde3e968ce1
by craig.topper[X86] Add AMD Matisse (znver2) model number to getHostCPUName and compiler-rt's getAMDProcessorTypeAndSubtype. This is the CPUID model used on Ryzen 3000 series (Zen 2/Matisse) CPUs. Patch by Alex James Differential Revision: https://reviews.llvm.org/D70279
|
 | compiler-rt/lib/builtins/cpu_model.c |
 | llvm/lib/Support/Host.cpp |
Commit
3be6dbca3b88e82009e1990957c15b94455c1714
by tejohnson[ThinLTO] Promotion handling cleanup (NFC) Summary: Clean up the code that does GV promotion in the ThinLTO backends. Specifically, we don't need to check whether we are importing since that is already checked and handled correctly in shouldPromoteLocalToGlobal. Simply call shouldPromoteLocalToGlobal, and if it returns true we are guaranteed that we are promoting, whether or not we are importing (or in the exporting module). This also makes the handling in getName() consistent with that in getLinkage(), which checks the DoPromote parameter regardless of whether we are importing or exporting. Reviewers: steven_wu, pcc, evgeny777 Subscribers: mehdi_amini, inglorion, hiraditya, dexonsmith, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D70327
|
 | llvm/lib/Transforms/Utils/FunctionImportUtils.cpp |
 | llvm/include/llvm/Transforms/Utils/FunctionImportUtils.h |
Commit
626260cfe3c7a5d9747f0bf13d87fa1855eb74bb
by danalbertUpdate the docs for building libc++. Summary: Rewrite the in-tree build to be a clearer tl;dr like we have for the out-of-tree build. Reviewers: EricWF, mclow.lists, ldionne Reviewed By: ldionne Subscribers: dexonsmith, christof, ldionne, enh, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D69917
|
 | libcxx/docs/BuildingLibcxx.rst |
Commit
8bfb353bb33cd2bcd2ef28e36eb8b90123b153c4
by erik.pilkington[Sema] Fix a -Wobjc-signed-char-bool false-positive Unsigned bit-field flags can only have boolean values, so handle that case in Expr::isKnownToHaveBooleanValue. rdar://56256999
|
 | clang/lib/AST/Expr.cpp |
 | clang/test/SemaObjC/signed-char-bool-conversion.m |
Commit
fffcd3e48ecf3f66d97c3b4daf624b3b2f9d74bf
by craig.topper[X86] Add a 'break;' to the end of the last case in a switch to avoid surprising the next person to add a case after this one. NFC
|
 | llvm/lib/Target/X86/X86ISelDAGToDAG.cpp |
Commit
19fd9039ca242f408493b5c662f9d908eab8555e
by danalbertFix _LIBCPP_HAS_ definitions for Android. Summary: Android added quick_exit()/at_quick_exit() in API level 21, aligned_alloc() in API level 28, and timespec_get() in API level 29, but has the other C11 features at all API levels (since they're basically just coming from clang directly). _LIBCPP_HAS_QUICK_EXIT and _LIBCPP_HAS_TIMESPEC_GET already existed, so we can reuse them. (And use _LIBCPP_HAS_TIMESPEC_GET in a few more places where _LIBCPP_HAS_C11_FEATURES has been used as a proxy. This isn't correct for Android.) _LIBCPP_HAS_ALIGNED_ALLOC is added, to cover aligned_alloc() (obviously). Add a missing std:: before aligned_alloc in a cstdlib test, and remove a couple of !defined(_WIN32)s now that we're explicitly testing TEST_HAS_ALIGNED_ALLOC rather than TEST_HAS_C11_FEATURES. Reviewers: danalbert, EricWF, mclow.lists Reviewed By: danalbert Subscribers: srhines, christof, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D69929
|
 | libcxx/test/std/language.support/support.runtime/ctime.pass.cpp |
 | libcxx/test/std/utilities/time/date.time/ctime.pass.cpp |
 | libcxx/test/support/test_macros.h |
 | libcxx/include/ctime |
 | libcxx/include/__config |
 | libcxx/test/std/depr/depr.c.headers/stdlib_h.pass.cpp |
 | libcxx/include/cstdlib |
 | libcxx/test/std/language.support/support.runtime/cstdlib.pass.cpp |
Commit
8f8a9f3437d4517f674395da30edb59d5514f7bc
by diggerlinimplement printing out raw section data of xcoff objectfile for llvm-objdump SUMMARY: implement printing out raw section data of xcoff objectfile for llvm-objdump and option -D --disassemble-all option for llvm-objdump Reviewers: Sean Fertile Subscribers: rupprecht, seiyai,hiraditya Differential Revision: https://reviews.llvm.org/D70255
|
 | llvm/test/tools/llvm-objdump/xcoff-disassemble-all.test |
 | llvm/lib/Object/XCOFFObjectFile.cpp |
 | llvm/test/tools/llvm-objdump/xcoff-raw-section-data.test |