New testcases to test LICM of call instructions
authorChris Lattner <sabre@nondot.org>
Mon, 15 Mar 2004 04:10:08 +0000 (04:10 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 15 Mar 2004 04:10:08 +0000 (04:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12414 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/LICM/call_sink_const_function.ll [new file with mode: 0644]
test/Transforms/LICM/call_sink_pure_function.ll [new file with mode: 0644]

diff --git a/test/Transforms/LICM/call_sink_const_function.ll b/test/Transforms/LICM/call_sink_const_function.ll
new file mode 100644 (file)
index 0000000..92e9244
--- /dev/null
@@ -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 (file)
index 0000000..d674369
--- /dev/null
@@ -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
+}