• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt < %s -postdomtree -analyze -enable-new-pm=0 | FileCheck %s
2; RUN: opt < %s -passes='print<postdomtree>' 2>&1 | FileCheck %s
3define internal void @f() {
4entry:
5  br i1 undef, label %bb35, label %bb3.i
6
7bb3.i:
8  br label %bb3.i
9
10bb:
11  br label %bb35
12
13bb.i:
14  br label %bb35
15
16_float32_unpack.exit:
17  br label %bb35
18
19bb.i5:
20  br label %bb35
21
22_float32_unpack.exit8:
23  br label %bb35
24
25bb32.preheader:
26  br label %bb35
27
28bb3:
29  br label %bb35
30
31bb3.split.us:
32  br label %bb35
33
34bb.i4.us:
35  br label %bb35
36
37bb7.i.us:
38  br label %bb35
39
40bb.i4.us.backedge:
41  br label %bb35
42
43bb1.i.us:
44  br label %bb35
45
46bb6.i.us:
47  br label %bb35
48
49bb4.i.us:
50  br label %bb35
51
52bb8.i.us:
53  br label %bb35
54
55bb3.i.loopexit.us:
56  br label %bb35
57
58bb.nph21:
59  br label %bb35
60
61bb4:
62  br label %bb35
63
64bb5:
65  br label %bb35
66
67bb14.preheader:
68  br label %bb35
69
70bb.nph18:
71  br label %bb35
72
73bb8.us.preheader:
74  br label %bb35
75
76bb8.preheader:
77  br label %bb35
78
79bb8.us:
80  br label %bb35
81
82bb8:
83  br label %bb35
84
85bb15.loopexit:
86  br label %bb35
87
88bb15.loopexit2:
89  br label %bb35
90
91bb15:
92  br label %bb35
93
94bb16:
95  br label %bb35
96
97bb17.loopexit.split:
98  br label %bb35
99
100bb.nph14:
101  br label %bb35
102
103bb19:
104  br label %bb35
105
106bb20:
107  br label %bb35
108
109bb29.preheader:
110  br label %bb35
111
112bb.nph:
113  br label %bb35
114
115bb23.us.preheader:
116  br label %bb35
117
118bb23.preheader:
119  br label %bb35
120
121bb23.us:
122  br label %bb35
123
124bb23:
125  br label %bb35
126
127bb30.loopexit:
128  br label %bb35
129
130bb30.loopexit1:
131  br label %bb35
132
133bb30:
134  br label %bb35
135
136bb31:
137  br label %bb35
138
139bb35.loopexit:
140  br label %bb35
141
142bb35.loopexit3:
143  br label %bb35
144
145bb35:
146  ret void
147}
148; CHECK: Inorder PostDominator Tree:
149; CHECK-NEXT:   [1]  <<exit node>>
150; CHECK-NEXT:     [2] %bb35
151; CHECK-NEXT:       [3] %bb
152; CHECK-NEXT:       [3] %bb.i
153; CHECK-NEXT:       [3] %_float32_unpack.exit
154; CHECK-NEXT:       [3] %bb.i5
155; CHECK-NEXT:       [3] %_float32_unpack.exit8
156; CHECK-NEXT:       [3] %bb32.preheader
157; CHECK-NEXT:       [3] %bb3
158; CHECK-NEXT:       [3] %bb3.split.us
159; CHECK-NEXT:       [3] %bb.i4.us
160; CHECK-NEXT:       [3] %bb7.i.us
161; CHECK-NEXT:       [3] %bb.i4.us.backedge
162; CHECK-NEXT:       [3] %bb1.i.us
163; CHECK-NEXT:       [3] %bb6.i.us
164; CHECK-NEXT:       [3] %bb4.i.us
165; CHECK-NEXT:       [3] %bb8.i.us
166; CHECK-NEXT:       [3] %bb3.i.loopexit.us
167; CHECK-NEXT:       [3] %bb.nph21
168; CHECK-NEXT:       [3] %bb4
169; CHECK-NEXT:       [3] %bb5
170; CHECK-NEXT:       [3] %bb14.preheader
171; CHECK-NEXT:       [3] %bb.nph18
172; CHECK-NEXT:       [3] %bb8.us.preheader
173; CHECK-NEXT:       [3] %bb8.preheader
174; CHECK-NEXT:       [3] %bb8.us
175; CHECK-NEXT:       [3] %bb8
176; CHECK-NEXT:       [3] %bb15.loopexit
177; CHECK-NEXT:       [3] %bb15.loopexit2
178; CHECK-NEXT:       [3] %bb15
179; CHECK-NEXT:       [3] %bb16
180; CHECK-NEXT:       [3] %bb17.loopexit.split
181; CHECK-NEXT:       [3] %bb.nph14
182; CHECK-NEXT:       [3] %bb19
183; CHECK-NEXT:       [3] %bb20
184; CHECK-NEXT:       [3] %bb29.preheader
185; CHECK-NEXT:       [3] %bb.nph
186; CHECK-NEXT:       [3] %bb23.us.preheader
187; CHECK-NEXT:       [3] %bb23.preheader
188; CHECK-NEXT:       [3] %bb23.us
189; CHECK-NEXT:       [3] %bb23
190; CHECK-NEXT:       [3] %bb30.loopexit
191; CHECK-NEXT:       [3] %bb30.loopexit1
192; CHECK-NEXT:       [3] %bb30
193; CHECK-NEXT:       [3] %bb31
194; CHECK-NEXT:       [3] %bb35.loopexit
195; CHECK-NEXT:       [3] %bb35.loopexit3
196; CHECK-NEXT:     [2] %entry
197; CHECK-NEXT:     [2] %bb3.i
198; CHECK-NEXT: Roots: %bb35 %bb3.i
199