Commit 375e3d07 by Alexandre Oliva Committed by Alexandre Oliva

re PR debug/52983 (internal compiler error: in df_uses_record, at df-scan.c:3243)

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.

From-SVN: r190062
parent 08df6c0d
2012-08-01 Alexandre Oliva <aoliva@redhat.com> 2012-08-01 Alexandre Oliva <aoliva@redhat.com>
PR debug/52983 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. * valtrack.h, valtrack.c: New.
* Makefile.in (VALTRACK_H): New. * Makefile.in (VALTRACK_H): New.
(OBJS): Add valtrack.o. (OBJS): Add valtrack.o.
......
...@@ -32,11 +32,11 @@ along with GCC; see the file COPYING3. If not see ...@@ -32,11 +32,11 @@ along with GCC; see the file COPYING3. If not see
/* Replace auto-increment addressing modes with explicit operations to access /* Replace auto-increment addressing modes with explicit operations to access
the same addresses without modifying the corresponding registers. */ the same addresses without modifying the corresponding registers. */
#ifdef AUTO_INC_DEC
static rtx static rtx
cleanup_auto_inc_dec (rtx src, enum machine_mode mem_mode ATTRIBUTE_UNUSED) cleanup_auto_inc_dec (rtx src, enum machine_mode mem_mode ATTRIBUTE_UNUSED)
{ {
rtx x = src; rtx x = src;
#ifdef AUTO_INC_DEC
const RTX_CODE code = GET_CODE (x); const RTX_CODE code = GET_CODE (x);
int i; int i;
const char *fmt; const char *fmt;
...@@ -117,9 +117,12 @@ cleanup_auto_inc_dec (rtx src, enum machine_mode mem_mode ATTRIBUTE_UNUSED) ...@@ -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); = cleanup_auto_inc_dec (XVECEXP (src, i, j), mem_mode);
} }
#else /* !AUTO_INC_DEC */
x = copy_rtx (x);
#endif /* !AUTO_INC_DEC */
return x; return x;
} }
#endif
/* Auxiliary data structure for propagate_for_debug_stmt. */ /* Auxiliary data structure for propagate_for_debug_stmt. */
...@@ -142,11 +145,7 @@ propagate_for_debug_subst (rtx from, const_rtx old_rtx, void *data) ...@@ -142,11 +145,7 @@ propagate_for_debug_subst (rtx from, const_rtx old_rtx, void *data)
if (!pair->adjusted) if (!pair->adjusted)
{ {
pair->adjusted = true; pair->adjusted = true;
#ifdef AUTO_INC_DEC
pair->to = cleanup_auto_inc_dec (pair->to, VOIDmode); 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); pair->to = make_compound_operation (pair->to, SET);
return pair->to; return pair->to;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment