1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -fix-irreducible -S | FileCheck %s
3
4define dso_local void @tre_tnfa_run_backtrack() {
5; CHECK-LABEL: @tre_tnfa_run_backtrack(
6; CHECK-NEXT:  entry:
7; CHECK-NEXT:    br label [[RETRY:%.*]]
8; CHECK:       retry:
9; CHECK-NEXT:    br label [[IRR_GUARD:%.*]]
10; CHECK:       while.body248:
11; CHECK-NEXT:    br i1 undef, label [[IF_THEN250:%.*]], label [[IF_END275:%.*]]
12; CHECK:       if.then250:
13; CHECK-NEXT:    br label [[FOR_COND264:%.*]]
14; CHECK:       for.cond264:
15; CHECK-NEXT:    br i1 undef, label [[FOR_BODY267:%.*]], label [[IRR_GUARD]]
16; CHECK:       for.body267:
17; CHECK-NEXT:    br label [[FOR_COND264]]
18; CHECK:       if.end275:
19; CHECK-NEXT:    br label [[FOR_COND342:%.*]]
20; CHECK:       for.cond342:
21; CHECK-NEXT:    br i1 undef, label [[FOR_BODY345:%.*]], label [[FOR_END580:%.*]]
22; CHECK:       for.body345:
23; CHECK-NEXT:    br label [[FOR_COND342]]
24; CHECK:       for.end580:
25; CHECK-NEXT:    br label [[IRR_GUARD]]
26; CHECK:       backtrack:
27; CHECK-NEXT:    br i1 undef, label [[IF_THEN595:%.*]], label [[IF_ELSE629:%.*]]
28; CHECK:       if.then595:
29; CHECK-NEXT:    br label [[FOR_COND616:%.*]]
30; CHECK:       for.cond616:
31; CHECK-NEXT:    br i1 undef, label [[FOR_BODY619:%.*]], label [[FOR_END626:%.*]]
32; CHECK:       for.body619:
33; CHECK-NEXT:    br label [[FOR_COND616]]
34; CHECK:       for.end626:
35; CHECK-NEXT:    br label [[IRR_GUARD]]
36; CHECK:       if.else629:
37; CHECK-NEXT:    br label [[RETRY]]
38; CHECK:       irr.guard:
39; CHECK-NEXT:    [[GUARD_BACKTRACK:%.*]] = phi i1 [ true, [[FOR_END580]] ], [ true, [[FOR_COND264]] ], [ undef, [[RETRY]] ], [ false, [[FOR_END626]] ]
40; CHECK-NEXT:    br i1 [[GUARD_BACKTRACK]], label [[BACKTRACK:%.*]], label [[WHILE_BODY248:%.*]]
41;
42entry:
43  br label %retry
44
45retry:
46  br i1 undef, label %backtrack, label %while.body248
47
48while.body248:                                    ; preds = %for.end626, %retry
49  br i1 undef, label %if.then250, label %if.end275
50
51if.then250:                                       ; preds = %while.body248
52  br label %for.cond264
53
54for.cond264:                                      ; preds = %for.body267, %if.then250
55  br i1 undef, label %for.body267, label %backtrack
56
57for.body267:                                      ; preds = %for.cond264
58  br label %for.cond264
59
60if.end275:                                        ; preds = %while.body248
61  br label %for.cond342
62
63for.cond342:                                      ; preds = %for.body345, %if.end275
64  br i1 undef, label %for.body345, label %for.end580
65
66for.body345:                                      ; preds = %for.cond342
67  br label %for.cond342
68
69for.end580:                                       ; preds = %for.cond342
70  br label %backtrack
71
72backtrack:                                        ; preds = %for.end580, %for.cond264, %retry
73  br i1 undef, label %if.then595, label %if.else629
74
75if.then595:                                       ; preds = %backtrack
76  br label %for.cond616
77
78for.cond616:                                      ; preds = %for.body619, %if.then595
79  br i1 undef, label %for.body619, label %for.end626
80
81for.body619:                                      ; preds = %for.cond616
82  br label %for.cond616
83
84for.end626:                                       ; preds = %for.cond616
85  br label %while.body248
86
87if.else629:                                       ; preds = %backtrack
88  br label %retry
89}
90