diff options
| author | Michael Zolotukhin <mzolotukhin@apple.com> | 2016-09-27 21:03:45 +0000 | 
|---|---|---|
| committer | Michael Zolotukhin <mzolotukhin@apple.com> | 2016-09-27 21:03:45 +0000 | 
| commit | 1a554be3b609959bd0611c5cb3a48c352ba3ebc3 (patch) | |
| tree | e801898b5bdbee320884d6377a81c403c279c833 /llvm/lib/Transforms/Utils | |
| parent | 699fc5b19146214ec483e0e5cb33084b737be26f (diff) | |
| download | bcm5719-llvm-1a554be3b609959bd0611c5cb3a48c352ba3ebc3.tar.gz bcm5719-llvm-1a554be3b609959bd0611c5cb3a48c352ba3ebc3.zip | |
[LoopSimplify] When simplifying phis in loop-simplify, do it only if it preserves LCSSA form.
llvm-svn: 282541
Diffstat (limited to 'llvm/lib/Transforms/Utils')
| -rw-r--r-- | llvm/lib/Transforms/Utils/LoopSimplify.cpp | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/llvm/lib/Transforms/Utils/LoopSimplify.cpp b/llvm/lib/Transforms/Utils/LoopSimplify.cpp index 26b59ad57df..36e2fea63dc 100644 --- a/llvm/lib/Transforms/Utils/LoopSimplify.cpp +++ b/llvm/lib/Transforms/Utils/LoopSimplify.cpp @@ -622,8 +622,10 @@ ReprocessLoop:         (PN = dyn_cast<PHINode>(I++)); )      if (Value *V = SimplifyInstruction(PN, DL, nullptr, DT, AC)) {        if (SE) SE->forgetValue(PN); -      PN->replaceAllUsesWith(V); -      PN->eraseFromParent(); +      if (!PreserveLCSSA || LI->replacementPreservesLCSSAForm(PN, V)) { +        PN->replaceAllUsesWith(V); +        PN->eraseFromParent(); +      }      }    // If this loop has multiple exits and the exits all go to the same | 

