diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-03-09 19:51:44 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-03-09 19:51:44 +0100 |
commit | 3b7998ea24e0b9aa47b9d2c692852a8f02ecdb2f (patch) | |
tree | 5a13a8643040182d963eef59d0e88cd49b096e64 /gcc/var-tracking.c | |
parent | bded9b70876ea62f78d51f623e511f33fb2d9ff5 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc/var-tracking.c')
-rw-r--r-- | gcc/var-tracking.c | 13 |
1 files changed, 10 insertions, 3 deletions
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)); |