diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyCFG.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Utils/SimplifyCFG.cpp | 4 | 
1 files changed, 3 insertions, 1 deletions
| diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp index 5ab9a2877cd..6df846cbd18 100644 --- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp @@ -1171,6 +1171,8 @@ static bool FoldCondBranchOnPHI(BranchInst *BI, const TargetData *TD) {      BasicBlock *RealDest = BI->getSuccessor(!CB->getZExtValue());      if (RealDest == BB) continue;  // Skip self loops. +    // Skip if the predecessor's terminator is an indirect branch. +    if (isa<IndirectBrInst>(PredBB->getTerminator())) continue;      // The dest block might have PHI nodes, other predecessors and other      // difficult cases.  Instead of being smart about this, just insert a new @@ -1226,7 +1228,7 @@ static bool FoldCondBranchOnPHI(BranchInst *BI, const TargetData *TD) {          BB->removePredecessor(PredBB);          PredBBTI->setSuccessor(i, EdgeBB);        } -     +      // Recurse, simplifying any other constants.      return FoldCondBranchOnPHI(BI, TD) | true;    } | 

