diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/valtrack.c | 11 |
2 files changed, 12 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ea9a7b1..631f2ee 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,13 @@ 2012-08-01 Alexandre Oliva <aoliva@redhat.com> PR debug/52983 + * valtrack.c (cleanup_auto_inc_dec): Implement unconditionally, + falling back to copy_rtx on non-autoinc machines. + (propagate_for_debug_subst): Always use cleanup_auto_inc_dec. + +2012-08-01 Alexandre Oliva <aoliva@redhat.com> + + PR debug/52983 * valtrack.h, valtrack.c: New. * Makefile.in (VALTRACK_H): New. (OBJS): Add valtrack.o. diff --git a/gcc/valtrack.c b/gcc/valtrack.c index 3e03599..9119cb9 100644 --- a/gcc/valtrack.c +++ b/gcc/valtrack.c @@ -32,11 +32,11 @@ along with GCC; see the file COPYING3. If not see /* Replace auto-increment addressing modes with explicit operations to access the same addresses without modifying the corresponding registers. */ -#ifdef AUTO_INC_DEC static rtx cleanup_auto_inc_dec (rtx src, enum machine_mode mem_mode ATTRIBUTE_UNUSED) { rtx x = src; +#ifdef AUTO_INC_DEC const RTX_CODE code = GET_CODE (x); int i; const char *fmt; @@ -117,9 +117,12 @@ cleanup_auto_inc_dec (rtx src, enum machine_mode mem_mode ATTRIBUTE_UNUSED) = cleanup_auto_inc_dec (XVECEXP (src, i, j), mem_mode); } +#else /* !AUTO_INC_DEC */ + x = copy_rtx (x); +#endif /* !AUTO_INC_DEC */ + return x; } -#endif /* Auxiliary data structure for propagate_for_debug_stmt. */ @@ -142,11 +145,7 @@ propagate_for_debug_subst (rtx from, const_rtx old_rtx, void *data) if (!pair->adjusted) { pair->adjusted = true; -#ifdef AUTO_INC_DEC pair->to = cleanup_auto_inc_dec (pair->to, VOIDmode); -#else - pair->to = copy_rtx (pair->to); -#endif pair->to = make_compound_operation (pair->to, SET); return pair->to; } |