diff options
Diffstat (limited to 'test/CodeGen')
-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 |