diff options
-rw-r--r-- | llvm/test/Transforms/SimplifyCFG/PhiEliminate2.ll | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/PhiEliminate2.ll b/llvm/test/Transforms/SimplifyCFG/PhiEliminate2.ll index 0b3893d520d..fcda12c5279 100644 --- a/llvm/test/Transforms/SimplifyCFG/PhiEliminate2.ll +++ b/llvm/test/Transforms/SimplifyCFG/PhiEliminate2.ll @@ -1,17 +1,25 @@ -; RUN: opt < %s -simplifycfg -S | not grep br +; RUN: opt < %s -simplifycfg -S | FileCheck %s -define i32 @test(i1 %C, i32 %V1, i32 %V2, i16 %V3) { +define i32 @FoldTwoEntryPHINode(i1 %C, i32 %V1, i32 %V2, i16 %V3) { entry: br i1 %C, label %then, label %else -then: ; preds = %entry - %V4 = or i32 %V2, %V1 ; <i32> [#uses=1] +then: + %V4 = or i32 %V2, %V1 br label %Cont -else: ; preds = %entry - %V5 = sext i16 %V3 to i32 ; <i32> [#uses=1] +else: + %V5 = sext i16 %V3 to i32 br label %Cont -Cont: ; preds = %then, %else - %V6 = phi i32 [ %V5, %else ], [ %V4, %then ] ; <i32> [#uses=0] - call i32 @test( i1 false, i32 0, i32 0, i16 0 ) ; <i32>:0 [#uses=0] +Cont: + %V6 = phi i32 [ %V5, %else ], [ %V4, %then ] + call i32 @FoldTwoEntryPHINode( i1 false, i32 0, i32 0, i16 0 ) ret i32 %V1 + +; CHECK-LABEL: @FoldTwoEntryPHINode( +; CHECK-NEXT: entry: +; CHECK-NEXT: %V5 = sext i16 %V3 to i32 +; CHECK-NEXT: %V4 = or i32 %V2, %V1 +; CHECK-NEXT: %V6 = select i1 %C, i32 %V4, i32 %V5 +; CHECK-NEXT: %0 = call i32 @FoldTwoEntryPHINode(i1 false, i32 0, i32 0, i16 0) +; CHECK-NEXT: ret i32 %V1 } |