- Oct 28, 2020
-
-
Lei Zhang authored
This commit changes to use plain values instead of references. We need to copy it anyway. References forbid using temporary values generated from expressions. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D90277
-
Georgii Rymar authored
This teaches obj2yaml to dump valid regular (not thin) archives. This also teaches yaml2obj to recognize archives YAML descriptions, what allows to craft all different kinds of archives (valid and broken ones). Differential revision: https://reviews.llvm.org/D89949
-
Simon Pilgrim authored
Reduces the diff in D90113.
-
Simon Pilgrim authored
Merge prefixes where possible, use 'X86' instead of 'X32' (which we try to only use for gnux32 triple tests).
-
Florian Hahn authored
-
David Zarzycki authored
The removed tests are handled by optimization passes before code gen and therefore are just a distraction when making code gen changes that may (as a side effect) reimplement earlier optimization work as a side effect. Specifically, the following tests where removed: ult_0_v* -> false ult_1_v* -> x == 0 ugt_0_v* -> x != 0 ult_{size-of-element-plus-one}_v* -> true ugt_{size-of-element}_v* -> false ult_{size-of-element}_v* -> x != mask ugt_{size-of-element-minus-one}_v* -> x == mask -
Max Kazantsev authored
This reverts commit e038b60d. This reverts commit a0d84d80. This revert was a mistake. The reason of the failures was "Use uint64_t for branch weights instead of uint32_t" Differential Revision: https://reviews.llvm.org/D87832
-
Sam McCall authored
This gives us slightly nicer syntax (foreach) for idioms currently expressed as a loop, and the option to use range algorithms where it makes sense (e.g. llvm::all_of et al encapsulate the needed flow control in a useful way). It's also a building block for iteration over filtered views (e.g. iterate over all Stmt children, with the right type): for (const Statement &S : filter<Statement>(N.children())) ... I realize the recent direction has been mostly towards strongly-typed node-specific facilities, but I think it's important we have convenient generic facilities too. Differential Revision: https://reviews.llvm.org/D90023
-
Georgii Rymar authored
Our "implicit" sections are handled separately from regular ones. It turns out that the "Offset" key is not handled properly for them. Perhaps we can generalize handling in one place, but before doing that I'd like to add support and test cases for each implicit section. (I need this particular single change to unblock another patch that is already on review, and I guess doing it independently for each section will be cleaner, see below). In this patch I've removed `explicit-dynsym-no-dynstr.yaml` to `dynsym-section.yaml` and added the new test into. In a follow-up we probably might want to merge 2 another existent `dynsymtab-*.yaml` tests into it too. Differential revision: https://reviews.llvm.org/D90224
-
Florian Hahn authored
Instead of getting the defining access we should be able to use getClobberingMemoryAccess to skip non-aliasing MemoryDefs. No additional checks should be needed, because we only remove the starting def if it matches the defining access of the load. All we need to worry about is that there are no (may)alias stores between the starting def and the load and getClobberingMemoryAccess should guarantee that. Partly fixes PR47887. This improves the number of redundant stores removed in some cases (numbers below for MultiSource, SPEC2000, SPEC2006 on X86 with -flto -O3). Same hash: 226 (filtered out) Remaining: 11 Metric: dse.NumRedundantStores Program base patch1 diff test-suite...:: External/Povray/povray.test 1.00 5.00 400.0% test-suite...chmarks/MallocBench/gs/gs.test 1.00 3.00 200.0% test-suite...0/253.perlbmk/253.perlbmk.test 21.00 37.00 76.2% test-suite...0.perlbench/400.perlbench.test 24.00 37.00 54.2% test-suite.../Applications/SPASS/SPASS.test 3.00 4.00 33.3% test-suite...006/453.povray/453.povray.test 15.00 18.00 20.0% test-suite...T2006/445.gobmk/445.gobmk.test 27.00 29.00 7.4% test-suite.../CINT2006/403.gcc/403.gcc.test 136.00 137.00 0.7% test-suite.../CINT2000/176.gcc/176.gcc.test 6.00 6.00 0.0% test-suite.../Benchmarks/Bullet/bullet.test NaN 3.00 nan% test-suite.../Benchmarks/Ptrdist/bc/bc.test NaN 1.00 nan% Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D89647
-
Kazushi (Jam) Marukawa authored
Add VMRG/VSHF/VCP/VEX isntructions. Add regression tests too. Also add new patterns to parse new UImm4 oeprand. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D90292
-
David Zarzycki authored
-
Kazushi (Jam) Marukawa authored
Add VFIA/VFIS/VFIM/VFIAM/VFISM/VFIMA/VFIMS isntructions. Add regression tests too. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D90252
-
Clement Courbet authored
This was fixed in a previous commit, the previous line in the documentation explains how to proceed.
-
Kazushi (Jam) Marukawa authored
-
Kazushi (Jam) Marukawa authored
BRIND and BR_JT are not implmented yet, so expand them atm. Add regression tests too. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D90283
-
Clement Courbet authored
The addition of TILELOADD instructions with a new encoding format triggered a hard abort instead of proper error reporting due to the use of `llvm_unreachable` for actually reachable code. Properly report an error when the encoding format is unknown. Differential Revision: https://reviews.llvm.org/D90289
-
Max Kazantsev authored
When we need to prove implication of expressions of different type width, the default strategy is to widen everything to wider type and prove in this type. This does not interact well with AddRecs with negative steps and unsigned predicates: such AddRec will likely not have a `nuw` flag, and its `zext` to wider type will not be an AddRec. In contraty, `trunc` of an AddRec in some cases can easily be proved to be an `AddRec` too. This patch introduces an alternative way to handling implications of different type widths. If we can prove that wider type values actually fit in the narrow type, we truncate them and prove the implication in narrow type. The return was due to revert of underlying patch that this one depends on. Unit test temporarily disabled because the required logic in SCEV is switched off due to compile time reasons. Differential Revision: https://reviews.llvm.org/D89548
-
David Green authored
vnot (xor -1) should be equivalent to the AArch64 specific AArch64ISD::NOT node, but allow more folding thanks to all the target independent optimizations. Specifically this allows select(icmp ne, x, y) to become "cmeq; bsl y, x" as opposed to needing to convert the predicate with "cmeq; mvn; bsl x, y" Unfortunately there is a regression in a cmtst test, but the code it selected from was already non-canonical, with instcombine preferring to use an eq predicate instead. Plus the more common case of icmp ne is improved. Differential Revision: https://reviews.llvm.org/D90126
-
David Green authored
-
Clement Courbet authored
We don't need an external script to scan all opcodes anymore, just use `-opcode-index=-1`.
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
Looks like the reason they were disabled is the same as for Android and it's fixed by 776a15d8
-
Vitaly Buka authored
-
Luqman Aden authored
The types of SEH aren't x86(-32) vs x64 but rather stack-based exception chaining vs table-based exception handling. x86-32 is the only arch for which Windows uses the former. 32-bit ARM would use what is called Win64SEH today, which is a bit confusing so instead let's just rename it to be a bit more clear. Reviewed By: compnerd, rnk Differential Revision: https://reviews.llvm.org/D90117
-
Max Kazantsev authored
We can sharpen the range of a AddRec if we know that it does not self-wrap and know the symbolic iteration count in the loop. If we can evaluate the value of AddRec on the last iteration and prove that at least one its intermediate value lies between start and end, then no-wrap flag allows us to conclude that all of them also lie between start and end. So the estimate of range can be improved to union of ranges of start and end. Switched off by default, can be turned on by flag. Differential Revision: https://reviews.llvm.org/D89381 Reviewed By: lebedev.ri, nikic
-
Johannes Doerfert authored
CUDA buildbots complained about a redefinition when I landed D89971. This is odd and I fail to understand where in the CUDA headers the other definition is supposed to be. For now, given that CUDA doesn't need the overload (AFAIKT), we simply restrict it to the OpenMP mode.
-
Kazu Hirata authored
I just removed thread-prob-{1,2}.ll in b2f05fae, so I am removing thread-prob-3.ll to thread-prob-1.ll. -
Kazu Hirata authored
This patch removes extraneous calls to setEdgeProbability introduced in c9148776. The follow-up patch, a7b662d0, has since fixed BranchProbabilityInfo::eraseBlock, so we don't need to worry about getting stale values from getEdgeProbability. Also, since getEdgeProbability(BB, BB->getSingleSuccessor()) returns edge probability 1/1 by default for BB with exactly one successor edge, we don't need to explicitly call setEdgeProbability. This patch introduces almost no functional change, but we do end up reducing debug messages from setEdgeProbability. Differential Revision: https://reviews.llvm.org/D90284
-
Mitch Phillips authored
This reverts commit 5b3bf8b4. This caused a regression in the ASan buildbot. See comments at https://reviews.llvm.org/D89817 for more information.
-
Mitch Phillips authored
This reverts commit a6336eab. This commit broke check-llvm under ASan: See http://lab.llvm.org:8011/#/builders/5/builds/446 for more details.
-
Alok Kumar Sharma authored
For any newly added parse function, clang-tidy complains. New parse functions are implicitly defined by a macro "Parse##CLASS(N, IsDistinct)". Now this macro and exising function definitions are corrected (lower case first character). Some other variable/function names are also corrected to comply LLVM coding style. Reviewed By: djtodoro Differential Revision: https://reviews.llvm.org/D90243
-
Carl Ritson authored
SIPreAllocateWWMRegs was being inserted after RegisterCoalescer but this pass does not exist during FastAlloc so pre-allocation pass was never being run. Insert pre-allocation after TwoAddressInstructionPass instead. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D90236
-
Johannes Doerfert authored
This matches the new PM model.
-
Johannes Doerfert authored
This will simplify debugging and tracking down problems.
-
Johannes Doerfert authored
-
Johannes Doerfert authored
Before we used to only mark unreachable static functions as dead if all uses were known dead. Now we optimistically assume uses to be dead until proven otherwise.
-
Johannes Doerfert authored
If we are looking at a call site argument it might be a load or call which is in a different context than the call site argument. We cannot simply use the call site argument range for the call or load. Bug reported and reduced by Whitney Tsang <whitneyt@ca.ibm.com>.
-