xref: /aosp_15_r20/external/llvm/test/Transforms/LoopUnswitch/2012-04-02-IndirectBr.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -S -loop-unswitch -verify-loop-info -verify-dom-info | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; PR12343: -loop-unswitch crash on indirect branch
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; CHECK:       %0 = icmp eq i64 undef, 0
5*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  br i1 %0, label %"5", label %"4"
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker; CHECK:       "5":                                              ; preds = %entry
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  br label %"16"
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker; CHECK:       "16":                                             ; preds = %"22", %"5"
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  indirectbr i8* undef, [label %"22", label %"33"]
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker; CHECK:       "22":                                             ; preds = %"16"
14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  br i1 %0, label %"16", label %"26"
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker; CHECK:       "26":                                             ; preds = %"22"
17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  unreachable
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine void @foo() {
20*9880d681SAndroid Build Coastguard Workerentry:
21*9880d681SAndroid Build Coastguard Worker  %0 = icmp eq i64 undef, 0
22*9880d681SAndroid Build Coastguard Worker  br i1 %0, label %"5", label %"4"
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker"4":                                              ; preds = %entry
25*9880d681SAndroid Build Coastguard Worker  unreachable
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker"5":                                              ; preds = %entry
28*9880d681SAndroid Build Coastguard Worker  br label %"16"
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker"16":                                             ; preds = %"22", %"5"
31*9880d681SAndroid Build Coastguard Worker  indirectbr i8* undef, [label %"22", label %"33"]
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker"22":                                             ; preds = %"16"
34*9880d681SAndroid Build Coastguard Worker  br i1 %0, label %"16", label %"26"
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker"26":                                             ; preds = %"22"
37*9880d681SAndroid Build Coastguard Worker  unreachable
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker"33":                                             ; preds = %"16"
40*9880d681SAndroid Build Coastguard Worker  unreachable
41*9880d681SAndroid Build Coastguard Worker}
42