diff options
Diffstat (limited to 'test/Transforms/CorrelatedValuePropagation/basic.ll')
-rw-r--r-- | test/Transforms/CorrelatedValuePropagation/basic.ll | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/test/Transforms/CorrelatedValuePropagation/basic.ll b/test/Transforms/CorrelatedValuePropagation/basic.ll index 475cd8d..39c437c 100644 --- a/test/Transforms/CorrelatedValuePropagation/basic.ll +++ b/test/Transforms/CorrelatedValuePropagation/basic.ll @@ -81,6 +81,26 @@ LessThanOrEqualToTwo: ret i32 0 } +declare i32* @f(i32*) +define void @test5(i32* %x, i32* %y) { +; CHECK: @test5 +entry: + %pre = icmp eq i32* %x, null + br i1 %pre, label %return, label %loop + +loop: + %phi = phi i32* [ %sel, %loop ], [ %x, %entry ] +; CHECK: %phi = phi i32* [ %f, %loop ], [ %x, %entry ] + %f = tail call i32* @f(i32* %phi) + %cmp1 = icmp ne i32* %f, %y + %sel = select i1 %cmp1, i32* %f, i32* null + %cmp2 = icmp eq i32* %sel, null + br i1 %cmp2, label %return, label %loop + +return: + ret void +} + define i32 @switch1(i32 %s) { ; CHECK: @switch1 entry: @@ -105,7 +125,7 @@ negative: ] out: - %p = phi i32 [ 1, %entry ], [ -1, %negative ], [ -1, %negative ], [ -1, %negative ], [ -1, %negative ] + %p = phi i32 [ 1, %entry ], [ -1, %negative ], [ -1, %negative ], [ -1, %negative ], [ -1, %negative ], [ -1, %negative ] ret i32 %p next: |