diff options
author | Bill Wendling <isanbard@gmail.com> | 2009-07-07 21:53:07 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2009-07-07 21:53:07 +0000 |
commit | 66c6324fcf0db0f834e34dbb0e82a5038672eda3 (patch) | |
tree | 779223b3310303927b7dc14ba077e7d1de21f435 /lib/Target/X86/X86RegisterInfo.h | |
parent | 62e744b555d48b4c8b9023739fef8ae403bb20e8 (diff) | |
download | llvm-66c6324fcf0db0f834e34dbb0e82a5038672eda3.tar.gz llvm-66c6324fcf0db0f834e34dbb0e82a5038672eda3.tar.bz2 llvm-66c6324fcf0db0f834e34dbb0e82a5038672eda3.tar.xz |
DWARF requires frame moves be specified at specific times. If you have a
prologue like this:
__Z3fooi:
Leh_func_begin1:
LBB1_0: ## entry
pushl %ebp
Llabel1:
movl %esp, %ebp
Llabel2:
pushl %esi
Llabel3:
subl $20, %esp
call "L1$pb"
"L1$pb":
popl %esi
The "pushl %ebp" needs a table entry specifying the offset. The "movl %esp,
%ebp" makes %ebp the new stack frame register, so that needs to be specified in
DWARF. And "pushl %esi" saves the callee-saved %esi register, which also needs
to be specified in DWARF.
Before, all of this logic was in one method. This didn't work too well, because
as you can see there are multiple FDE line entries that need to be created.
This fix creates the "MachineMove" objects directly when they're needed; instead
of waiting until the end, and losing information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74952 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86RegisterInfo.h')
-rw-r--r-- | lib/Target/X86/X86RegisterInfo.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/lib/Target/X86/X86RegisterInfo.h b/lib/Target/X86/X86RegisterInfo.h index 33b9f5edc7..63c8d801d0 100644 --- a/lib/Target/X86/X86RegisterInfo.h +++ b/lib/Target/X86/X86RegisterInfo.h @@ -136,12 +136,10 @@ public: void processFunctionBeforeCalleeSavedScan(MachineFunction &MF, RegScavenger *RS = NULL) const; + void emitCalleeSavedFrameMoves(MachineFunction &MF, unsigned LabelId) const; void emitPrologue(MachineFunction &MF) const; void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; - void emitFrameMoves(MachineFunction &MF, - unsigned FrameLabelId, unsigned ReadyLabelId) const; - // Debug information queries. unsigned getRARegister() const; unsigned getFrameRegister(MachineFunction &MF) const; |