aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/Utils/SimplifyCFG.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-01-12 04:24:46 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-01-12 04:24:46 +0000
commit579dca12c2cfd60bc18aaadbd5331897d48fec29 (patch)
treecb9cb81fdb02dedb8e6c391a9fd8763f9105b7cc /lib/Transforms/Utils/SimplifyCFG.cpp
parent53bfebc967c0a68023db8fe95f7319f8ab724998 (diff)
Implement review feedback for the ConstantBool->ConstantInt merge. Chris
recommended that getBoolValue be replaced with getZExtValue and that get(bool) be replaced by get(const Type*, uint64_t). This implements those changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33110 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/SimplifyCFG.cpp')
-rw-r--r--lib/Transforms/Utils/SimplifyCFG.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp
index 964b47c4ef..25bc16866f 100644
--- a/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -975,7 +975,7 @@ static bool FoldCondBranchOnPHI(BranchInst *BI) {
// Okay, we now know that all edges from PredBB should be revectored to
// branch to RealDest.
BasicBlock *PredBB = PN->getIncomingBlock(i);
- BasicBlock *RealDest = BI->getSuccessor(!CB->getBoolValue());
+ BasicBlock *RealDest = BI->getSuccessor(!CB->getZExtValue());
if (RealDest == BB) continue; // Skip self loops.
@@ -1500,8 +1500,8 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
if (PBI != BI && PBI->isConditional()) {
// If this block ends with a branch instruction, and if there is a
- // predecessor that ends on a branch of the same condition, make this
- // conditional branch redundant.
+ // predecessor that ends on a branch of the same condition, make
+ // this conditional branch redundant.
if (PBI->getCondition() == BI->getCondition() &&
PBI->getSuccessor(0) != PBI->getSuccessor(1)) {
// Okay, the outcome of this conditional branch is statically
@@ -1509,23 +1509,24 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
if (BB->getSinglePredecessor()) {
// Turn this into a branch on constant.
bool CondIsTrue = PBI->getSuccessor(0) == BB;
- BI->setCondition(ConstantInt::get(CondIsTrue));
+ BI->setCondition(ConstantInt::get(Type::Int1Ty, CondIsTrue));
return SimplifyCFG(BB); // Nuke the branch on constant.
}
- // Otherwise, if there are multiple predecessors, insert a PHI that
- // merges in the constant and simplify the block result.
+ // Otherwise, if there are multiple predecessors, insert a PHI
+ // that merges in the constant and simplify the block result.
if (BlockIsSimpleEnoughToThreadThrough(BB)) {
PHINode *NewPN = new PHINode(Type::Int1Ty,
- BI->getCondition()->getName()+".pr",
- BB->begin());
+ BI->getCondition()->getName()+".pr",
+ BB->begin());
for (PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI)
if ((PBI = dyn_cast<BranchInst>((*PI)->getTerminator())) &&
PBI != BI && PBI->isConditional() &&
PBI->getCondition() == BI->getCondition() &&
PBI->getSuccessor(0) != PBI->getSuccessor(1)) {
bool CondIsTrue = PBI->getSuccessor(0) == BB;
- NewPN->addIncoming(ConstantInt::get(CondIsTrue), *PI);
+ NewPN->addIncoming(ConstantInt::get(Type::Int1Ty,
+ CondIsTrue), *PI);
} else {
NewPN->addIncoming(BI->getCondition(), *PI);
}