diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-04 23:58:26 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-04 23:58:26 +0000 |
commit | 3c347ca592ecd6fad23869592e75ce63e71a7811 (patch) | |
tree | a39862b72529e6b9992873c95bf737f8aca806dd /gcc/reg-notes.def | |
parent | 2c22c7757371a516818998183f743474e160df53 (diff) | |
download | gcc-3c347ca592ecd6fad23869592e75ce63e71a7811.tar.gz |
Describe unwinding for realigned frames explicitly.
We had been relying on some extremely fragile code within
dwarf2out in order to guess what to do with aligned stack
frames, which broke when we decided to perform the stores
to the aligned stack frame via EBP instead of ESP.
Instead, emit the appropriate unwinding instructions from
the backend. This requires adding a new reg-note in order
to describe a register save at an arbitrary address.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162889 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reg-notes.def')
-rw-r--r-- | gcc/reg-notes.def | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/reg-notes.def b/gcc/reg-notes.def index aa2daeac007..f82e7b741a0 100644 --- a/gcc/reg-notes.def +++ b/gcc/reg-notes.def @@ -148,6 +148,12 @@ REG_NOTE (CFA_OFFSET) or the pattern should be simple reg-reg move. */ REG_NOTE (CFA_REGISTER) +/* Attached to insns that are RTX_FRAME_RELATED_P, but are too complex + for FRAME_RELATED_EXPR intuition. This is a save to memory, i.e. will + result in a DW_CFA_expression. The pattern or the insn should be a + store of a register to an arbitrary (non-validated) memory address. */ +REG_NOTE (CFA_EXPRESSION) + /* Attached to insns that are RTX_FRAME_RELATED_P, with the information that this is a restore operation, i.e. will result in DW_CFA_restore or the like. Either the attached rtx, or the destination of the insn's |