aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-03-09 19:51:44 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2010-03-09 19:51:44 +0100
commit3b7998ea24e0b9aa47b9d2c692852a8f02ecdb2f (patch)
tree5a13a8643040182d963eef59d0e88cd49b096e64
parentbded9b70876ea62f78d51f623e511f33fb2d9ff5 (diff)
downloadgcc-3b7998ea24e0b9aa47b9d2c692852a8f02ecdb2f.zip
gcc-3b7998ea24e0b9aa47b9d2c692852a8f02ecdb2f.tar.gz
gcc-3b7998ea24e0b9aa47b9d2c692852a8f02ecdb2f.tar.bz2
re PR debug/43304 (ICE on vmx/fft.c and vmx/7-01{,a}.c)
PR debug/43304 * var-tracking.c (vt_expand_loc_callback) <case SUBREG>: If dummy, call cselib_dummy_expand_value_rtx_cb instead of cselib_expand_value_rtx_cb. From-SVN: r157315
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/var-tracking.c13
2 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e348458..4b68db5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,9 @@
-2010-03-08 Jakub Jelinek <jakub@redhat.com>
+2010-03-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/43304
+ * var-tracking.c (vt_expand_loc_callback) <case SUBREG>: If dummy,
+ call cselib_dummy_expand_value_rtx_cb instead of
+ cselib_expand_value_rtx_cb.
PR debug/43293
* config/i386/t-i386 (i386.o): Depend on debug.h and dwarf2out.h.
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 0cd5dfc..378bb75 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -6560,6 +6560,16 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
switch (GET_CODE (x))
{
case SUBREG:
+ if (dummy)
+ {
+ if (cselib_dummy_expand_value_rtx_cb (SUBREG_REG (x), regs,
+ max_depth - 1,
+ vt_expand_loc_callback, data))
+ return pc_rtx;
+ else
+ return NULL;
+ }
+
subreg = cselib_expand_value_rtx_cb (SUBREG_REG (x), regs,
max_depth - 1,
vt_expand_loc_callback, data);
@@ -6567,9 +6577,6 @@ vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
if (!subreg)
return NULL;
- if (dummy)
- return pc_rtx;
-
result = simplify_gen_subreg (GET_MODE (x), subreg,
GET_MODE (SUBREG_REG (x)),
SUBREG_BYTE (x));