diff options
author | Richard Henderson <rth@redhat.com> | 2011-03-22 09:02:59 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2011-03-22 09:02:59 -0700 |
commit | d090a5aa09a5e837bc576dcab89cda8bbcd63d78 (patch) | |
tree | b90c4ecdc21a7addd4ca7397dd066011704138f3 /gcc/dwarf2out.c | |
parent | bdfe906f8c3dcce2fe349c97eb1b9d448b0f495e (diff) | |
download | gcc-d090a5aa09a5e837bc576dcab89cda8bbcd63d78.zip gcc-d090a5aa09a5e837bc576dcab89cda8bbcd63d78.tar.gz gcc-d090a5aa09a5e837bc576dcab89cda8bbcd63d78.tar.bz2 |
* dwarf2out.c (dwarf2out_frame_debug_expr) [rule 11]: Handle post_dec.
From-SVN: r171296
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r-- | gcc/dwarf2out.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 5d64b8d..32ffe1b 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -2239,7 +2239,7 @@ dwarf2out_frame_debug_cfa_restore (rtx reg, const char *label) cfa.base_offset = -cfa_store.offset Rule 11: - (set (mem ({pre_inc,pre_dec} sp:cfa_store.reg)) <reg>) + (set (mem ({pre_inc,pre_dec,post_dec} sp:cfa_store.reg)) <reg>) effects: cfa_store.offset += -/+ mode_size(mem) cfa.offset = cfa_store.offset if cfa.reg == sp cfa.reg = sp @@ -2258,7 +2258,7 @@ dwarf2out_frame_debug_cfa_restore (rtx reg, const char *label) cfa.base_offset = -{cfa_store,cfa_temp}.offset Rule 14: - (set (mem (postinc <reg1>:cfa_temp <const_int>)) <reg2>) + (set (mem (post_inc <reg1>:cfa_temp <const_int>)) <reg2>) effects: cfa.reg = <reg1> cfa.base_offset = -cfa_temp.offset cfa_temp.offset -= mode_size(mem) @@ -2591,6 +2591,7 @@ dwarf2out_frame_debug_expr (rtx expr, const char *label) /* Rule 11 */ case PRE_INC: case PRE_DEC: + case POST_DEC: offset = GET_MODE_SIZE (GET_MODE (dest)); if (GET_CODE (XEXP (dest, 0)) == PRE_INC) offset = -offset; @@ -2615,7 +2616,10 @@ dwarf2out_frame_debug_expr (rtx expr, const char *label) if (cfa.reg == STACK_POINTER_REGNUM) cfa.offset = cfa_store.offset; - offset = -cfa_store.offset; + if (GET_CODE (XEXP (dest, 0)) == POST_DEC) + offset += -cfa_store.offset; + else + offset = -cfa_store.offset; break; /* Rule 12 */ |