]> granicus.if.org Git - llvm/commitdiff
RegionInfo: add new test case
authorTobias Grosser <tobias@grosser.es>
Wed, 4 Jan 2017 17:50:15 +0000 (17:50 +0000)
committerTobias Grosser <tobias@grosser.es>
Wed, 4 Jan 2017 17:50:15 +0000 (17:50 +0000)
This test case has been reduced from test/Analysis/RegionInfo/mix_1.ll and
provides us with a minimal example of a test case which caused problems while
working on an improved version of the RegionInfo analysis. We upstream this
test case, as it certainly can be helpful in future debugging and optimization
tests.

Test case reduced by Pratik Bhatu <cs12b1010@iith.ac.in>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@290974 91177308-0d34-0410-b5e6-96231b3b80d8

test/Analysis/RegionInfo/bad_node_traversal.ll [new file with mode: 0644]

diff --git a/test/Analysis/RegionInfo/bad_node_traversal.ll b/test/Analysis/RegionInfo/bad_node_traversal.ll
new file mode 100644 (file)
index 0000000..e35c29b
--- /dev/null
@@ -0,0 +1,42 @@
+; 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
+