summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Transforms
diff options
context:
space:
mode:
authorMichael Zolotukhin <mzolotukhin@apple.com>2018-04-20 13:34:32 +0000
committerMichael Zolotukhin <mzolotukhin@apple.com>2018-04-20 13:34:32 +0000
commita2c9af02097b085baab54291a18d23f2201e050e (patch)
tree04a0bb83deef1841b749dce06ec747dc89591795 /llvm/unittests/Transforms
parent06039e8fc1cb641d2dbed00b30d00751310c5272 (diff)
downloadbcm5719-llvm-a2c9af02097b085baab54291a18d23f2201e050e.tar.gz
bcm5719-llvm-a2c9af02097b085baab54291a18d23f2201e050e.zip
Revert "Revert r330403 and r330413."
Reapply the patches with a fix. Thanks Ilya and Hans for the reproducer! This reverts commit r330416. The issue was that removing predecessors invalidated uses that we stored for rewrite. The fix is to finish manipulating with CFG before we select uses for rewrite. llvm-svn: 330431
Diffstat (limited to 'llvm/unittests/Transforms')
-rw-r--r--llvm/unittests/Transforms/Utils/SSAUpdaterBulk.cpp40
1 files changed, 20 insertions, 20 deletions
diff --git a/llvm/unittests/Transforms/Utils/SSAUpdaterBulk.cpp b/llvm/unittests/Transforms/Utils/SSAUpdaterBulk.cpp
index 6a8adf9ef37..61cbcb7b1a7 100644
--- a/llvm/unittests/Transforms/Utils/SSAUpdaterBulk.cpp
+++ b/llvm/unittests/Transforms/Utils/SSAUpdaterBulk.cpp
@@ -73,17 +73,17 @@ TEST(SSAUpdaterBulk, SimpleMerge) {
// SSAUpdater should insert into %merge.
// Intentionally don't touch %8 to see that SSAUpdater only changes
// instructions that were explicitly specified.
- 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));
-
- 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));
+ 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));
+
+ 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));
DominatorTree DT(*F);
Updater.RewriteAllUses(&DT);
@@ -161,19 +161,19 @@ TEST(SSAUpdaterBulk, Irreducible) {
// No other rewrites should be made.
// Add use in %3.
- Updater.AddVariable(0, "c", I32Ty);
- Updater.AddAvailableValue(0, IfBB, AddOp1);
- Updater.AddUse(0, &I1->getOperandUse(0));
+ unsigned VarNum = Updater.AddVariable("c", I32Ty);
+ Updater.AddAvailableValue(VarNum, IfBB, AddOp1);
+ Updater.AddUse(VarNum, &I1->getOperandUse(0));
// Add use in %4.
- Updater.AddVariable(1, "b", I32Ty);
- Updater.AddAvailableValue(1, LoopStartBB, AddOp2);
- Updater.AddUse(1, &I2->getOperandUse(0));
+ VarNum = Updater.AddVariable("b", I32Ty);
+ Updater.AddAvailableValue(VarNum, LoopStartBB, AddOp2);
+ Updater.AddUse(VarNum, &I2->getOperandUse(0));
// Add use in the return instruction.
- Updater.AddVariable(2, "a", I32Ty);
- Updater.AddAvailableValue(2, &F->getEntryBlock(), FirstArg);
- Updater.AddUse(2, &Return->getOperandUse(0));
+ VarNum = Updater.AddVariable("a", I32Ty);
+ Updater.AddAvailableValue(VarNum, &F->getEntryBlock(), FirstArg);
+ Updater.AddUse(VarNum, &Return->getOperandUse(0));
// Save all inserted phis into a vector.
SmallVector<PHINode *, 8> Inserted;
OpenPOWER on IntegriCloud