- Oct 01, 2020
-
-
Max Kazantsev authored
If we know that some predicate is true for AddRec and an invariant (w.r.t. this AddRec's loop), this fact is, in particular, true on the first iteration. We can try to prove the facts we need using the start value. The motivating example is proving things like ``` isImpliedCondOperands(>=, X, 0, {X,+,-1}, 0} ``` Differential Revision: https://reviews.llvm.org/D88208 Reviewed By: reames -
Sam Parker authored
Try to move the insertion point to become the terminator of the block, usually the preheader. Differential Revision: https://reviews.llvm.org/D88638
-
Kerry McLaughlin authored
Splitting the operand of a scalable [S|U]INT_TO_FP results in a concat_vectors operation where the operands are unpacked FP scalable vectors (e.g. nxv2f32). This patch adds custom lowering of concat_vectors which checks that the number of operands is 2, and isel patterns to match concat_vectors of scalable FP types with uzp1. Reviewed By: efriedma, paulwalker-arm Differential Revision: https://reviews.llvm.org/D88033
-
Paul Walker authored
Iterating across all of integer_scalable_vector_valuetypes seems wasteful when there's only a handful we care about. Also removes some rouge whitespace. Differential Revision: https://reviews.llvm.org/D88552
-
Sam Parker authored
Before deciding to insert a [W|D]LSTP, check that defining LR with the element count won't affect any other instructions that should be taking the iteration count. Differential Revision: https://reviews.llvm.org/D88549
-
Sam Parker authored
If possible, try not to move the start position earlier than it already is. Differential Revision: https://reviews.llvm.org/D88542
-
Stefan Gränitz authored
This solves a phase ordering problem: OrcV2 remote process support depends on OrcV2 removable code, OrcV2 removable code depends on OrcV1 removal, OrcV1 removal depends on LLJITWithChildProcess migration, and LLJITWithChildProcess migration depends on OrcV2 TargetProcessControl support.
-
Stefan Gränitz authored
The ThinLtoJIT example was aiming to utilize ThinLTO summaries and concurrency in ORC for speculative compilation. The latter is heavily dependent on asynchronous task scheduling which is probably done better out-of-tree with a mature library like Boost-ASIO. The pure utilization of ThinLTO summaries in ORC is demonstrated in OrcV2Examples/LLJITWithThinLTOSummaries.
-
Vitaly Buka authored
-
Sam Parker authored
Use a MachineBasicBlock::iterator instead of a MachineInstr* for the position of our LoopStart instruction. NFCish, as it change debug info.
-
Fangrui Song authored
Note, MAI may be nullptr in -show-encoding.
-
Amara Emerson authored
Unfortunately the leaf SDAG patterns aren't supported yet so we need to do this manually, but it's not a significant amount of code anyway. Differential Revision: https://reviews.llvm.org/D87924
-
Andrew Dona-Couch authored
This patch fixes a corruption of the stack pointer and several registers in any AVR interrupt with non-empty stack frame. Previously, the callee-saved registers were popped before restoring the stack pointer, causing the pointer math to use the wrong base value while also corrupting the caller's register. This change fixes the code to restore the stack pointer last before exiting the interrupt service routine. https://bugs.llvm.org/show_bug.cgi?id=47253 Reviewed By: dylanmckay Differential Revision: https://reviews.llvm.org/D87735 Patch by Andrew Dona-Couch.
-
Chris Lattner authored
the policy here so that old SVN users and new contributors do the same thing.
-
Muhammad Omair Javaid authored
This test now passes on AArch64/Linux after following change by Jonas: d689570d
-
Igor Chervatyuk authored
[7/11] patch series to port ASAN for riscv64 Depends On D87575 Reviewed By: eugenis, vitalybuka, luismarques Differential Revision: https://reviews.llvm.org/D87577
-
Max Kazantsev authored
We can query known predicates in different points, respecting their dominating conditions.
-
Michael Liao authored
Revert "[llvm-exegesis] Add option to check the hardware support for a given feature before benchmarking." This reverts commit 4fcd1a8e as `llvm/test/tools/llvm-exegesis/X86/lbr/mov-add.s` failed on hosts without LBR supported if the build has LIBPFM enabled. On that host, `perf_event_open` fails with `EOPNOTSUPP` on LBR config. That change's basic assumption > If this is run on a non-supported hardware, it will produce all zeroes for latency. could not stand as `perf_event_open` system call will fail if the underlying hardware really don't have LBR supported.
-
Fangrui Song authored
The routing rules are: sym -> __wrap_sym __real_sym -> sym __wrap_sym and sym are routing targets, so they need to be exposed to the symbol table. __real_sym is not and can be eliminated if not used by regular object.
-
Craig Topper authored
[APFloat] Improve asserts in isSignificandAllOnes and isSignificandAllZeros so they protect shift operations from undefined behavior. For example, the assert in isSignificandAllZeros allowed NumHighBits to be integerPartWidth. But since it is used directly as a shift amount it must be less than integerPartWidth.
-
Michael Kruse authored
This resolves an issue where the Microsoft compiler 'forgets' symbols when using constexpr in a lambda in a templated function. The symbols are: 1. The implicit lambda captures `context` and `convert`. Fix by making them explicit captures. The error message was: ``` fold-implementation.h(1220): error C2065: 'convert': undeclared identifier ``` 2. The function template argument FROMCAT. Fix by storing it in a temporary constexpr variable inside the function. The error message was: ``` fold-implementation.h(1216): error C2065: 'FROMCAT': undeclared identifier ``` This patch is part of the series to make flang compilable with MS Visual Studio <http://lists.llvm.org/pipermail/flang-dev/2020-July/000448.html>. Reviewed By: klausler Differential Revision: https://reviews.llvm.org/D88504
-
Dan Gohman authored
This adds support for new-style command support. In this mode, all exports are considered command entrypoints, and the linker inserts calls to `__wasm_call_ctors` and `__wasm_call_dtors` for all such entrypoints. This enables support for: - Command entrypoints taking arguments other than strings and return values other than `int`. - Multicall executables without requiring on the use of string-based command-line arguments. This new behavior is disabled when the input has an explicit call to `__wasm_call_ctors`, indicating code not expecting new-style command support. This change does mean that wasm-ld no longer supports DCE-ing the `__wasm_call_ctors` function when there are no calls to it. If there are no calls to it, and there are ctors present, we assume it's wasm-ld's job to insert the calls. This seems ok though, because if there are ctors present, the program is expecting them to be called. This change affects the init-fini-gc.ll test.
-
Michael Kruse authored
Msvc reports the following error when a ReferenceVariantBase is constructed using an r-value reference or instantiated as std::vector template parameter. The error message is: ``` PFTBuilder.h(59,1): error C2665: 'std::variant<...>::variant': none of the 2 overloads could convert all the argument types variant(1248,1): message : could be 'std::variant<...>::variant(std::variant<...> &&) noexcept(false)' variant(1248,1): message : or 'std::variant<...>::variant(const std::variant<...> &) noexcept(false)' PFTBuilder.h(59,1): message : while trying to match the argument list '(common::Reference<lower::pft::ReferenceVariantBase<false,...>>)' ``` Work around the ambiguity by only taking `common::Reference` arguments in the constructor. That is, conversion to common::Reference has to be done be the caller instead of being done inside the ctor. Unfortunately, with this change clang/gcc (but not msvc) insist on that the ReferenceVariantBase is stored in a `std::initializer_list`-initialized variable before being used, like being passed to a function or returned. This patch is part of the series to make flang compilable with MS Visual Studio <http://lists.llvm.org/pipermail/flang-dev/2020-July/000448.html>. Reviewed By: DavidTruby Differential Revision: https://reviews.llvm.org/D88109
-
Amara Emerson authored
-
River Riddle authored
The current implementation uses a fold expression to add all of the operations at once. This is really nice, but apparently the lifetime of each of the AbstractOperation instances is for the entire expression which may lead to a stack overflow for large numbers of operations. This splits the method in two to allow for the lifetime of the AbstractOperation to be properly scoped.
-
peter klausler authored
The estimation of the decimal exponent needs to allow for all 'd' of the requested significant digits. Also accept a plus sign on a "+kP" scaling factor in a format. Differential revision: https://reviews.llvm.org/D88618
-
Geoffrey Martin-Noble authored
Dialects include more than just ops, so this suffix is outdated. Follows discussion in https://llvm.discourse.group/t/rfc-canonical-file-paths-to-dialects/621 Reviewed By: stellaraccident Differential Revision: https://reviews.llvm.org/D88530
-
Sam Clegg authored
In particular allow explict exporting of `__stack_pointer` but exclud this from `--export-all` to avoid requiring the mutable globals feature whenenve `--export-all` is used. This uncovered a bug in populateTargetFeatures regarding checking if the mutable-globals feature is allowed. See: https://github.com/WebAssembly/binaryen/issues/2934 Differential Revision: https://reviews.llvm.org/D88506
-
Amara Emerson authored
-
Arthur Eubanks authored
The legacy pass's default constructor sets UseCommandLine = true and goes down a separate testing route. Match that in the NPM pass. This fixes all tests in llvm/test/Transforms/WholeProgramDevirt under NPM. Reviewed By: ychen Differential Revision: https://reviews.llvm.org/D88588
-
Amara Emerson authored
Also use this opportunity start to clean up the mess of vector type lists we have in the LegalizerInfo. Unfortunately since the legalizer rule builders require std::initializer_list objects as parameters we can't programmatically generate the type lists.
-
peter klausler authored
The '/' control edit descriptor causes a runtime crash for an external formatted sequential READ because the AdvanceRecord() member function for external units implemented only the tasks to finish reading the current record. Split those out into a new FinishReadingRecord() member function, call that instead from EndIoStatement(), and change AdvanceRecord() to both finish reading the current record and to begin reading the next one. Differential revision: https://reviews.llvm.org/D88607
-
Jonas Devlieghere authored
Matt's change to the register allocator in 89baeaef changed where we end up after the `finish`. Before we'd end up on line 4. * thread #1, queue = 'com.apple.main-thread', stop reason = step out Return value: (int) $0 = 1 frame #0: 0x0000000100003f7d a.out`main(argc=1, argv=0x00007ffeefbff630) at main.c:4:3 1 extern int func(); 2 3 int main(int argc, char **argv) { -> 4 func(); // Break here 5 func(); // Second 6 return 0; 7 } Now, we end up on line 5. * thread #1, queue = 'com.apple.main-thread', stop reason = step out Return value: (int) $0 = 1 frame #0: 0x0000000100003f8d a.out`main(argc=1, argv=0x00007ffeefbff630) at main.c:5:3 2 3 int main(int argc, char **argv) { 4 func(); // Break here -> 5 func(); // Second 6 return 0; 7 } Given that this is not expected stable to be stable I've made the test a bit more lenient to accept both scenarios.
-
Jessica Paquette authored
Refactor this so it's similar to the existing integer comparison code. Also add some missing 64-bit testcases to select-fcmp.mir. Refactoring to prep for improving selection for G_FCMP-related conditional branches etc. Differential Revision: https://reviews.llvm.org/D88614
-
Ranjeet Singh authored
This is a follow-up from https://reviews.llvm.org/D61717. Where Richard described the issue with compiling arm_neon.h under -flax-vector-conversions=none. It looks like the example reproducer does actually work but what was missing was a test entry for that target. Differential Revision: https://reviews.llvm.org/D88546
-
Joachim Protze authored
Currently, the parser used to tokenize the TSAN_OPTIONS in libomp uses only spaces as separators, even though TSAN in compiler-rt supports other separators like ':' or ','. CTest uses ':' to separate sanitizer options by default. The documentation for other sanitizers mentions ':' as separator, but TSAN only lists spaces, which is probably where this mismatch originated. Patch provided by upsj Differential Revision: https://reviews.llvm.org/D87144
-
Craig Topper authored
Patch IEEEFloat::isSignificandAllZeros and IEEEFloat::isSignificandAllOnes to behave correctly in the case that the size of the significand is a multiple of the width of the integerParts making up the significand. The patch to IEEEFloat::isSignificandAllOnes fixes bug 34579, and the patch to IEEE:Float:isSignificandAllZeros fixes the unit test "APFloatTest.x87Next" I added here. I have included both in this diff since the changes are very similar. Patch by Andrew Briand
-
Ahsan Saghir authored
This patch adds outer product instructions for MMA, including related infrastructure, and their tests. Depends on D84968. Reviewed By: #powerpc, bsaleil, amyk Differential Revision: https://reviews.llvm.org/D88043
-
Akira Hatanaka authored
rdar://problem/69727650
-
Joachim Protze authored
This patch updates the expected results for the GOMP interface patches: D87267, D87269, and D87271. The taskwait-depend test is changed to really use taskwait-depend and copied to an task_if0-depend test. To pass the tests, the handling of the return address was fixed. Differential Revision: https://reviews.llvm.org/D87680
-