diff options
Diffstat (limited to 'lib/Transforms/IPO')
-rw-r--r-- | lib/Transforms/IPO/MutateStructTypes.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/Transforms/IPO/MutateStructTypes.cpp b/lib/Transforms/IPO/MutateStructTypes.cpp index fcad5fa050..b5dd937f7e 100644 --- a/lib/Transforms/IPO/MutateStructTypes.cpp +++ b/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: |