fixes PR7356.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105950
91177308-0d34-0410-b5e6-
96231b3b80d8
// Add all the unavailable predecessors to the PredsToSplit list.
for (pred_iterator PI = pred_begin(LoadBB), PE = pred_end(LoadBB);
- PI != PE; ++PI)
+ PI != PE; ++PI) {
+ // If the predecessor is an indirect goto, we can't split the edge.
+ if (isa<IndirectBrInst>((*PI)->getTerminator()))
+ return false;
+
if (!AvailablePredSet.count(*PI))
PredsToSplit.push_back(*PI);
+ }
// Split them out to their own block.
UnavailablePred =
ret void
}
+
+
+; PR7356
+define i32 @test13(i32* %P, i8* %Ptr) {
+entry:
+ indirectbr i8* %Ptr, [label %BrBlock, label %B2]
+
+B2:
+ store i32 4, i32 *%P
+ br label %BrBlock
+
+BrBlock:
+ %L = load i32* %P
+ %C = icmp eq i32 %L, 42
+ br i1 %C, label %T, label %F
+
+T:
+ ret i32 123
+F:
+ ret i32 1422
+}
+