- Sep 09, 2021
-
-
Martin Storsjö authored
Differential Revision: https://reviews.llvm.org/D107892
-
Martin Storsjö authored
These paths are needed when building with per-target runtime directories. (It's possible to fix this by manually setting these when invoking cmake, but one isn't supposed to need to do that.) Also set LLVM_TOOLS_BINARY_DIR while touching this area (as it's also unset in this case) even if it isn't specifically needed by the per-target runtime configuration. Differential Revision: https://reviews.llvm.org/D107895
-
Greg Clayton authored
Since we might end up using multiple threads when logging information in the DWARFTransformer, the handleDie() method must use the supplied stream named "OS" when logging warnings and errors. When we use multiple threads, we log to a thread specific stream buffer and then use a mutex to ensure our output doesn't overlap when we emit warnings and errors after a thread is done. Differential Revision: https://reviews.llvm.org/D109401
-
Jon Chesterfield authored
-
Jonas Devlieghere authored
Make sure there's a value for the shared_cache_base_address key exists in the dictionary before trying to dereference the value. rdar://76894476
-
Florian Hahn authored
The OrigPtr argument is not used in tree.
-
Chris Lattner authored
This patch (e4635e63) fixed a bug where a newly generated/reused constant wouldn't dominate a folded operation. It did so by calling isBeforeInBlock to move the constant around on demand. This introduced a significant compile time regression, because "isBeforeInBlock" is O(n) in the size of a block the first time it is called, and the cache is invalidated any time canonicalize changes something big in the block. This fixes LLVM PR51738 and this CIRCT issue: https://github.com/llvm/circt/issues/1700 This does affect the order of constants left in the top of a block, I staged in the testsuite changes in rG42431b82. Differential Revision: https://reviews.llvm.org/D109454
-
Michael Kruse authored
by commit 585c594d
-
Nikita Popov authored
Make the following changes in order to support opaque pointers in SROA: * Generate i8 GEPs for opaque pointers. * Explicitly enforce that promotable allocas only have stores of the alloca type -- previously this was implicitly enforced. * Replace a check for pointer element type with load/store type. Differential Revision: https://reviews.llvm.org/D109259
-
Steven Wan authored
The current check for typedef is naive and doesn't deal with any convoluted cases. This patch makes use of the new 'AlignRequirement' enum field from 'TypeInfo' to determine whether or not this is an 'aligned' attribute on a typedef. Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D109387
-
Arthur Eubanks authored
The implementation is mostly copied from MemDepAnalysis. We want to look at all loads and stores to the same pointer operand. Bitcasts and zero GEPs of a pointer are considered the same pointer value. We choose the most dominating instruction. Since updating MemorySSA with invariant.group is non-trivial, for now handling of invariant.group is not cached in any way, so it's part of the walker. The number of loads/stores with invariant.group is small for now anyway. We can revisit if this actually noticeably affects compile times. To avoid invariant.group affecting optimized uses, we need to have optimizeUsesInBlock() not use invariant.group in any way. Co-authored-by:
Piotr Padlewski <prazek@google.com> Reviewed By: asbirlea, nikic, Prazek Differential Revision: https://reviews.llvm.org/D109134
-
Louis Dionne authored
This commit partially reverts 0954e2b2 and 3fa4cff9, which make changes to the libc++ documentation implifying that OpenBSD is supported. Neither of these changes have been reviewed AFAICT, so I'm reverting as a matter of enforcing: 1. That changes get reviewed before being committed 2. That we have a discussion and a support plan for supporting OpenBSD officially in libc++ Please note that I would be thrilled to support OpenBSD officially in libc++, however doing so requires more than adding a note in the docs. In particular, please make sure you read the note in [1] about setting up CI testing for OpenBSD. [1]: https://libcxx.llvm.org/#platform-and-compiler-support Differential Revision: https://reviews.llvm.org/D109373
-
Philip Reames authored
None of this logic has anything to do with SCEV's internals, it just uses the existing public APIs. As a result, we can move the code from ScalarEvolution.cpp/hpp to Delinearization.cpp/hpp with only minor changes. This was discussed in advance on today's loop opt call. It turned out to be easy as hoped.
-
Nikita Popov authored
Directly use i8 for GEP, rather than fetching element type of i8*.
-
Louis Dionne authored
In other places in the code, we use lowercase spelling for things that are not available in prior standards. Differential Revision: https://reviews.llvm.org/D109435
-
Akira Hatanaka authored
integer 0/1 for the operand of bundle "clang.arc.attachedcall" https://reviews.llvm.org/D102996 changes the operand of bundle "clang.arc.attachedcall". This patch makes changes to llvm that are needed to handle the new IR. This should make it easier to understand what the IR is doing and also simplify some of the passes as they no longer have to translate the integer values to the runtime functions. Differential Revision: https://reviews.llvm.org/D103000
-
Akira Hatanaka authored
integer 0/1 for the operand of bundle "clang.arc.attachedcall" This should make it easier to understand what the IR is doing and also simplify some of the passes as they no longer have to translate the integer values to the runtime functions. Differential Revision: https://reviews.llvm.org/D102996
-
Matt Morehouse authored
Fixes a build error caused by a bad merge conflict resolution for https://reviews.llvm.org/D105084.
-
Leonard Chan authored
Differential Revision: https://reviews.llvm.org/D109208
-
Leonard Chan authored
Before, COMPILER_RT_TEST_COMPILER was used which pointed to a C compiler. While it is incorrect to assume either of these is the default compiler, using the C++ one allows for linking cpp tests. Differential Revision: https://reviews.llvm.org/D109207
-
Andrew Litteken authored
D104143 introduced canonical value numbering between regions, which allows for the easy identification of items across a region, eliminating the need in the outliner to create parallel lists of instructions for each region, and replace output values in a less convoluted way. Additionally, in a future commit, the output values will not necessarily be recorded values from the region itself, it could be a combination value where the actual value being output is a PHINode instead. This new method allows us to handle the replacement of the output value to the stored value with the corresponding item in the same place for both normal output values, and PHINode outputs instead of handling the different types of outputs in different locations. Reviewers: paquette, roelofs Differential Revision: https://reviews.llvm.org/D108656
-
Joseph Huber authored
This patch changes SPMDization to not trigger for regions with no parallelism. Otherwise, this will introduce unnecessary barriers that will slow the single-threaded region down. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D109438
-
Leonard Chan authored
Differential Revision: https://reviews.llvm.org/D109199
-
Alex Langford authored
IRExecutionUnit::SearchSpec is a struct that encapsulates information needed to look for a symbol. Specifically, it is comprised of a name represented with a ConstString and a FunctionNameType mask. Because the mask is unused (effectively always set to eFunctionNameTypeFull), we can remove the mask and replace all uses with eFunctionNameTypeFull. After doing that, SearchSpec is effectively a wrapper around a ConstString. As an aside, SearchSpec is similar in purpose to Module::LookupInfo. I briefly considered replacing uses of SearchSpec with LookupInfo, but the current code only cares about symbol names (treating them as eFunctionNameTypeFull). This code does care about language type, so LookupInfo may be appropriate for IRExecutionUnit in the future. Differential Revision: https://reviews.llvm.org/D109384
-
Amara Emerson authored
-
Nick Desaulniers authored
Otherwise we end up with an extra conditional jump, following by an unconditional jump off the end of a function. ie. bb.0: BT32rr .. JCC_1 %bb.4 ... bb.1: BT32rr .. JCC_1 %bb.2 ... JMP_1 %bb.3 bb.2: ... bb.3.unreachable: bb.4: ... Should be equivalent to: bb.0: BT32rr .. JCC_1 %bb.4 ... JMP_1 %bb.2 bb.1: bb.2: ... bb.3.unreachable: bb.4: ... This can occur since at the higher level IR (Instruction) SwitchInsts are required to have BBs for default destinations, even when it can be deduced that such BBs are unreachable. For most programs, this isn't an issue, just wasted instructions since the unreachable has been statically proven. The x86_64 Linux kernel when built with CONFIG_LTO_CLANG_THIN=y fails to boot though once D106056 is re-applied. D106056 makes it more likely that correlation-propagation (CVP) can deduce that the default case of SwitchInsts are unreachable. The x86_64 kernel uses a binary post processor called objtool, which emits this warning: vmlinux.o: warning: objtool: cfg80211_edmg_chandef_valid()+0x169: can't find jump dest instruction at .text.cfg80211_edmg_chandef_valid+0x17b I haven't debugged precisely why this causes a failure at boot time, but fixing this very obvious jump off the end of the function fixes the warning and boot problem. Link: https://bugs.llvm.org/show_bug.cgi?id=50080 Fixes: https://github.com/ClangBuiltLinux/linux/issues/679 Fixes: https://github.com/ClangBuiltLinux/linux/issues/1440 Reviewed By: hans Differential Revision: https://reviews.llvm.org/D109103 -
Kirill Stoimenov authored
This should have been the 4 byte version in the first place. Unfortunatelly there is no easy way to add a test as both the 1 byte and 4 byte version are printed as 'jmp' in the assembly code. Reviewed By: kda Differential Revision: https://reviews.llvm.org/D109453
-
Wouter van Oortmerssen authored
It was a FunctionPass before, which subverted its purpose to collect ALL symbols before MCLowering, depending on how LLVM schedules function passes. Fixes https://bugs.llvm.org/show_bug.cgi?id=51555 Differential Revision: https://reviews.llvm.org/D109202
-
Yaxun (Sam) Liu authored
HIP currently diagnose capture of this pointer in device lambda in host member functions. If this pointer points to managed memory, it can be used in both device and host functions. Under this situation, capturing this pointer in device lambda functions in host member functions is valid usage. Change the diagnostic about capturing this pointer to warning. Reviewed by: Artem Belevich Differential Revision: https://reviews.llvm.org/D108493
-
Arthur O'Dwyer authored
Detected by evil-izing the widely used `MoveOnly` testing type. I had to patch some tests that were themselves using its comma operator, but I think that's a worthwhile cost in order to catch more places in our headers that needed comma-proofing. The trick here is that even `++ptr, SomeClass()` can find a comma operator by ADL, if `ptr` is of type `Evil*`. (A comma between two operands of non-class-or-enum type is always treated as the built-in comma, without ADL. But if either operand is class-or-enum, then ADL happens for _both_ operands' types.) Differential Revision: https://reviews.llvm.org/D109414
-
Craig Topper authored
-
Chris Lattner authored
-
Saleem Abdulrasool authored
Precede the `extern template` declaration prior to use. This is helpful as it prevents the compiler from having to worry about instantiating the template as it will be provided for. This is particularly important for Windows where `__declspec(dllexport)` will traverses inheritance clauses resulting in an incorrect application of dll interface to declarations.
-
Jessica Paquette authored
Similar to `DAGCombiner::visitRotate`. This makes `rotl_bitwidth_cst` in postlegalizercombiner-rotate.mir reduce down to a COPY. Modify the checkline to make sure that only rotate_out_of_range runs there. Differential Revision: https://reviews.llvm.org/D109264
-
Craig Topper authored
Identified in D109359
-
Mehdi Amini authored
This is making a tablegen crash into a more friendly error. Differential Revision: https://reviews.llvm.org/D109449
-
Dan Liew authored
Previously the test was failing on platforms where `long` was less than 64-bits wide (e.g. older WatchOS simulators and arm64_32) because the `padding` field was too small. The test currently relies on the `my_object->isa` being scribbled or left unmodified after `my_object` is freed. However, this was not the case because the `isa` pointer intersected with `ChunkHeader::free_context_id`. `free_context_id` starts at the beginning of user memory but it only initialized once the memory is freed. This caused the `isa` pointer to change after it was freed leading to the test crashing. To fix this the `padding` field has been made explicitly 64-bits wide (same size as `ChunkHeader::free_context_id`). rdar://75806757 Differential Revision: https://reviews.llvm.org/D109409
-
Nick Desaulniers authored
Upload a test that shows ISEL taking a SwitchInst that has an unreachable BB for a default target being lowered to an unconditional jump off the end of a function. Link: https://bugs.llvm.org/show_bug.cgi?id=50080 Link: https://github.com/ClangBuiltLinux/linux/issues/679 Link: https://github.com/ClangBuiltLinux/linux/issues/1440 Reviewed By: craig.topper, hans Differential Revision: https://reviews.llvm.org/D109106
-
Craig Topper authored
This is consistent with the RVV intrinsic patterns. This has been shown to prevent some "ran out of registers" errors in our internal testing. Unfortunately, there are some regressions on LMUL=8 tests in here. I think the lack of registers with LMUL=8 just makes it very hard to schedule correctly. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D109245
-
Benjamin Kramer authored
-