DI: Reverse direction of subprogram -> function edge.
[oota-llvm.git] / test / Transforms / SimplifyCFG / PhiBlockMerge.ll
index d1df2a17b7d77a254e411a424597c6ac4d4e15fe..555082921b962a17b71dbfacef6837f8ba090d32 100644 (file)
@@ -1,26 +1,24 @@
 ; Test merging of blocks that only have PHI nodes in them
 ;
-; RUN: if as < %s | opt -simplifycfg | dis | grep 'N:'
-; RUN: then exit 1
-; RUN: else exit 0
-; RUN: fi
+; RUN: opt < %s -simplifycfg -S | FileCheck %s
 ;
 
-int %test(bool %a, bool %b) {
-        br bool %a, label %M, label %O
-
-O:
-       br bool %b, label %N, label %Q
-Q:
-       br label %N
-N:
-       %Wp = phi int [0, %O], [1, %Q]
-       ; This block should be foldable into M
-       br label %M
-
-M:
-       %W = phi int [%Wp, %N], [2, %0]
-       %R = add int %W, 1
-       ret int %R
+define i32 @test(i1 %a, i1 %b) {
+        br i1 %a, label %M, label %O
+O:              ; preds = %0
+; CHECK: select i1 %b, i32 0, i32 1
+; CHECK-NOT: phi
+        br i1 %b, label %N, label %Q
+Q:              ; preds = %O
+        br label %N
+N:              ; preds = %Q, %O
+        ; This block should be foldable into M
+        %Wp = phi i32 [ 0, %O ], [ 1, %Q ]              ; <i32> [#uses=1]
+        br label %M
+M:              ; preds = %N, %0
+        %W = phi i32 [ %Wp, %N ], [ 2, %0 ]             ; <i32> [#uses=1]
+        %R = add i32 %W, 1              ; <i32> [#uses=1]
+        ret i32 %R
+; CHECK: ret
 }