aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/LCSSA.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2023-06-05 17:23:07 +0200
committerNikita Popov <npopov@redhat.com>2023-06-05 17:28:32 +0200
commit3c9cf023db32ba2cfa1e052ddc58f57dd080995c (patch)
tree9a173635dc7e83da9fdd72223311a3cdbefc768c /llvm/lib/Transforms/Utils/LCSSA.cpp
parent26fee2b3cb71bfa2ff5a9decb9caa3d238df5b27 (diff)
downloadllvm-3c9cf023db32ba2cfa1e052ddc58f57dd080995c.zip
llvm-3c9cf023db32ba2cfa1e052ddc58f57dd080995c.tar.gz
llvm-3c9cf023db32ba2cfa1e052ddc58f57dd080995c.tar.bz2
Revert "[LCSSA] Don't invalidate SCEV"
This reverts commit 5cbb9f7a58d98ba432c6ddeefa581f6fc521315c. Causes verifier error reported at https://reviews.llvm.org/D149331#4387931.
Diffstat (limited to 'llvm/lib/Transforms/Utils/LCSSA.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/LCSSA.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/LCSSA.cpp b/llvm/lib/Transforms/Utils/LCSSA.cpp
index 5f1c98c..183e0a4 100644
--- a/llvm/lib/Transforms/Utils/LCSSA.cpp
+++ b/llvm/lib/Transforms/Utils/LCSSA.cpp
@@ -76,7 +76,7 @@ static bool isExitBlock(BasicBlock *BB,
/// rewrite the uses.
bool llvm::formLCSSAForInstructions(SmallVectorImpl<Instruction *> &Worklist,
const DominatorTree &DT, const LoopInfo &LI,
- ScalarEvolution *Se,
+ ScalarEvolution *SE,
SmallVectorImpl<PHINode *> *PHIsToRemove,
SmallVectorImpl<PHINode *> *InsertedPHIs) {
SmallVector<Use *, 16> UsesToRewrite;
@@ -148,6 +148,11 @@ bool llvm::formLCSSAForInstructions(SmallVectorImpl<Instruction *> &Worklist,
SSAUpdater SSAUpdate(&LocalInsertedPHIs);
SSAUpdate.Initialize(I->getType(), I->getName());
+ // Force re-computation of I, as some users now need to use the new PHI
+ // node.
+ if (SE)
+ SE->forgetValue(I);
+
// Insert the LCSSA phi's into all of the exit blocks dominated by the
// value, and add them to the Phi's map.
for (BasicBlock *ExitBB : ExitBlocks) {