new testcases for the stackrestore instcombine optimizations
authorChris Lattner <sabre@nondot.org>
Fri, 13 Jan 2006 22:01:47 +0000 (22:01 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 13 Jan 2006 22:01:47 +0000 (22:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25297 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/InstCombine/stacksaverestore.ll [new file with mode: 0644]

diff --git a/test/Transforms/InstCombine/stacksaverestore.ll b/test/Transforms/InstCombine/stacksaverestore.ll
new file mode 100644 (file)
index 0000000..c41a1b1
--- /dev/null
@@ -0,0 +1,20 @@
+; RUN: llvm-as < %s | opt -instcombine -disable-output &&
+; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep call
+
+;; Test that llvm.stackrestore is removed when possible.
+
+int* %test1(uint %P) {
+        %tmp = call sbyte* %llvm.stacksave()
+        call void %llvm.stackrestore(sbyte* %tmp) ;; not restoring anything
+       %A = alloca int, uint %P
+        ret int* %A
+}
+
+void %test2(sbyte* %X) {
+       call void %llvm.stackrestore(sbyte* %X)  ;; no allocas before return.
+       ret void
+}
+
+declare sbyte* %llvm.stacksave()
+
+declare void %llvm.stackrestore(sbyte*)