diff options
author | Chris Lattner <sabre@nondot.org> | 2002-04-27 03:15:45 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-04-27 03:15:45 +0000 |
commit | 66cfaf1da24e732948b75d1d82272793da8ec5ae (patch) | |
tree | 9b7d6944fa69381f2ea1fe4f2f08c835fd201d7c /llvm/lib | |
parent | e6dd75604ef8362baf9f14cfea691a39c5ec0110 (diff) | |
download | bcm5719-llvm-66cfaf1da24e732948b75d1d82272793da8ec5ae.tar.gz bcm5719-llvm-66cfaf1da24e732948b75d1d82272793da8ec5ae.zip |
Changes because the Terminator::getSuccessor function now FAILS if successor
IDX is out of range instead of returning null.
llvm-svn: 2332
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Transforms/IPO/MutateStructTypes.cpp | 13 | ||||
-rw-r--r-- | llvm/lib/Transforms/Scalar/SCCP.cpp | 4 |
2 files changed, 11 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/IPO/MutateStructTypes.cpp b/llvm/lib/Transforms/IPO/MutateStructTypes.cpp index fcad5fa050b..b5dd937f7ef 100644 --- a/llvm/lib/Transforms/IPO/MutateStructTypes.cpp +++ b/llvm/lib/Transforms/IPO/MutateStructTypes.cpp @@ -369,10 +369,15 @@ void MutateStructTypes::transformMethod(Function *m) { break; case Instruction::Br: { const BranchInst *BI = cast<BranchInst>(I); - NewI = new BranchInst( - cast<BasicBlock>(ConvertValue(BI->getSuccessor(0))), - cast_or_null<BasicBlock>(ConvertValue(BI->getSuccessor(1))), - ConvertValue(BI->getCondition())); + if (BI->isConditional()) { + NewI = + new BranchInst(cast<BasicBlock>(ConvertValue(BI->getSuccessor(0))), + cast<BasicBlock>(ConvertValue(BI->getSuccessor(1))), + ConvertValue(BI->getCondition())); + } else { + NewI = + new BranchInst(cast<BasicBlock>(ConvertValue(BI->getSuccessor(0)))); + } break; } case Instruction::Switch: diff --git a/llvm/lib/Transforms/Scalar/SCCP.cpp b/llvm/lib/Transforms/Scalar/SCCP.cpp index fd3daa5bef4..51a827d14bb 100644 --- a/llvm/lib/Transforms/Scalar/SCCP.cpp +++ b/llvm/lib/Transforms/Scalar/SCCP.cpp @@ -397,8 +397,8 @@ void SCCP::visitBranchInst(BranchInst *BI) { void SCCP::visitSwitchInst(SwitchInst *SI) { InstVal &SCValue = getValueState(SI->getCondition()); if (SCValue.isOverdefined()) { // Overdefined condition? All dests are exe - for(unsigned i = 0; BasicBlock *Succ = SI->getSuccessor(i); ++i) - markExecutable(Succ); + for(unsigned i = 0, E = SI->getNumSuccessors(); i != E; ++i) + markExecutable(SI->getSuccessor(i)); } else if (SCValue.isConstant()) { Constant *CPV = SCValue.getConstant(); // Make sure to skip the "default value" which isn't a value |