- Dec 12, 2020
-
-
Michael Kruse authored
Test execution can continue even if previous cases failed.
-
Nikita Popov authored
If we have two unknown sizes and one GEP operand and one non-GEP operand, then we currently simply return MayAlias. The comment says we can't do anything useful ... but we can! We can still check that the underlying objects are different (and do so for the GEP-GEP case). To reduce the compile-time impact, this a) checks this early, before doing the relatively expensive GEP decomposition that will not be used and b) doesn't do the check if the other operand is a phi or select. In that case, the phi/select will already recurse, so this would just do two slightly different recursive walks that arrive at the same roots. Compile-time is still a bit of a mixed bag: https://llvm-compile-time-tracker.com/compare.php?from=624af932a808b363a888139beca49f57313d9a3b&to=845356e14adbe651a553ed11318ddb5e79a24bcd&stat=instructions On average this is a small improvement, but sqlite with ThinLTO has a 0.5% regression (lencod has a 1% improvement). The BasicAA test case checks this by using two memsets with unknown size. However, the more interesting case where this is useful is the LoopVectorize test case, as analysis of accesses in loops tends to always us unknown sizes. Differential Revision: https://reviews.llvm.org/D92401
-
Hiroshi Yamauchi authored
Addressing clang bootstrap under the dynamic linking mode running out of static allocation of value profile nodes, reported in D81682. Differential Revision: https://reviews.llvm.org/D92669
-
Michael Kruse authored
Extract some changes not directly related to tileLoops out of D92974: * Refactor `createLoopSkeleton` out of `createCanonicalLoop`. * Introduce `ComputeIP` parameter to the `createCanonicalLoop` overload inserts instructions to compute the trip count. Specifying the location is necessary to make these instructions appear before the outermost loop of a loop nest that is tiled. * Introduce `Name` parameter to `createCanonicalLoop`. This can help better understanding the origin of values of basic blocks with many loops. The default value is "loop" instead of "for" which could be confused with the "for directive" (aka worksharing-loop) and does not apply to Fortran. * Remove `CanonicalLoopInfo::eraseFromParent` which is currently unused and untested and was added in anticipation to be used by `tileLoops`. `eraseFromParent` has shown to be insufficient when more than a single loop is involved and is replaced by `removeUnusedBlocksFromParent` in D92974. Reviewed By: SouraVX Differential Revision: https://reviews.llvm.org/D93088
-
Louis Dionne authored
TARGET_SONAME_FILE isn't valid on Windows, and TARGET_FILE should achieve the same results. Differential Revision: https://reviews.llvm.org/D92856
-
Louis Dionne authored
This simplifies the implementation, and it appears to be equivalent since make_shared was allocating memory with std::allocator anyway. Differential Revision: https://reviews.llvm.org/D93071
-
Tobias Burnus authored
D73999 / commit 75af9da7 added for LLVM 11 a check that sh_flags and sh_entsize (and sh_type) changes are an error, in line with GNU assembler. However, GNU assembler accepts and GCC generates an abbreviated form: while the first .section contains the flags and entsize, subsequent sections simply contain the name without repeating entsize or flags. Do likewise for better compatibility. See https://bugs.llvm.org/show_bug.cgi?id=48201 Reviewed By: jhenderson, MaskRay Differential Revision: https://reviews.llvm.org/D92052
-
Sam McCall authored
This reverts commit 8a4390dc. (The reland did not have the bugfix, just trying to get more details from the buildbots)
-
Sam McCall authored
This reverts commit de4f5519. More debug output to try to pin down an impossible condition.
-
Nathan James authored
Currently unknown keys when inputting mapping traits have the location set to the Value. Example: ``` YAML:1:14: error: unknown key 'UnknownKey' {UnknownKey: SomeValue} ^~~~~~~~~ ``` This is unhelpful for a user as it draws them to fix the wrong item. Reviewed By: silvas Differential Revision: https://reviews.llvm.org/D93037
-
- Dec 11, 2020
-
-
Jinsong Ji authored
-
Alex Zinenko authored
Introduce support for inlining into affine operations. This uses the generic inline infrastructure and boils down to checking that, if applied, the inlining doesn't violate the affine dimension/symbol value categorization. Given valid IR, only the values that are valid dimensions/symbols thanks to being top-level in their affine scope need special handling. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D92770
-
Nathan James authored
We should be using enumMember as thats defined in LSP, enumConstant is non standard so clients aren't likely to support it Fixes https://github.com/clangd/clangd/issues/622n Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D93113
-
Matt Morehouse authored
Uses the recvmsg wrapper logic in a loop. Reviewed By: stephan.yichao.zhao Differential Revision: https://reviews.llvm.org/D93059
-
Jay Foad authored
Change-Id: I482bbf528255f2eacd3878ddfe7edb9a8f63d5c2
-
Nicolas Vasilache authored
This revision starts an Arm-specific ArmNeon dialect discussed in the [discourse RFC thread](https://llvm.discourse.group/t/rfc-vector-dialects-neon-and-sve/2284). Differential Revision: https://reviews.llvm.org/D92171
-
Adrian Kuegel authored
Differential Revision: https://reviews.llvm.org/D93028
-
Adrian Kuegel authored
Add a lowering for rsqrt from standard dialect to ROCDL. Differential Revision: https://reviews.llvm.org/D93011
-
Alexander Kornienko authored
Follow up to https://reviews.llvm.org/D92994
-
Marco Elver authored
GlobalAlias::getAliasee() may not always point directly to a GlobalVariable. In such cases, try to find the canonical GlobalVariable that the alias refers to. Link: https://github.com/ClangBuiltLinux/linux/issues/1208 Reviewed By: dvyukov, nickdesaulniers Differential Revision: https://reviews.llvm.org/D92846
-
Joe Ellis authored
This function is needed for when it is necessary to split the subvector operand of an llvm.experimental.vector.insert call. Splitting the subvector operand means performing two insertions: one inserting the lower part of the split subvector into the destination vector, and another for inserting the upper part. Through experimenting, it seems quite rare to need split the subvector operand, but this is necessary to avoid assertion errors. Differential Revision: https://reviews.llvm.org/D92760
-
QingShan Zhang authored
-
QingShan Zhang authored
-
Haojian Wu authored
-
David Sherwood authored
-
Haojian Wu authored
Differential Revision: https://reviews.llvm.org/D92298
-
David Green authored
Although this was something that I was hoping we would not have to do, this patch makes t2DoLoopStartTP a terminator in order to keep it at the end of it's block, so not allowing extra MVE instruction between it and the end. With t2DoLoopStartTP's also starting tail predication regions, it also marks them as having side effects. The t2DoLoopStart is still not a terminator, giving it the extra scheduling freedom that can be helpful, but now that we have a TP version they can be treated differently. Differential Revision: https://reviews.llvm.org/D91887
-
Kazushi (Jam) Marukawa authored
Add vgt and vsc intrinsic instructions and regression tests. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D93032
-
LLVM GN Syncbot authored
-
Haojian Wu authored
The patch introduced a cycle dependency: clangAnalysis -> clangFrontend -> clangSema -> clangAnalysis This reverts commit 00ffea77. This reverts commit ea664108.
-
LLVM GN Syncbot authored
-
David Sherwood authored
This is the first in a series of patches that attempts to migrate existing cost instructions to return a new InstructionCost class in place of a simple integer. This new class is intended to be as light-weight and simple as possible, with a full range of arithmetic and comparison operators that largely mirror the same sets of operations on basic types, such as integers. The main advantage to using an InstructionCost is that it can encode a particular cost state in addition to a value. The initial implementation only has two states - Normal and Invalid - but these could be expanded over time if necessary. An invalid state can be used to represent an unknown cost or an instruction that is prohibitively expensive. This patch adds the new class and changes the getInstructionCost interface to return the new class. Other cost functions, such as getUserCost, etc., will be migrated in future patches as I believe this to be less disruptive. One benefit of this new class is that it provides a way to unify many of the magic costs in the codebase where the cost is set to a deliberately high number to prevent optimisations taking place, e.g. vectorization. It also provides a route to represent the extremely high, and unknown, cost of scalarization of scalable vectors, which is not currently supported. Differential Revision: https://reviews.llvm.org/D91174
-
Marek Kurdej authored
[libc++] Remove invalid use of `#if _LIBCPP_STD_VER >= 11`, as `_LIBCPP_STD_VER` can never be less than 11. The relevant part of `__config` is: ``` #ifndef _LIBCPP_STD_VER # if __cplusplus <= 201103L # define _LIBCPP_STD_VER 11 ``` Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D93025
-
Michael Kruse authored
-
Arthur Eubanks authored
This was separated in the past because the cl::opt was in the .cpp file but DevirtSCCRepeatedPass::run() was in the .h file. Now that DevirtSCCRepeatedPass::run() is in the .cpp file, get rid of the tiny maxDevirtIterationsReached(), it's bad for readability.
-
Hsiangkai Wang authored
Differential Revision: https://reviews.llvm.org/D93012
-
Kazu Hirata authored
The declaration was introduced on Aug 2, 2016 in commit c43aa5a5 without a corresponding definition. Note that we do have a definition for MmeorySSA::OptimizeUses::optimizeUses but not for MmeorySSA::optimizeUses.
-
Kazu Hirata authored
-
Michael Kruse authored
MemoryAccess::setNewAccessRelation() in assert-builds checks whether the access relation for a READ has a memory location for every instance of the domain. Otherwise, we would not have value to load from. That check already considered that instances outside the Scop's context do not matter since they are never executed (or would be undefined behavior). In this patch also take instances of the InvalidContext into account, as these can also be assumed to never occur. InvalidContext was introduced to avoid the computational complexity of subtracting restrictions from the AssumedContext. However, this additional check in setNewAccessRelation is only done in assert-builds. The assertion case with an InvalidContext may occur with DeLICM on a conditionally infinite loops, as it is the case in the following code: for (int i = 0; i < n; i+=b) vreg = ...; *Dest = vreg; The loop is infinite when b=0, and [b] -> { : b = 0 } is part of the In... -
Craig Topper authored
The compiler is making no effort to preserve upper elements. To do so would require another source operand tied with the destination and a different intrinsic interface to give control of this source to the programmer. This patch changes the tail policy to agnostic so that the CPU doesn't need to make an effort to preserve them. This is consistent with the RVV intrinsic spec here https://github.com/riscv/rvv-intrinsic-doc/blob/master/rvv-intrinsic-rfc.md#configuration-setting Differential Revision: https://reviews.llvm.org/D93080
-