Revert r330403 and r330413.
Revert r330413: "[SSAUpdaterBulk] Use SmallVector instead of DenseMap for storing rewrites."
Revert r330403 "Reapply "[PR16756] Use SSAUpdaterBulk in JumpThreading." one more time."
r330403 commit seems to crash clang during our integrate while doing PGO build with the following stacktrace:
#2 llvm::SSAUpdaterBulk::RewriteAllUses(llvm::DominatorTree*, llvm::SmallVectorImpl<llvm::PHINode*>*)
#3 llvm::JumpThreadingPass::ThreadEdge(llvm::BasicBlock*, llvm::SmallVectorImpl<llvm::BasicBlock*> const&, llvm::BasicBlock*)
#4 llvm::JumpThreadingPass::ProcessThreadableEdges(llvm::Value*, llvm::BasicBlock*, llvm::jumpthreading::ConstantPreference, llvm::Instruction*)
#5 llvm::JumpThreadingPass::ProcessBlock(llvm::BasicBlock*)
The crash happens while compiling 'lib/Analysis/CallGraph.cpp'.
r3340413 is reverted due to conflicting changes.
llvm-svn: 330416
diff --git a/llvm/unittests/Transforms/Utils/SSAUpdaterBulk.cpp b/llvm/unittests/Transforms/Utils/SSAUpdaterBulk.cpp
index 61cbcb7..6a8adf9 100644
--- a/llvm/unittests/Transforms/Utils/SSAUpdaterBulk.cpp
+++ b/llvm/unittests/Transforms/Utils/SSAUpdaterBulk.cpp
@@ -73,17 +73,17 @@
// SSAUpdater should insert into %merge.
// Intentionally don't touch %8 to see that SSAUpdater only changes
// instructions that were explicitly specified.
- unsigned VarNum = Updater.AddVariable("a", I32Ty);
- Updater.AddAvailableValue(VarNum, TrueBB, AddOp1);
- Updater.AddAvailableValue(VarNum, FalseBB, AddOp2);
- Updater.AddUse(VarNum, &I1->getOperandUse(0));
- Updater.AddUse(VarNum, &I2->getOperandUse(0));
+ Updater.AddVariable(0, "a", I32Ty);
+ Updater.AddAvailableValue(0, TrueBB, AddOp1);
+ Updater.AddAvailableValue(0, FalseBB, AddOp2);
+ Updater.AddUse(0, &I1->getOperandUse(0));
+ Updater.AddUse(0, &I2->getOperandUse(0));
- VarNum = Updater.AddVariable("b", I32Ty);
- Updater.AddAvailableValue(VarNum, TrueBB, SubOp1);
- Updater.AddAvailableValue(VarNum, FalseBB, SubOp2);
- Updater.AddUse(VarNum, &I3->getOperandUse(0));
- Updater.AddUse(VarNum, &I3->getOperandUse(1));
+ Updater.AddVariable(1, "b", I32Ty);
+ Updater.AddAvailableValue(1, TrueBB, SubOp1);
+ Updater.AddAvailableValue(1, FalseBB, SubOp2);
+ Updater.AddUse(1, &I3->getOperandUse(0));
+ Updater.AddUse(1, &I3->getOperandUse(1));
DominatorTree DT(*F);
Updater.RewriteAllUses(&DT);
@@ -161,19 +161,19 @@
// No other rewrites should be made.
// Add use in %3.
- unsigned VarNum = Updater.AddVariable("c", I32Ty);
- Updater.AddAvailableValue(VarNum, IfBB, AddOp1);
- Updater.AddUse(VarNum, &I1->getOperandUse(0));
+ Updater.AddVariable(0, "c", I32Ty);
+ Updater.AddAvailableValue(0, IfBB, AddOp1);
+ Updater.AddUse(0, &I1->getOperandUse(0));
// Add use in %4.
- VarNum = Updater.AddVariable("b", I32Ty);
- Updater.AddAvailableValue(VarNum, LoopStartBB, AddOp2);
- Updater.AddUse(VarNum, &I2->getOperandUse(0));
+ Updater.AddVariable(1, "b", I32Ty);
+ Updater.AddAvailableValue(1, LoopStartBB, AddOp2);
+ Updater.AddUse(1, &I2->getOperandUse(0));
// Add use in the return instruction.
- VarNum = Updater.AddVariable("a", I32Ty);
- Updater.AddAvailableValue(VarNum, &F->getEntryBlock(), FirstArg);
- Updater.AddUse(VarNum, &Return->getOperandUse(0));
+ Updater.AddVariable(2, "a", I32Ty);
+ Updater.AddAvailableValue(2, &F->getEntryBlock(), FirstArg);
+ Updater.AddUse(2, &Return->getOperandUse(0));
// Save all inserted phis into a vector.
SmallVector<PHINode *, 8> Inserted;