xref: /llvm-project/llvm/test/Analysis/RegionInfo/bad_node_traversal.ll (revision 50153213c80286c6c91da4612aaf234cc6438c63)
1; REQUIRES: asserts
2; RUN: opt -passes='print<regions>' -disable-output < %s 2>&1 | FileCheck %s
3
4; While working on improvements to the region info analysis, this test
5; case caused an incorrect region 3 => 8 to be detected.
6
7define internal i8 @wibble() {
8bb:
9  br i1 true, label %bb1, label %bb8
10
11bb1:                                              ; preds = %bb
12  switch i32 0, label %bb2 [
13    i32 0, label %bb3
14    i32 1, label %bb7
15  ]
16
17bb2:                                              ; preds = %bb1
18  br label %bb4
19
20bb3:                                              ; preds = %bb1
21  br label %bb5
22
23bb4:                                              ; preds = %bb2
24  br label %bb6
25
26bb5:                                              ; preds = %bb3
27  br label %bb6
28
29bb6:                                              ; preds = %bb5, %bb4
30  br label %bb7
31
32bb7:                                              ; preds = %bb6, %bb1
33  br label %bb8
34
35bb8:                                              ; preds = %bb7, %bb
36  ret i8 1
37}
38
39; CHECK:      [0] bb => <Function Return>
40; CHECK-NEXT:   [1] bb => bb8
41; CHECK-NEXT:     [2] bb1 => bb7
42; CHECK-NEXT: End region tree
43
44