summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-04-27 03:15:45 +0000
committerChris Lattner <sabre@nondot.org>2002-04-27 03:15:45 +0000
commit66cfaf1da24e732948b75d1d82272793da8ec5ae (patch)
tree9b7d6944fa69381f2ea1fe4f2f08c835fd201d7c /llvm/lib
parente6dd75604ef8362baf9f14cfea691a39c5ec0110 (diff)
downloadbcm5719-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.cpp13
-rw-r--r--llvm/lib/Transforms/Scalar/SCCP.cpp4
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
OpenPOWER on IntegriCloud