diff options
author | Roger Sayle <roger@eyesopen.com> | 2006-02-24 19:29:34 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2006-02-24 19:29:34 +0000 |
commit | 676cb929fcac50fbe3bd71de734a8f40b5b2ea10 (patch) | |
tree | 5be6340878f5c9dd2013148f3be610f53e93c498 | |
parent | ffe7d885e0372313c064da69a2f6cee229aa0448 (diff) | |
download | gcc-676cb929fcac50fbe3bd71de734a8f40b5b2ea10.zip gcc-676cb929fcac50fbe3bd71de734a8f40b5b2ea10.tar.gz gcc-676cb929fcac50fbe3bd71de734a8f40b5b2ea10.tar.bz2 |
re PR middle-end/24952 (ICE: RTL check: expected code 'set' or 'clobber', have 'unspec' in try_combine, at combine.c:2898)
PR middle-end/24952
* combine.c (try_combine): Explicitly check whether GET_CODE is
a SET or a CLOBBER, instead on checking that it isn't a USE.
From-SVN: r111425
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/combine.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e1ab542..0fef1ea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2006-02-24 Roger Sayle <roger@eyesopen.com> + PR middle-end/24952 + * combine.c (try_combine): Explicitly check whether GET_CODE is + a SET or a CLOBBER, instead on checking that it isn't a USE. + +2006-02-24 Roger Sayle <roger@eyesopen.com> + * fold-const.c (fold_comparison): New subroutine of fold_binary containing transformations common to both the equality and ordering relational operators, factored out of fold_binary. diff --git a/gcc/combine.c b/gcc/combine.c index 9240b32..d6f1079 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -3123,7 +3123,8 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) if (i3_subst_into_i2) { for (i = 0; i < XVECLEN (PATTERN (i2), 0); i++) - if (GET_CODE (XVECEXP (PATTERN (i2), 0, i)) != USE + if ((GET_CODE (XVECEXP (PATTERN (i2), 0, i)) == SET + || GET_CODE (XVECEXP (PATTERN (i2), 0, i)) == CLOBBER) && REG_P (SET_DEST (XVECEXP (PATTERN (i2), 0, i))) && SET_DEST (XVECEXP (PATTERN (i2), 0, i)) != i2dest && ! find_reg_note (i2, REG_UNUSED, |