- May 28, 2019
-
-
Craig Topper authored
Summary: This reuses the getArithmeticInstrCost, but passes dummy values of the second operand flags. The X86 costs are wrong and can be improved in a follow up. I just wanted to stop it from reporting an unknown cost first. Reviewers: RKSimon, spatel, andrew.w.kaylor, cameron.mcinally Reviewed By: spatel Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62444 llvm-svn: 361788
-
Nico Weber authored
llvm-svn: 361786
-
Sanjay Patel authored
From the LangRef: "the backend should never split or merge target-legal volatile load/store instructions." See also: D62498 llvm-svn: 361785
-
Nico Weber authored
llvm-svn: 361783
-
- May 27, 2019
-
-
Lang Hames authored
Fixes https://llvm.org/PR42036 llvm-svn: 361782
-
Matt Arsenault authored
Setting mayLiveOut based only on use instructions after allocating the def block did not work if the use block was allocated before the def block, since the virtual register uses were already removed. Fixes bug 41973. llvm-svn: 361781
-
Sanjay Patel authored
This is derived from the related fold for build vectors. We also have a version of this in DAGCombiner. The benefit of having this fold at node creation time is (1) efficiency and (2) preventing infinite looping from creating patterns that should not exist in the first place. Currently, the inf-loop could happen with MergeConsecutiveStores() because it naively creates concat of extracts when forming a wider vector store. That could fight with target-specific store narrowing. llvm-svn: 361780
-
Sanjay Patel authored
There's a possible missing fold here for extracting from the same source vector. It's similar to a check that we use to squash a build vector with all extracted elements from the same source vector. llvm-svn: 361778
-
Michael Liao authored
Summary: - The current implementation simplifies the case where the source of `copyto` is `implicit-def`ed. However, it only works when that `implicit-def` is single-used since it detects that from `implicit-def` and cannot determine which destination vreg should be used if there are multiple uses. - This patch changes that detection when `copyto` is being emitted. If that `copyto`'s source is defined from `implicit-def`, it simplifies it. Hence, it works even that `implicit-def` is multi-used. - Except it simplifies the internal IR, it won't improve the quality of code generation. However, it helps to detect 'implicit-def` in a straight-forward manner in some passes, such as `si-i1-copies`. A test case is added. Reviewers: sunfish, nhaehnle Subscribers: jvesely, hiraditya, asbirlea, llvm-commits, yaxunl Tags: #llvm Differential Revision: https://reviews.llvm.org/D62342 llvm-svn: 361777
-
Alexander Timofeev authored
llvm-svn: 361776
-
Jacques Pienaar authored
Summary: Change usage of 'DenseSet' to 'DenseSetImpl' in a friend declaration within DenseSetImpl::ConstIterator. 'ConstIterator' was never updated when DenseSet was split into an impl when adding support for DenseSetImpl. This fixes build errors on MSVC when forward declaring DenseSet as this friend decl does not declare the template arguments as well. Reviewers: jpienaar Reviewed By: jpienaar Subscribers: jpienaar, lebedev.ri, dexonsmith, kristina, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62467 llvm-svn: 361775
-
Dmitri Gribenko authored
AArch64AsmBackend.cpp was not using any APIs from AArch64.h, and was only including it for transitive dependencies. Doing so is problematic from include-what-you-use perspective, but it is also a layering issue (it creates a dependency cycle between the primary AArch64 target library and the MCTargetDesc library). llvm-svn: 361774
-
Simon Pilgrim authored
The DemandedElts variable is pretty much inert at the moment - the original GetDemandedBits implementation calls it with an 'all ones' DemandedElts value so the function is active and behaves exactly as it used to. llvm-svn: 361773
-
Simon Pilgrim authored
Fixes a large number of warnings in the scan-build report on llvm builds. llvm-svn: 361772
-
Alexander Timofeev authored
1a8b2ea611cf4ca7cb09562e0238cfefa27c05b5 Divergence driven ISel. Assign register class for cross block values according to the divergence. llvm-svn: 361770
-
Dmitry Preobrazhensky authored
See bug 40820: https://bugs.llvm.org/show_bug.cgi?id=40820 Reviewers: artem.tamazov, arsenm Differential Revision: https://reviews.llvm.org/D61017 llvm-svn: 361763
-
Xing Xue authored
Summary: for.outer: br for.inner for.inner: LI <loop invariant load instruction> for.inner.latch: br for.inner, for.outer.latch for.outer.latch: br for.outer, for.outer.exit LI is a loop invariant load instruction that post dominate for.outer, so LI should be able to move out of the loop nest. However, there is a bug in allLoopPathsLeadToBlock(). Current algorithm of allLoopPathsLeadToBlock() 1. get all the transitive predecessors of the basic block LI belongs to (for.inner) ==> for.outer, for.inner.latch 2. if any successors of any of the predecessors are not for.inner or for.inner's predecessors, then return false 3. return true Although for.inner.latch is for.inner's predecessor, but for.inner dominates for.inner.latch, which means if for.inner.latch is ever executed, for.inner should be as well. It should not return false for cases like this. Author: Whitney (committed by xingxue) Reviewers: kbarton, jdoerfert, Meinersbur, hfinkel, fhahn Reviewed By: jdoerfert Subscribers: hiraditya, jsji, llvm-commits, etiotto, bmahjour Tags: #LLVM Differential Revision: https://reviews.llvm.org/D62418 llvm-svn: 361762
-
Nikola Prica authored
Add blank line. llvm-svn: 361761
-
Diana Picus authored
It turns out we support big endian now (probably since r332449, but I haven't bisected to confirm). llvm-svn: 361756
-
Diana Picus authored
We never actually use the Offsets produced by ComputeValueVTs, so remove them until we need them. llvm-svn: 361755
-
Hans Wennborg authored
The current code iterates over the combination of LLVM_EXTERNAL_PROJECTS and LLVM_ENABLE_PROJECTS, but then disables projects that are only in the former. If a project is in LLVM_EXTERNAL_PROJECTS, it should be enabled. See also llvm-commits thread on r354060. Differential revision: https://reviews.llvm.org/D62289 llvm-svn: 361751
-
Serge Guelton authored
This is a follow-up to https://reviews.llvm.org/D60411, but for llvm-as. New output: OVERVIEW: llvm .ll -> .bc assembler USAGE: llvm-as [options] <input .llvm file> OPTIONS: Generic Options: -help - Display available options (-help-hidden for more) -help-list - Display list of available options (-help-list-hidden for more) -version - Display the version of this program llvm-as Options: -data-layout=<layout-string> - data layout string to use -disable-output - Disable output -f - Enable binary output on terminals -module-hash - Emit module hash -o=<filename> - Override output filename Differential Revision: https://reviews.llvm.org/D60603 llvm-svn: 361750
-
Djordje Todorovic authored
This is my test commit. (NFC) llvm-svn: 361748
-
David L. Jones authored
This is problematic on buildbots, as discussed here: https://reviews.llvm.org/rL361356 It seems like the plan already was to revert, but that hasn't happened yet. llvm-svn: 361746
-
Craig Topper authored
llvm-svn: 361745
-
Nico Weber authored
Demangler::parse() for MD5 names would: 1. Put all remaining text into the MD5 name sight unseen 2. Not modify MangledName This meant that if the demangler recursively called parse() (e.g. in demangleLocallyScopedNamePiece()), every recursive call that started on an MD5 name would add all remaining bytes to the output buffer but only advance the input by a byte. For valid inputs, MD5 types are never (well, see comments for 2 exceptions) nested, but for invalid input this could cause memory use quadratic in the input size. llvm-svn: 361744
-
Florian Hahn authored
The code to preserve LCSSA PHIs currently only properly supports reduction PHIs and PHIs for values defined outside the latches. This patch improves the LCSSA PHI handling to cover PHIs for values defined in the latches. Fixes PR41725. Reviewers: efriedma, mcrosier, davide, jdoerfert Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D61576 llvm-svn: 361743
-
- May 26, 2019
-
-
Yonghong Song authored
The variables in BTF DataSec type encode in-section offset. R_BPF_NONE should be generated instead of R_BPF_64_32. Signed-off-by:
Yonghong Song <yhs@fb.com> Differential Revision: https://reviews.llvm.org/D62460 llvm-svn: 361742
-
Alexander Timofeev authored
[AMDGPU] Divergence driven ISel. Assign register class for cross block values according to the divergence. Details: To make instruction selection really divergence driven it is necessary to assign the correct register classes to the cross block values beforehand. For the divergent targets same value type requires different register classes dependent on the value divergence. Reviewers: rampitec, nhaehnle Differential Revision: https://reviews.llvm.org/D59990 This commit was reverted because of the build failure. The reason was mlformed patch. Build failure fixed. llvm-svn: 361741
-
Andrea Di Biagio authored
This fixes a problem where back-pressure increases caused by register dependencies were not correctly notified if execution was also delayed by memory dependencies. llvm-svn: 361740
-
Simon Pilgrim authored
Prep work before adding demanded elts support. llvm-svn: 361739
-
Simon Pilgrim authored
Will be used in an upcoming patch but I've updated the original implementation to call this to ensure test coverage. llvm-svn: 361738
-
Andrea Di Biagio authored
CriticalRegDep has been renamed CriticalDependency, and it is now used by class Instruction to store information about the critical register dependency and the critical memory dependency. No functional change intendend. llvm-svn: 361737
-
Shawn Landden authored
They caused the sanitizer builds to fail. My suspicion is the change the countLeadingZeros(). llvm-svn: 361736
-
Simon Pilgrim authored
Reuses what we already have in place for ISD::ZERO_EXTEND_VECTOR_INREG just with a different sentinel llvm-svn: 361734
-
Shawn Landden authored
The old test was checking for a stupid subtract one that is a transform that makes the code woorse. The constant-islands-jump-table.ll test wants the code a specific way, that makes sense, so I will submit code to fix that one. Sorry that I really didn't know how to run the test suite before this. llvm-svn: 361733
-
Simon Pilgrim authored
These 3 variables cause quite a few warnings in the scan-build report on llvm. ........ Revert accidental commit. llvm-svn: 361732
-
Simon Pilgrim authored
These 3 variables cause quite a few warnings in the scan-build report on llvm. llvm-svn: 361731
-
Shawn Landden authored
No problems with the transforms. llvm-svn: 361730
-
Sanjay Patel authored
This was found/reduced from a fuzzer report: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14956 llvm-svn: 361729
-