diff options
author | Evan Cheng <evan.cheng@apple.com> | 2008-09-26 19:48:35 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2008-09-26 19:48:35 +0000 |
commit | 36a55023c1daae86afedf6e6672c0adad7bbe5ea (patch) | |
tree | c68c32e0d9f0dadb805a6e07fe7e2544b57de222 /test/CodeGen/X86 | |
parent | dbc2e856fce973243d2dfba88d573d3c88f06020 (diff) | |
download | external_llvm-36a55023c1daae86afedf6e6672c0adad7bbe5ea.zip external_llvm-36a55023c1daae86afedf6e6672c0adad7bbe5ea.tar.gz external_llvm-36a55023c1daae86afedf6e6672c0adad7bbe5ea.tar.bz2 |
Fix @llvm.frameaddress codegen. FP elimination optimization should be disabled when frame address is desired. Also add support for depth > 0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56683 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r-- | test/CodeGen/X86/x86-64-frameaddr.ll | 5 | ||||
-rw-r--r-- | test/CodeGen/X86/x86-frameaddr.ll | 9 | ||||
-rw-r--r-- | test/CodeGen/X86/x86-frameaddr2.ll | 9 |
3 files changed, 20 insertions, 3 deletions
diff --git a/test/CodeGen/X86/x86-64-frameaddr.ll b/test/CodeGen/X86/x86-64-frameaddr.ll index 86a238f..8006099 100644 --- a/test/CodeGen/X86/x86-64-frameaddr.ll +++ b/test/CodeGen/X86/x86-64-frameaddr.ll @@ -1,7 +1,6 @@ -; RUN: llvm-as < %s | llc -march=x86-64 | grep {leaq -8(%rsp), %rax} -@llvm.noinline = appending global [1 x i8*] [ i8* bitcast (i64* ()* @stack_end_address to i8*) ], section "llvm.metadata" +; RUN: llvm-as < %s | llc -march=x86-64 | grep movq | grep rbp -define internal i64* @stack_end_address() nounwind { +define i64* @stack_end_address() nounwind { entry: tail call i8* @llvm.frameaddress( i32 0 ) bitcast i8* %0 to i64* diff --git a/test/CodeGen/X86/x86-frameaddr.ll b/test/CodeGen/X86/x86-frameaddr.ll new file mode 100644 index 0000000..b9d6d13 --- /dev/null +++ b/test/CodeGen/X86/x86-frameaddr.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llc -march=x86 | grep mov | grep ebp + +define i8* @t() nounwind { +entry: + %0 = tail call i8* @llvm.frameaddress(i32 0) + ret i8* %0 +} + +declare i8* @llvm.frameaddress(i32) nounwind readnone diff --git a/test/CodeGen/X86/x86-frameaddr2.ll b/test/CodeGen/X86/x86-frameaddr2.ll new file mode 100644 index 0000000..f50ab07 --- /dev/null +++ b/test/CodeGen/X86/x86-frameaddr2.ll @@ -0,0 +1,9 @@ +; RUN: llvm-as < %s | llc -march=x86 | grep mov | count 3 + +define i8* @t() nounwind { +entry: + %0 = tail call i8* @llvm.frameaddress(i32 2) + ret i8* %0 +} + +declare i8* @llvm.frameaddress(i32) nounwind readnone |