Changes in directory llvm/lib/Transforms/Utils:
CloneFunction.cpp updated: 1.34 -> 1.35 CodeExtractor.cpp updated: 1.44 -> 1.45 Local.cpp updated: 1.63 -> 1.64 SimplifyCFG.cpp updated: 1.108 -> 1.109 ValueMapper.cpp updated: 1.27 -> 1.28 --- Log message: For PR1043: http://llvm.org/PR1043 : Merge ConstantIntegral and ConstantBool into ConstantInt. Remove ConstantIntegral and ConstantBool from LLVM. --- Diffs of the changes: (+21 -15) CloneFunction.cpp | 13 ++++++++----- CodeExtractor.cpp | 2 +- Local.cpp | 6 +++--- SimplifyCFG.cpp | 13 ++++++++----- ValueMapper.cpp | 2 +- 5 files changed, 21 insertions(+), 15 deletions(-) Index: llvm/lib/Transforms/Utils/CloneFunction.cpp diff -u llvm/lib/Transforms/Utils/CloneFunction.cpp:1.34 llvm/lib/Transforms/Utils/CloneFunction.cpp:1.35 --- llvm/lib/Transforms/Utils/CloneFunction.cpp:1.34 Sat Dec 23 00:05:41 2006 +++ llvm/lib/Transforms/Utils/CloneFunction.cpp Thu Jan 11 06:24:14 2007 @@ -226,11 +226,14 @@ if (const BranchInst *BI = dyn_cast<BranchInst>(OldTI)) { if (BI->isConditional()) { // If the condition was a known constant in the callee... - ConstantBool *Cond = dyn_cast<ConstantBool>(BI->getCondition()); - if (Cond == 0) // Or is a known constant in the caller... - Cond = dyn_cast_or_null<ConstantBool>(ValueMap[BI->getCondition()]); - if (Cond) { // Constant fold to uncond branch! - BasicBlock *Dest = BI->getSuccessor(!Cond->getValue()); + ConstantInt *Cond = dyn_cast<ConstantInt>(BI->getCondition()); + // Or is a known constant in the caller... + if (Cond == 0) + Cond = dyn_cast_or_null<ConstantInt>(ValueMap[BI->getCondition()]); + + // Constant fold to uncond branch! + if (Cond) { + BasicBlock *Dest = BI->getSuccessor(!Cond->getBoolValue()); ValueMap[OldTI] = new BranchInst(Dest, NewBB); CloneBlock(Dest); TerminatorDone = true; Index: llvm/lib/Transforms/Utils/CodeExtractor.cpp diff -u llvm/lib/Transforms/Utils/CodeExtractor.cpp:1.44 llvm/lib/Transforms/Utils/CodeExtractor.cpp:1.45 --- llvm/lib/Transforms/Utils/CodeExtractor.cpp:1.44 Sat Dec 30 23:48:39 2006 +++ llvm/lib/Transforms/Utils/CodeExtractor.cpp Thu Jan 11 06:24:14 2007 @@ -470,7 +470,7 @@ case 0: case 1: break; // No value needed. case 2: // Conditional branch, return a bool - brVal = ConstantBool::get(!SuccNum); + brVal = ConstantInt::get(!SuccNum); break; default: brVal = ConstantInt::get(Type::Int16Ty, SuccNum); Index: llvm/lib/Transforms/Utils/Local.cpp diff -u llvm/lib/Transforms/Utils/Local.cpp:1.63 llvm/lib/Transforms/Utils/Local.cpp:1.64 --- llvm/lib/Transforms/Utils/Local.cpp:1.63 Sat Dec 23 00:05:41 2006 +++ llvm/lib/Transforms/Utils/Local.cpp Thu Jan 11 06:24:14 2007 @@ -173,11 +173,11 @@ BasicBlock *Dest1 = cast<BasicBlock>(BI->getOperand(0)); BasicBlock *Dest2 = cast<BasicBlock>(BI->getOperand(1)); - if (ConstantBool *Cond = dyn_cast<ConstantBool>(BI->getCondition())) { + if (ConstantInt *Cond = dyn_cast<ConstantInt>(BI->getCondition())) { // Are we branching on constant? // YES. Change to unconditional branch... - BasicBlock *Destination = Cond->getValue() ? Dest1 : Dest2; - BasicBlock *OldDest = Cond->getValue() ? Dest2 : Dest1; + BasicBlock *Destination = Cond->getBoolValue() ? Dest1 : Dest2; + BasicBlock *OldDest = Cond->getBoolValue() ? Dest2 : Dest1; //cerr << "Function: " << T->getParent()->getParent() // << "\nRemoving branch from " << T->getParent() Index: llvm/lib/Transforms/Utils/SimplifyCFG.cpp diff -u llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.108 llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.109 --- llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.108 Sat Dec 23 00:05:41 2006 +++ llvm/lib/Transforms/Utils/SimplifyCFG.cpp Thu Jan 11 06:24:14 2007 @@ -968,12 +968,14 @@ // Okay, this is a simple enough basic block. See if any phi values are // constants. - for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) - if (ConstantBool *CB = dyn_cast<ConstantBool>(PN->getIncomingValue(i))) { + for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) { + ConstantInt *CB; + if ((CB = dyn_cast<ConstantInt>(PN->getIncomingValue(i))) && + CB->getType() == Type::BoolTy) { // 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->getValue()); + BasicBlock *RealDest = BI->getSuccessor(!CB->getBoolValue()); if (RealDest == BB) continue; // Skip self loops. @@ -1037,6 +1039,7 @@ // Recurse, simplifying any other constants. return FoldCondBranchOnPHI(BI) | true; } + } return false; } @@ -1506,7 +1509,7 @@ if (BB->getSinglePredecessor()) { // Turn this into a branch on constant. bool CondIsTrue = PBI->getSuccessor(0) == BB; - BI->setCondition(ConstantBool::get(CondIsTrue)); + BI->setCondition(ConstantInt::get(CondIsTrue)); return SimplifyCFG(BB); // Nuke the branch on constant. } @@ -1522,7 +1525,7 @@ PBI->getCondition() == BI->getCondition() && PBI->getSuccessor(0) != PBI->getSuccessor(1)) { bool CondIsTrue = PBI->getSuccessor(0) == BB; - NewPN->addIncoming(ConstantBool::get(CondIsTrue), *PI); + NewPN->addIncoming(ConstantInt::get(CondIsTrue), *PI); } else { NewPN->addIncoming(BI->getCondition(), *PI); } Index: llvm/lib/Transforms/Utils/ValueMapper.cpp diff -u llvm/lib/Transforms/Utils/ValueMapper.cpp:1.27 llvm/lib/Transforms/Utils/ValueMapper.cpp:1.28 --- llvm/lib/Transforms/Utils/ValueMapper.cpp:1.27 Fri Jul 14 17:21:13 2006 +++ llvm/lib/Transforms/Utils/ValueMapper.cpp Thu Jan 11 06:24:14 2007 @@ -28,7 +28,7 @@ return VMSlot = const_cast<Value*>(V); if (Constant *C = const_cast<Constant*>(dyn_cast<Constant>(V))) { - if (isa<ConstantIntegral>(C) || isa<ConstantFP>(C) || + if (isa<ConstantInt>(C) || isa<ConstantFP>(C) || isa<ConstantPointerNull>(C) || isa<ConstantAggregateZero>(C) || isa<UndefValue>(C)) return VMSlot = C; // Primitive constants map directly _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits