aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-03-15 04:10:08 +0000
committerChris Lattner <sabre@nondot.org>2004-03-15 04:10:08 +0000
commit65a88e83e311e49cf0a64ca84e5c28ee9e512744 (patch)
tree50c0fe1b416fc1d6421fe058a090191399e98c0e
parent5b5f7c11d07d1e0d989a82df266c3595b4bd35e9 (diff)
New testcases to test LICM of call instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12414 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/Transforms/LICM/call_sink_const_function.ll16
-rw-r--r--test/Transforms/LICM/call_sink_pure_function.ll14
2 files changed, 30 insertions, 0 deletions
diff --git a/test/Transforms/LICM/call_sink_const_function.ll b/test/Transforms/LICM/call_sink_const_function.ll
new file mode 100644
index 0000000000..92e9244be6
--- /dev/null
+++ b/test/Transforms/LICM/call_sink_const_function.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-as < %s | opt -basicaa -licm | llvm-dis | grep -C1 sin | grep Out:
+declare double %sin(double)
+declare void %foo()
+
+double %test(double %X) {
+ br label %Loop
+
+Loop:
+ call void %foo() ;; Unknown effects!
+
+ %A = call double %sin(double %X) ;; Can still hoist/sink call
+ br bool true, label %Loop, label %Out
+
+Out:
+ ret double %A
+}
diff --git a/test/Transforms/LICM/call_sink_pure_function.ll b/test/Transforms/LICM/call_sink_pure_function.ll
new file mode 100644
index 0000000000..d67436948b
--- /dev/null
+++ b/test/Transforms/LICM/call_sink_pure_function.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | opt -basicaa -licm | llvm-dis | grep -C1 strlen | grep Out:
+declare int %strlen(sbyte*)
+declare void %foo()
+
+int %test(sbyte* %P) {
+ br label %Loop
+
+Loop:
+ %A = call int %strlen(sbyte* %P) ;; Can hoist/sink call
+ br bool false, label %Loop, label %Out
+
+Out:
+ ret int %A
+}