- Feb 24, 2021
-
-
Lang Hames authored
These comments had gotten out of date with the code.
-
Florian Hahn authored
(CMTST A, A) will only set elements to 0 if the element is 0 in A. Use it for != 0 compares, which currently use (vnot (CMEQz A)). This saves a mvn instruction. Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D97303
-
Sven van Haastregt authored
Also ensure all kernel enqueue functions have CL 2.0 as minimum version. Differential Revision: https://reviews.llvm.org/D97060
-
Sven van Haastregt authored
Add the remaining missing builtin function declarations that have enum or typedef argument or return types. Differential Revision: https://reviews.llvm.org/D96860
-
Martin Storsjö authored
Passing the MSVC include dirs via -isystem makes them included before clang's own include resource dir (<prefix>/lib/clang/<version>/include). This causes includes of stddef.h to bypass clang's stddef.h which defines max_align_t, which libc++ needs defined. This was added in 4372f06d when the initial windows testing support was added, and has been brought along since. It's unclear if this was needed back then - now it no longer is needed at least, and since libc++ started depending on max_align_t, this became an issue. Differential Revision: https://reviews.llvm.org/D97167
-
Martin Storsjö authored
Remove a stray -lib argument in guardcf-lto.ll; llvm-lib doesn't support generating import libs from a def file unlike lib.exe. Previously this worked because the -lib argument was ignored (printing only a warning). Differential Revision: https://reviews.llvm.org/D96699
-
David Green authored
Currently the load/store optimizer will only fold in increments of the same size as the load/store. This patch expands that to any legal immediate for the post-inc instruction. This is a recommit of 3b34b06f with correctness fixes and extra tests. Differential Revision: https://reviews.llvm.org/D95885
-
Petr Hosek authored
This reverts commit 6b286d93 because in some cases when the optimizer evaluates the global initializer, __llvm_prf_cnts may not be entirely zero initialized.
-
Marek Kurdej authored
-
Douglas Yung authored
This should fix the PS4 linux buildbot failure: http://lab.llvm.org:8011/#/builders/139/builds/63
-
Craig Topper authored
We know the input is going to be expanded as well, so we should just ask for the already expanded operands. Otherwise we create nodes that are just going to need to be legalized.
-
Cassie Jones authored
Reviewed By: aemerson Differential Revision: https://reviews.llvm.org/D96675
-
Vitaly Buka authored
Asan allocator already support up to (1 << 40) bytes allocations.
-
Vitaly Buka authored
-O1 and above do dont call real optimizer pipeline in ThinLTO PreLink. Also clang can't add PostLink OptimizerLastEPCallbacks for in-process ThinLTO. This results in missing sanitizer passes with ThinLTO. Simple working solution is just call OptimizerLastEPCallbacks at the end of buildThinLTOPreLinkDefaultPipeline. Differential Revision: https://reviews.llvm.org/D96320
-
Dávid Bolvanský authored
Patch takes advantage of the implicit default behavior to reduce the number of attributes, which in turns reduces compilation time. Reviewed By: serge-sans-paille Differential Revision: https://reviews.llvm.org/D97116
-
Siva Chandra Reddy authored
The single target is called llvmlibc. We can add back smaller libm and other targets in future if required.
-
xgupta authored
The current size of the llvm-project repository exceeds 1 GB. A shallow clone can save a lot of space and time. Some developers might not aware of this feature. Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D97118
-
xgupta authored
-
Dan Liew authored
Previously there was no way to control how module destructors were emitted by `ModuleAddressSanitizerPass`. However, we want language frontends (e.g. Clang) to be able to decide how to emit these destructors (if at all). This patch introduces the `AsanDtorKind` enum that represents the different ways destructors can be emitted. There are currently only two valid ways to emit destructors. * `Global` - Use `llvm.global_dtors`. This was the previous behavior and is the default. * `None` - Do not emit module destructors. The `ModuleAddressSanitizerPass` and the various wrappers around it have been updated to take the `AsanDtorKind` as an argument. The `-asan-destructor-kind=` command line argument has been introduced to make this easy to test from `opt`. If this argument is specified it overrides the value passed to the `ModuleAddressSanitizerPass` constructor. Note that `AsanDtorKind` is not `bool` because we will introduce a new way to emit destructors in a subsequent patch. Note that `AsanDtorKind` is given its own header file because if it is declared in `Transforms/Instrumentation/AddressSanitizer.h` it leads to compile error (Module is ambiguous) when trying to use it in `clang/Basic/CodeGenOptions.def`. rdar://71609176 Differential Revision: https://reviews.llvm.org/D96571
-
Yaxun (Sam) Liu authored
Currently managed variables are emitted as undefined symbols, which causes difficulty for diagnosing undefined symbols for non-managed variables. This patch transforms managed variables in device compilation so that they can be emitted as normal variables. Reviewed by: Artem Belevich Differential Revision: https://reviews.llvm.org/D96195
-
Amara Emerson authored
The non-flag setting variants of instructions may have different regclass requirements. If so, we need to constrain them. Differential Revision: https://reviews.llvm.org/D97343
-
Chen Zheng authored
This is for XCOFF DWARF support. Seems when DWARF debug is enable, symbol 0 has special usage for AIX binder. At least, symbol 0 can not be the .text section. Otherwise, we get some binding time error. Add correct C_FILE symbol at index 0 here to make AIX binder work. Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D97117
-
Nico Weber authored
This reverts commit c4a91444. Breaks check-llvm everywhere, see https://reviews.llvm.org/D97242#2583716
-
Jez Ng authored
{D95809} introduced a mechanism for synthetic symbol creation of personality pointers. When multiple section relocations referred to the same personality pointer, it would deduplicate them. However, it neglected to consider that we could have symbol relocations that also refer to the same personality pointer. This diff fixes it. In practice, this mix of relocations arises when there is a statically-linked personality routine that is referenced from multiple object files. Within the same object file, it will be referred to via section relocations, but (obviously) other object files will refer to it via symbol relocations. Failing to deduplicate these references resulted in us going over the 3-personality-pointer limit when linking some larger applications. Fixes llvm.org/PR48389. Reviewed By: #lld-macho, thakis, alexshap Differential Revision: https://reviews.llvm.org/D97245 -
Jez Ng authored
The silent failures had confused me a few times. I haven't added a similar check for platform yet as we don't yet have logic to infer the platform automatically, and so adding that check would require updating dozens of test files. Reviewed By: #lld-macho, thakis, alexshap Differential Revision: https://reviews.llvm.org/D97209
-
Jez Ng authored
I've adjusted the RelocAttrBits to better fit the semantics of the relocations. In particular: 1. *_UNSIGNED relocations are no longer marked with the `TLV` bit, even though they can occur within TLV sections. Instead the `TLV` bit is reserved for relocations that can reference thread-local symbols, and *_UNSIGNED relocations have their own `UNSIGNED` bit. The previous implementation caused TLV and regular UNSIGNED semantics to be conflated, resulting in rebase opcodes being incorrectly emitted for TLV relocations. 2. I've added a new `POINTER` bit to denote non-relaxable GOT relocations. This distinction isn't important on x86 -- the GOT relocations there are either relaxable or non-relaxable loads -- but arm64 has `GOT_LOAD_PAGE21` which loads the page that the referent symbol is in (regardless of whether the symbol ends up in the GOT). This relocation must reference a GOT symbol (so must have the `GOT` bit set) but isn't itself relaxable (so must not have the `LOAD` bit). The `POINTER` bit is used for relocations that *must* reference a GOT slot. 3. A similar situation occurs for TLV relocations. 4. ld64 supports both a pcrel and an absolute version of ARM64_RELOC_POINTER_TO_GOT. But the semantics of the absolute version are pretty weird -- it results in the value of the GOT slot being written, rather than the address. (That means a reference to a dynamically-bound slot will result in zeroes being written.) The programs I've tried linking don't use this form of the relocation, so I've dropped our partial support for it by removing the relevant RelocAttrBits. Reviewed By: alexshap Differential Revision: https://reviews.llvm.org/D97031
-
Jez Ng authored
Just something I noticed while debugging arm relocations... Reviewed By: #lld-macho, thakis Differential Revision: https://reviews.llvm.org/D97078
-
River Riddle authored
This avoids unnecessary async overhead in situations that won't benefit from it.
-
Chen Zheng authored
We may need to do some customization for DWARF unit length in DWARF section headers for some targets for some code generation path. For example, for XCOFF in assembly path, AIX assembler does not require the debug section containing its debug unit length in the header. Move emitDwarfUnitLength to MCStreamer class so that we can do customization in different Streamers Reviewed By: ikudrin Differential Revision: https://reviews.llvm.org/D95932
-
Adrian Prantl authored
The maintainer of libdwarf kindly provided this patch with a bunch of historic DWARF extensions that are missing from Dwarf.def. This list is helpful to avoid potential conflicts in the user-defined vendor extension space in the future. Patch by David Anderson! Differential Revision: https://reviews.llvm.org/D97242
-
Ta-Wei Tu authored
Blocks that contain only a single branch instruction to the next block can be skipped in analyzing the loop-nest structure. This is currently done by `getSingleSuccessor()`. However, the branch instruction might have multiple targets which happen to all be the same. In this case, the block should still be considered as empty and skipped. An example is `test/Transforms/LoopInterchange/update-condbranch-duplicate-successors.ll` (the LIT test for this patch is modified from it as well). Reviewed By: Whitney Differential Revision: https://reviews.llvm.org/D97286
-
Juneyoung Lee authored
This is a simple patch to update SimplifyCFG's passingValueIsAlwaysUndefined to inspect more attributes. A new function `CallBase::isPassingUndefUB` checks attributes that imply noundef. Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D97244
-
Nico Weber authored
This reverts commit 7f9d5d6e. Breaks check-clang everywhere, see https://reviews.llvm.org/D96638#2583608
-
Kern Handa authored
Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D97141
-
River Riddle authored
This prevents a bug in the pass instrumentation implementation where the main thread would end up with a different pass manager in different runs of the pass.
-
Erich Keane authored
This got me pretty recently... TrailingObjects cannot be copied or moved, since they need to be pre-allocated. This patch deletes the copy and move operations (plus re-adds the default ctor). Differential Revision: https://reviews.llvm.org/D97324
-
Jessica Paquette authored
The order in which the nested calls to Builder.buildWhatever are evaluated in differs between GCC and Clang. This caused a bot failure because the MIR in the testcase was coming out in a different order than expected. Rather than using nested calls, pull them out in order to fix the order of evaluation.
-
Fangrui Song authored
And delete the SmallPtrSetImpl overload. While here, decrease inline element counts from 8 to 4. See D97128 for the choice. Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D97257
-
Fangrui Song authored
While here, decrease inline element counts from 8 to 4. See D97128 for the choice. Depends on D97128 (which added a new SmallVecImpl overload for collectUsedGlobalVariables). Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D97139
-