From e264f62ca09a8f65c87a46d562a4d0f9ec5d457e Mon Sep 17 00:00:00 2001 From: Shih-wei Liao Date: Wed, 10 Feb 2010 11:10:31 -0800 Subject: Check in LLVM r95781. --- test/Transforms/MergeFunc/dg.exp | 3 +++ test/Transforms/MergeFunc/fold-weak.ll | 13 ++++++++++++ test/Transforms/MergeFunc/phi-speculation1.ll | 29 +++++++++++++++++++++++++++ test/Transforms/MergeFunc/phi-speculation2.ll | 29 +++++++++++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 test/Transforms/MergeFunc/dg.exp create mode 100644 test/Transforms/MergeFunc/fold-weak.ll create mode 100644 test/Transforms/MergeFunc/phi-speculation1.ll create mode 100644 test/Transforms/MergeFunc/phi-speculation2.ll (limited to 'test/Transforms/MergeFunc') diff --git a/test/Transforms/MergeFunc/dg.exp b/test/Transforms/MergeFunc/dg.exp new file mode 100644 index 0000000..f200589 --- /dev/null +++ b/test/Transforms/MergeFunc/dg.exp @@ -0,0 +1,3 @@ +load_lib llvm.exp + +RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]] diff --git a/test/Transforms/MergeFunc/fold-weak.ll b/test/Transforms/MergeFunc/fold-weak.ll new file mode 100644 index 0000000..e124731 --- /dev/null +++ b/test/Transforms/MergeFunc/fold-weak.ll @@ -0,0 +1,13 @@ +; RUN: opt < %s -mergefunc -S > %t +; RUN: grep {define weak} %t | count 2 +; RUN: grep {call} %t | count 2 + +define weak i32 @sum(i32 %x, i32 %y) { + %sum = add i32 %x, %y + ret i32 %sum +} + +define weak i32 @add(i32 %x, i32 %y) { + %sum = add i32 %x, %y + ret i32 %sum +} diff --git a/test/Transforms/MergeFunc/phi-speculation1.ll b/test/Transforms/MergeFunc/phi-speculation1.ll new file mode 100644 index 0000000..7b2a2fe --- /dev/null +++ b/test/Transforms/MergeFunc/phi-speculation1.ll @@ -0,0 +1,29 @@ +; RUN: opt < %s -mergefunc -stats -disable-output |& 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 +} diff --git a/test/Transforms/MergeFunc/phi-speculation2.ll b/test/Transforms/MergeFunc/phi-speculation2.ll new file mode 100644 index 0000000..f080191 --- /dev/null +++ b/test/Transforms/MergeFunc/phi-speculation2.ll @@ -0,0 +1,29 @@ +; RUN: opt < %s -mergefunc -stats -disable-output |& 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 %C, 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 +} -- cgit v1.1