aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2012-08-02 00:34:26 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2012-08-02 00:34:26 +0000
commit375e3d0742b13d703bf9d97ca5f5e6770866f603 (patch)
tree400b5c27620a72ea21ab7c9450076d0c1b8ac22e /gcc
parent08df6c0db1dbdeda1e22b16eb83c77ad05f8ba32 (diff)
downloadgcc-375e3d0742b13d703bf9d97ca5f5e6770866f603.zip
gcc-375e3d0742b13d703bf9d97ca5f5e6770866f603.tar.gz
gcc-375e3d0742b13d703bf9d97ca5f5e6770866f603.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/valtrack.c11
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;
}