diff options
Diffstat (limited to 'test/Transforms/MergeFunc/phi-speculation1.ll')
-rw-r--r-- | test/Transforms/MergeFunc/phi-speculation1.ll | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/Transforms/MergeFunc/phi-speculation1.ll b/test/Transforms/MergeFunc/phi-speculation1.ll new file mode 100644 index 0000000000..548e5102be --- /dev/null +++ b/test/Transforms/MergeFunc/phi-speculation1.ll @@ -0,0 +1,30 @@ +; REQUIRES: asserts +; RUN: opt < %s -mergefunc -stats -disable-output 2>&1 | not grep "functions merged" + +define i32 @foo1(i32 %x) { +entry: + %A = add i32 %x, 1 + %B = call i32 @foo1(i32 %A) + br label %loop +loop: + %C = phi i32 [%B, %entry], [%D, %loop] + %D = add i32 %x, 2 + %E = icmp ugt i32 %D, 10000 + br i1 %E, label %loopexit, label %loop +loopexit: + ret i32 %D +} + +define i32 @foo2(i32 %x) { +entry: + %0 = add i32 %x, 1 + %1 = call i32 @foo2(i32 %0) + br label %loop +loop: + %2 = phi i32 [%1, %entry], [%3, %loop] + %3 = add i32 %2, 2 + %4 = icmp ugt i32 %3, 10000 + br i1 %4, label %loopexit, label %loop +loopexit: + ret i32 %3 +} |