xref: /aosp_15_r20/external/llvm/test/Transforms/LoopStrengthReduce/2013-01-05-IndBr.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -loop-reduce -S < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker;
3*9880d681SAndroid Build Coastguard Worker; Indirect branch in the preheader crashes replaceCongruentIVs.
4*9880d681SAndroid Build Coastguard Worker; rdar://12910141
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128"
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @test(
9*9880d681SAndroid Build Coastguard Worker; CHECK: bb8:
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: phi i8
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: phi i8
12*9880d681SAndroid Build Coastguard Worker; CHECK: ret void
13*9880d681SAndroid Build Coastguard Workerdefine void @test() nounwind ssp {
14*9880d681SAndroid Build Coastguard Workerbb:
15*9880d681SAndroid Build Coastguard Worker  br label %bb190
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerbb8:                                              ; preds = %bb190, %bb11
18*9880d681SAndroid Build Coastguard Worker  %tmp = phi i8 [ %tmp14, %bb11 ], [ 25, %bb190 ]
19*9880d681SAndroid Build Coastguard Worker  %tmp9 = phi i8 [ %tmp12, %bb11 ], [ 25, %bb190 ]
20*9880d681SAndroid Build Coastguard Worker  %tmp10 = add i8 %tmp, -5
21*9880d681SAndroid Build Coastguard Worker  indirectbr i8* undef, [label %bb11, label %bb15]
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerbb11:                                             ; preds = %bb8
24*9880d681SAndroid Build Coastguard Worker  %tmp12 = add i8 %tmp9, 1
25*9880d681SAndroid Build Coastguard Worker  %tmp13 = add i8 %tmp9, -19
26*9880d681SAndroid Build Coastguard Worker  %tmp14 = add i8 %tmp, 1
27*9880d681SAndroid Build Coastguard Worker  indirectbr i8* undef, [label %bb8]
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerbb15:                                             ; preds = %bb8
30*9880d681SAndroid Build Coastguard Worker  indirectbr i8* undef, [label %bb16]
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerbb16:                                             ; preds = %bb16, %bb15
33*9880d681SAndroid Build Coastguard Worker  indirectbr i8* undef, [label %bb37, label %bb190]
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerbb37:                                             ; preds = %bb190
37*9880d681SAndroid Build Coastguard Worker  indirectbr i8* undef, [label %bb38]
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerbb38:                                             ; preds = %bb37, %bb5
40*9880d681SAndroid Build Coastguard Worker  ret void
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Workerbb190:                                            ; preds = %bb189, %bb187
43*9880d681SAndroid Build Coastguard Worker  indirectbr i8* undef, [label %bb37, label %bb8]
44*9880d681SAndroid Build Coastguard Worker}
45