diff options
author | Evan Cheng <evan.cheng@apple.com> | 2009-07-09 06:53:48 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2009-07-09 06:53:48 +0000 |
commit | 910139f9ca53fc20a680d51ae61bb1e072095141 (patch) | |
tree | e81c343258b9cd4068b9008f1820962721174b85 /test/CodeGen/X86 | |
parent | 1945b7b5c5da39b89c2a2d3083d02e2aabf3cf98 (diff) | |
download | external_llvm-910139f9ca53fc20a680d51ae61bb1e072095141.zip external_llvm-910139f9ca53fc20a680d51ae61bb1e072095141.tar.gz external_llvm-910139f9ca53fc20a680d51ae61bb1e072095141.tar.bz2 |
Targets sometimes assign fixed stack object to spill certain callee-saved
registers based on dynamic conditions. For example, X86 EBP/RBP, when used as
frame register has to be spilled in the first fixed object. It should inform
PEI this so it doesn't get allocated another stack object. Also, it should not
be spilled as other callee-saved registers but rather its spilling and restoring
are being handled by emitPrologue and emitEpilogue. Avoid spilling it twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75116 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r-- | test/CodeGen/X86/2004-02-13-FrameReturnAddress.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/2008-08-31-EH_RETURN32.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/2008-08-31-EH_RETURN64.ll | 2 |
3 files changed, 4 insertions, 2 deletions
diff --git a/test/CodeGen/X86/2004-02-13-FrameReturnAddress.ll b/test/CodeGen/X86/2004-02-13-FrameReturnAddress.ll index f48b1d3..ee3169a 100644 --- a/test/CodeGen/X86/2004-02-13-FrameReturnAddress.ll +++ b/test/CodeGen/X86/2004-02-13-FrameReturnAddress.ll @@ -1,4 +1,6 @@ ; RUN: llvm-as < %s | llc -march=x86 | grep {(%esp} +; RUN: llvm-as < %s | llc -march=x86 | grep {pushl %ebp} | count 1 +; RUN: llvm-as < %s | llc -march=x86 | grep {popl %ebp} | count 1 declare i8* @llvm.returnaddress(i32) diff --git a/test/CodeGen/X86/2008-08-31-EH_RETURN32.ll b/test/CodeGen/X86/2008-08-31-EH_RETURN32.ll index e22b647..8aa330e 100644 --- a/test/CodeGen/X86/2008-08-31-EH_RETURN32.ll +++ b/test/CodeGen/X86/2008-08-31-EH_RETURN32.ll @@ -1,5 +1,5 @@ ; Check that eh_return & unwind_init were properly lowered -; RUN: llvm-as < %s | llc | grep %ebp | count 9 +; RUN: llvm-as < %s | llc | grep %ebp | count 7 ; RUN: llvm-as < %s | llc | grep %ecx | count 5 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64" diff --git a/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll b/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll index 7d01824..80eeba7 100644 --- a/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll +++ b/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll @@ -1,5 +1,5 @@ ; Check that eh_return & unwind_init were properly lowered -; RUN: llvm-as < %s | llc | grep %rbp | count 7 +; RUN: llvm-as < %s | llc | grep %rbp | count 5 ; RUN: llvm-as < %s | llc | grep %rcx | count 3 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" |