aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2011-03-22 09:02:59 -0700
committerRichard Henderson <rth@gcc.gnu.org>2011-03-22 09:02:59 -0700
commitd090a5aa09a5e837bc576dcab89cda8bbcd63d78 (patch)
treeb90c4ecdc21a7addd4ca7397dd066011704138f3 /gcc/dwarf2out.c
parentbdfe906f8c3dcce2fe349c97eb1b9d448b0f495e (diff)
downloadgcc-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.c10
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 */