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>
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.
......
......@@ -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;
}
......
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