diff options
author | Hans Wennborg <hans@hanshq.net> | 2017-09-15 18:40:26 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2017-09-15 18:40:26 +0000 |
commit | 534bfbd3ba82b4fe742563667f933f4e0a8ac9f0 (patch) | |
tree | 61c4d15a8b4f53d736e97caea905aee212686927 /llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | |
parent | ea857d4cb8922b046e1acadce494a2c6c9108cb4 (diff) | |
download | bcm5719-llvm-534bfbd3ba82b4fe742563667f933f4e0a8ac9f0.tar.gz bcm5719-llvm-534bfbd3ba82b4fe742563667f933f4e0a8ac9f0.zip |
Revert r313343 "[X86] PR32755 : Improvement in CodeGen instruction selection for LEAs."
This caused PR34629: asserts firing when building Chromium. It also broke some
buildbots building test-suite as reported on the commit thread.
> Summary:
> 1/ Operand folding during complex pattern matching for LEAs has been
> extended, such that it promotes Scale to accommodate similar operand
> appearing in the DAG.
> e.g.
> T1 = A + B
> T2 = T1 + 10
> T3 = T2 + A
> For above DAG rooted at T3, X86AddressMode will no look like
> Base = B , Index = A , Scale = 2 , Disp = 10
>
> 2/ During OptimizeLEAPass down the pipeline factorization is now performed over LEAs
> so that if there is an opportunity then complex LEAs (having 3 operands)
> could be factored out.
> e.g.
> leal 1(%rax,%rcx,1), %rdx
> leal 1(%rax,%rcx,2), %rcx
> will be factored as following
> leal 1(%rax,%rcx,1), %rdx
> leal (%rdx,%rcx) , %edx
>
> 3/ Aggressive operand folding for AM based selection for LEAs is sensitive to loops,
> thus avoiding creation of any complex LEAs within a loop.
>
> Reviewers: lsaba, RKSimon, craig.topper, qcolombet
>
> Reviewed By: lsaba
>
> Subscribers: spatel, igorb, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D35014
llvm-svn: 313376
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 11 |
1 files changed, 0 insertions, 11 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index aa4b88808f3..48dc09339a6 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -26,7 +26,6 @@ #include "llvm/Analysis/AliasAnalysis.h" #include "llvm/Analysis/BranchProbabilityInfo.h" #include "llvm/Analysis/CFG.h" -#include "llvm/Analysis/LoopInfo.h" #include "llvm/Analysis/OptimizationDiagnosticInfo.h" #include "llvm/Analysis/TargetLibraryInfo.h" #include "llvm/CodeGen/FastISel.h" @@ -326,8 +325,6 @@ void SelectionDAGISel::getAnalysisUsage(AnalysisUsage &AU) const { if (OptLevel != CodeGenOpt::None) AU.addRequired<AAResultsWrapperPass>(); AU.addRequired<GCModuleInfo>(); - if (OptLevel != CodeGenOpt::None) - AU.addRequired<LoopInfoWrapperPass>(); AU.addRequired<StackProtector>(); AU.addPreserved<StackProtector>(); AU.addPreserved<GCModuleInfo>(); @@ -1422,7 +1419,6 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) { // Iterate over all basic blocks in the function. for (const BasicBlock *LLVMBB : RPOT) { - CurDAG->IsDAGPartOfLoop = false; if (OptLevel != CodeGenOpt::None) { bool AllPredsVisited = true; for (const_pred_iterator PI = pred_begin(LLVMBB), PE = pred_end(LLVMBB); @@ -1600,13 +1596,6 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) { FunctionBasedInstrumentation); } - if (OptLevel != CodeGenOpt::None) { - auto &LIWP = getAnalysis<LoopInfoWrapperPass>(); - LoopInfo &LI = LIWP.getLoopInfo(); - if (LI.getLoopFor(LLVMBB)) - CurDAG->IsDAGPartOfLoop = true; - } - if (Begin != BI) ++NumDAGBlocks; else |