diff options
Diffstat (limited to 'test/Analysis/RegionInfo/bad_node_traversal.ll')
-rw-r--r-- | test/Analysis/RegionInfo/bad_node_traversal.ll | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/test/Analysis/RegionInfo/bad_node_traversal.ll b/test/Analysis/RegionInfo/bad_node_traversal.ll new file mode 100644 index 000000000000..00dd1207af9f --- /dev/null +++ b/test/Analysis/RegionInfo/bad_node_traversal.ll @@ -0,0 +1,43 @@ +; REQUIRES: asserts +; RUN: opt -regions -analyze < %s | FileCheck %s + +; While working on improvements to the region info analysis, this test +; case caused an incorrect region 3 => 8 to be detected. + +define internal i8 @wibble() { +bb: + br i1 true, label %bb1, label %bb8 + +bb1: ; preds = %bb + switch i32 0, label %bb2 [ + i32 0, label %bb3 + i32 1, label %bb7 + ] + +bb2: ; preds = %bb1 + br label %bb4 + +bb3: ; preds = %bb1 + br label %bb5 + +bb4: ; preds = %bb2 + br label %bb6 + +bb5: ; preds = %bb3 + br label %bb6 + +bb6: ; preds = %bb5, %bb4 + br label %bb7 + +bb7: ; preds = %bb6, %bb1 + br label %bb8 + +bb8: ; preds = %bb7, %bb + ret i8 1 +} + +; CHECK: [0] bb => <Function Return> +; CHECK-NEXT: [1] bb => bb8 +; CHECK-NEXT: [2] bb1 => bb7 +; CHECK-NEXT: End region tree + |