1. [LegalizeDAG] Convert strict fp nodes to libcalls without losing the (details)
  2. Implement __attribute__((objc_direct)), (details)
  3. [X86] Add AMD Matisse (znver2) model number to getHostCPUName and (details)
  4. [ThinLTO] Promotion handling cleanup (NFC) (details)
  5. Update the docs for building libc++. (details)
  6. [Sema] Fix a -Wobjc-signed-char-bool false-positive (details)
  7. [X86] Add a 'break;' to the end of the last case in a switch to avoid (details)
  8. Fix _LIBCPP_HAS_ definitions for Android. (details)
  9. implement printing out raw section data of xcoff objectfile for (details)
Commit 6e20d70a695028099b1705cfcfd1373d9d62e747 by craig.topper
[LegalizeDAG] Convert strict fp nodes to libcalls without losing the
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:
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
The file was modifiedllvm/test/CodeGen/X86/vector-constrained-fp-intrinsics.ll
The file was modifiedllvm/test/CodeGen/X86/fp-intrinsics.ll
The file was modifiedllvm/test/CodeGen/SystemZ/vector-constrained-fp-intrinsics.ll
The file was modifiedllvm/test/CodeGen/X86/fp-intrinsics-fma.ll
Commit d4e1ba3fa9dfec2613bdcc7db0b58dea490c56b1 by Duncan P. N. Exon Smith
Implement __attribute__((objc_direct)),
__attribute__((objc_direct)) is an attribute on methods declaration, and
__attribute__((objc_direct_members)) on implementation, categories or
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
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: Reviewed-By: John McCall
The file was modifiedclang/include/clang/Basic/
The file was addedclang/test/SemaObjC/method-direct-properties.m
The file was modifiedclang/include/clang/Basic/
The file was modifiedclang/include/clang/Sema/DeclSpec.h
The file was modifiedclang/lib/AST/JSONNodeDumper.cpp
The file was modifiedclang/include/clang/Sema/Sema.h
The file was modifiedclang/lib/AST/TextNodeDumper.cpp
The file was modifiedclang/lib/CodeGen/CGObjCGNU.cpp
The file was modifiedclang/include/clang/AST/DeclObjC.h
The file was modifiedclang/lib/Sema/SemaObjCProperty.cpp
The file was modifiedclang/lib/CodeGen/CGObjCMac.cpp
The file was modifiedclang/lib/Sema/SemaDeclObjC.cpp
The file was modifiedclang/test/Misc/pragma-attribute-supported-attributes-list.test
The file was addedclang/test/SemaObjC/method-direct.m
The file was modifiedclang/lib/Parse/ParseObjc.cpp
The file was modifiedclang/include/clang/Basic/
The file was modifiedclang/lib/AST/DeclObjC.cpp
The file was modifiedclang/lib/Sema/SemaDeclAttr.cpp
The file was modifiedclang/include/clang/Basic/ObjCRuntime.h
The file was modifiedclang/lib/CodeGen/CGObjCRuntime.h
The file was modifiedclang/lib/Sema/SemaExprObjC.cpp
The file was addedclang/test/CodeGenObjC/direct-method.m
The file was modifiedclang/lib/AST/DeclPrinter.cpp
The file was modifiedclang/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:
The file was modifiedcompiler-rt/lib/builtins/cpu_model.c
The file was modifiedllvm/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
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:
The file was modifiedllvm/lib/Transforms/Utils/FunctionImportUtils.cpp
The file was modifiedllvm/include/llvm/Transforms/Utils/FunctionImportUtils.h
Commit 626260cfe3c7a5d9747f0bf13d87fa1855eb74bb by danalbert
Update 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:
The file was modifiedlibcxx/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.
The file was modifiedclang/lib/AST/Expr.cpp
The file was modifiedclang/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
The file was modifiedllvm/lib/Target/X86/X86ISelDAGToDAG.cpp
Commit 19fd9039ca242f408493b5c662f9d908eab8555e by danalbert
Fix _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).
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()
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
Reviewers: danalbert, EricWF, mclow.lists
Reviewed By: danalbert
Subscribers: srhines, christof, libcxx-commits
Tags: #libc
Differential Revision:
The file was modifiedlibcxx/test/std/
The file was modifiedlibcxx/test/std/utilities/time/date.time/ctime.pass.cpp
The file was modifiedlibcxx/test/support/test_macros.h
The file was modifiedlibcxx/include/ctime
The file was modifiedlibcxx/include/__config
The file was modifiedlibcxx/test/std/depr/depr.c.headers/stdlib_h.pass.cpp
The file was modifiedlibcxx/include/cstdlib
The file was modifiedlibcxx/test/std/
Commit 8f8a9f3437d4517f674395da30edb59d5514f7bc by diggerlin
implement printing out raw section data of xcoff objectfile for
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:
The file was addedllvm/test/tools/llvm-objdump/xcoff-disassemble-all.test
The file was modifiedllvm/lib/Object/XCOFFObjectFile.cpp
The file was addedllvm/test/tools/llvm-objdump/xcoff-raw-section-data.test