This project is mirrored from https://github.com/llvm/llvm-project.git.
Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer or owner.
Last successful update .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer or owner.
Last successful update .
- Dec 07, 2021
-
-
Eugene Zhulenev authored
Do load and store to verify that we process each element of the iteration space once. Reviewed By: cota Differential Revision: https://reviews.llvm.org/D115152
-
David Blaikie authored
-
Michael Kruse authored
Do not explicitly store the BasicBlocks for Preheader, Body and After inside CanonicalLoopInfo, but look the up when needed using their position relative to the other loop control blocks. By definition, instructions inside these are not managed by CanonicalLoopInfo (except terminator for Preheader) hence it makes sense to think of them as connections to the CanonicalLoopInfo instead of part of the CanonicalLoopInfo itself. In particular for Preheader, it makes using SplitBasicBlock easier since inserting control flow at an InsertPoint may otherwise require updating the CanonicalLoopInfo's Preheader because the branch that jumps to the header is moved to another BasicBlock. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D114368
-
Rob Suderman authored
math.ctpop maths to the llvm.ctpop intrinsic. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D114998
-
Arnold Schwaighofer authored
Infinite loops can lead to an IR representation where the lifetime.end intrinsice is missing. The code to do lifetime based optimization then fails to see that an address escapes (is life) accross a supspend. Eventually, we could detect such situations and disable it under more narrow circumstances. For now, do the correct thing. rdar://83635953 Differential Revision: https://reviews.llvm.org/D110949
-
Simon Pilgrim authored
v32i16 rotation lowering is only lowered on non-BWI targets.
-
Balázs Kéri authored
Declaration context of template parameters of a FunctionTemplateDecl may be different for each one parameter if the template is a deduction guide. This case is handled correctly after this change. Reviewed By: martong Differential Revision: https://reviews.llvm.org/D114418
-
Nick Desaulniers authored
This diagnostic is really to highlight lack of support for hard thread pointers in post-RA instruction scheduling for non-armv6k+ targets; something that isn't run for assembler sources. Fixes: https://github.com/ClangBuiltLinux/linux/issues/1502 Link: https://lore.kernel.org/all/814585495.6773.1636629846970@jenkins.jenkins/ Reviewed By: ardb Differential Revision: https://reviews.llvm.org/D114124
-
Nico Weber authored
This reverts commit f0cda715. 4a16fe13 got reverted in f45c9c56.
-
Noah Shutty authored
This reverts commit 4a16fe13 because it caused failures on Windows builds.
-
Aaron Ballman authored
-
Arnold Schwaighofer authored
It does not handle loops correctly i.e it moves the lifetime.start intrinsic into a loop rendering the stack object as not alive for part of the loop. ``` entry: %obj = alloca i8 lifetime.start(%obj) br loop loop: coro.suspend() escape(%obj) cond_br %cond, label %exit, label loop br loop exit: lifetime.end(%obj ``` After sinking: ``` entry: %obj = alloca i8 br loop loop: coro.suspend() lifetime.start(%obj) escape(%obj) cond_br %cond, label %exit, label loop br loop exit: lifetime.end(%obj ``` rdar://83411917 Differential Revision: https://reviews.llvm.org/D110953
-
Aaron Ballman authored
The test is the same whether it's testing _BitInt or _ExtInt, so use the type which is not deprecated.
-
Louis Dionne authored
I assume nobody ever uses std::string_view::max_size() outside of testing. However, we should still return a value that is based on something with a reasonable rationale. Previously, we would forget to take into account the size of the character type stored in the string, and this patch takes that into account. Thanks to @mclow.lists for pointing out this issue. Differential Revision: https://reviews.llvm.org/D114395
-
Alexey Bataev authored
Need to add an extra check for potential undef values in computeExtractCost function to avoid compiler crash on casting to instructon. Differential Revision: https://reviews.llvm.org/D115162
-
Louis Dionne authored
-
Florian Hahn authored
ILV::scalarizeInstruction still uses the original IR operands to check if an input value is uniform after vectorization. There is no need to go back to the cost model to figure that out, as the information is already explicit in the VPlan. Just check directly whether the VPValue is defined outside the plan or is a uniform VPReplicateRecipe. Reviewed By: Ayal Differential Revision: https://reviews.llvm.org/D114253
-
Aaron Ballman authored
It looks like some renames got missed.
-
Nico Weber authored
-
Aaron Ballman authored
-
Jonas Paulsson authored
Memset with a constant length was implemented with a single store followed by a series of MVC:s. This patch changes this so that one store of the byte is emitted for each MVC, which avoids data dependencies between the MVCs. An MVI/STC + MVC(len-1) is done for each block. In addition, memset with a variable length is now also handled without a libcall. Since the byte is first stored and then MVC is used from that address, a length of two must now be subtracted instead of one for the loop and EXRL. This requires an extra check for the one-byte case, which is handled in a special block with just a single MVI/STC (like GCC). Review: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D112004
-
Martin Probst authored
ES2021 allows numeric literals using `_` as a separator. This already works, but had no test. Differential Revision: https://reviews.llvm.org/D115147
-
Noah Shutty authored
This adds a Debuginfod client library which queries servers specified by the `DEBUGINFOD_URLS` environment variable for the debuginfo, executable, or a specified source file associated with a given build id. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D112758
-
Aaron Ballman authored
WG14 adopted the _ExtInt feature from Clang for C23, but renamed the type to be _BitInt. This patch does the vast majority of the work to rename _ExtInt to _BitInt, which accounts for most of its size. The new type is exposed in older C modes and all C++ modes as a conforming extension. However, there are functional changes worth calling out: * Deprecates _ExtInt with a fix-it to help users migrate to _BitInt. * Updates the mangling for the type. * Updates the documentation and adds a release note to warn users what is going on. * Adds new diagnostics for use of _BitInt to call out when it's used as a Clang extension or as a pre-C23 compatibility concern. * Adds new tests for the new diagnostic behaviors. I want to call out the ABI break specifically. We do not believe that this break will cause a significant imposition for early adopters of the feature, and so this is being done as a full break. If it turns out there are critical uses where recompilation is not an option for some reason, we can consider using ABI tags to ease the transition.
-
Balazs Benics authored
Previously, the `SValBuilder` could not encounter expressions of the following kind: NonLoc OP Loc Loc OP NonLoc Where the `Op` is other than `BO_Add`. As of now, due to the smarter simplification and the fixedpoint iteration, it turns out we can. It can happen if the `Loc` was perfectly constrained to a concrete value (`nonloc::ConcreteInt`), thus the simplifier can do constant-folding in these cases as well. Unfortunately, this could cause assertion failures, since we assumed that the operator must be `BO_Add`, causing a crash. --- In the patch, I decided to preserve the original behavior (aka. swap the operands (if the operator is commutative), but if the `RHS` was a `loc::ConcreteInt` call `evalBinOpNN()`. I think this interpretation of the arithmetic expression is closer to reality. I also tried naively introducing a separate handler for `loc::ConcreteInt` RHS, before doing handling the more generic `Loc` RHS case. However, it broke the `zoo1backwards()` test in the `nullptr.cpp` file. This highlighted for me the importance to preserve the original behavior for the `BO_Add` at least. PS: Sorry for introducing yet another branch into this `evalBinOpXX` madness. I've got a couple of ideas about refactoring these. We'll see if I can get to it. The test file demonstrates the issue and makes sure nothing similar happens. The `no-crash` annotated lines show, where we crashed before applying this patch. Reviewed By: martong Differential Revision: https://reviews.llvm.org/D115149
-
James Farrell authored
Revert "Use VersionTuple for parsing versions in Triple, fixing issues that caused the original change to be reverted. This makes it possible to distinguish between "16" and "16.0" after parsing, which previously was not possible." This reverts commit 50324670.
-
Jonas Devlieghere authored
Revert "[clang][DebugInfo] Allow function-local statics and types to be scoped within a lexical block" This reverts commit e403f4fd because it breaks TestSetData.py on GreenDragon: https://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/39089/
-
Craig Topper authored
The immediate size check on StepNumerator did not take into account that vmul.vi does not exist. It also did not account for power of 2 constants that can be done with vshl.vi. This patch fixes this by moving the conversion from mul to shift further up. Then we can consider the immediates separately for MUL vs SHL. For MUL I've allowed simm12 which requires a single addi before a vmul.vx. For SHL I've allowed any uimm5 which works with vshl.vi. We could relax these further in the future. This is a starting point that allows us to emit the same number of instructions we were already using for smaller numerators. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D115081
-
Joseph Huber authored
Reduction functions were guarded before which was wrong, these are SPMD compatible. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D115159
-
Joseph Huber authored
Before SPMDzation it was sufficient to add an incompatible instruction to the SPMDCompatibilityTracker. However, now adding instructions means they need guarding. As calls cannot be guarded in general we need to explicitly prevent SPMD mode. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D115158
-
Evgeny Mandrikov authored
Without this patch when using CMAKE_CXX_STANDARD=20 and MSVC 19.30.30705.0 compilation of unit tests fails with llvm\utils\unittest\googlemock\include\gmock/gmock-actions.h(828): error C2039: 'result_of': is not a member of 'std' Patch is taken from Google Test: https://github.com/google/googletest/commit/61f010d703b32de9bfb20ab90ece38ab2f25977f Do not use std::result_of as it was removed in C++20. Differential Revision: https://reviews.llvm.org/D115163
-
LLVM GN Syncbot authored
-
spupyrev authored
A new basic block ordering improving existing MachineBlockPlacement. The algorithm tries to find a layout of nodes (basic blocks) of a given CFG optimizing jump locality and thus processor I-cache utilization. This is achieved via increasing the number of fall-through jumps and co-locating frequently executed nodes together. The name follows the underlying optimization problem, Extended-TSP, which is a generalization of classical (maximum) Traveling Salesmen Problem. The algorithm is a greedy heuristic that works with chains (ordered lists) of basic blocks. Initially all chains are isolated basic blocks. On every iteration, we pick a pair of chains whose merging yields the biggest increase in the ExtTSP value, which models how i-cache "friendly" a specific chain is. A pair of chains giving the maximum gain is merged into a new chain. The procedure stops when there is only one chain left, or when merging does not increase ExtTSP. In the latter case, the remaining chains are sorted by density in decreasing order. An important aspect is the way two chains are merged. Unlike earlier algorithms (e.g., based on the approach of Pettis-Hansen), two chains, X and Y, are first split into three, X1, X2, and Y. Then we consider all possible ways of gluing the three chains (e.g., X1YX2, X1X2Y, X2X1Y, X2YX1, YX1X2, YX2X1) and choose the one producing the largest score. This improves the quality of the final result (the search space is larger) while keeping the implementation sufficiently fast. Differential Revision: https://reviews.llvm.org/D113424
-
Jon Chesterfield authored
Reverts D114965 as the compiler backend appears to be working again Reviewed By: jhuber6 Differential Revision: https://reviews.llvm.org/D115157
-
Peter Waller authored
f526c600 had a concern raised because of an invalid typesize request on a scalable vector, which this patch addresses. Prevent shouldReduceLoadWidth from attempting to query the bit size, and add a regression test in sve-extract-fixed-vector.ll. Differential Revision: https://reviews.llvm.org/D115156
-
Kazu Hirata authored
-
Jon Chesterfield authored
Analogous to the controls on building device runtimes Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D115148
-
Jon Chesterfield authored
Minor fix to the lit.cfg. Currently, nvptx runs the tests twice on the new runtime. Soon, amdgpu will run them on the new runtime as well as the old. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D115150
-
Bardia Mahjour authored
Added TTI queries for the cost of a VP Memory operation, and added Opcode, DataType and Alignment to the hasActiveVectorLength() interface. Reviewed By: Roland Froese Differential Revision: https://reviews.llvm.org/D109416
-
Arthur O'Dwyer authored
Clang trunk rejects the new test case, but this is a Clang bug (PR47414, 47509, 50864, 44833). ``` In module 'std' imported from /Users/aodwyer/llvm-project/libcxx/test/std/ranges/range.adaptors/range.transform/general.pass.cpp:17: /Users/aodwyer/llvm-project/build2/include/c++/v1/__ranges/transform_view.h:85:44: error: constraints not satisfied for alias template 'range_reference_t' [with _Rp = const NonConstView] regular_invocable<const _Fn&, range_reference_t<const _View>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/aodwyer/llvm-project/build2/include/c++/v1/__ranges/transform_view.h:416:25: note: in instantiation of template class 'std::ranges::transform_view<NonConstView, (lambda at /Users/aodwyer/llvm-project/libcxx/test/std/ranges/range.adaptors/range.transform/general.pass.cpp:73:71)>' requested here -> decltype( transform_view(_VSTD::forward<_Range>(__range), _VSTD::forward<_Fn>(__f))) ^ ``` We can work around this by adding a layer of indirection: put the problematic constraint into a named concept and Clang becomes more amenable to SFINAE'ing instead of hard-erroring. Drive-by simplify `range.transform/general.pass.cpp` to make it clearer what it's actually testing in this area. Differential Revision: https://reviews.llvm.org/D115116
-