diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-10-10 12:40:35 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-10-10 12:40:35 +0200 |
commit | 0365ba7cd0e4c3800a7b3249455c7d9620325949 (patch) | |
tree | 66d7a0dd67554633acdf73f382f98b92c700e5a0 /gcc | |
parent | f739e97a835efea413749d5505cd64fe1d0ad922 (diff) | |
download | gcc-0365ba7cd0e4c3800a7b3249455c7d9620325949.zip gcc-0365ba7cd0e4c3800a7b3249455c7d9620325949.tar.gz gcc-0365ba7cd0e4c3800a7b3249455c7d9620325949.tar.bz2 |
re PR middle-end/54862 (error: comparison between signed and unsigned integer expressions in simplify-rtx.c)
PR middle-end/54862
* simplify-rtx.c (simplify_truncation): Compare UINTVAL instead of
INTVAL of second argument with precision resp. op_precision.
From-SVN: r192302
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/simplify-rtx.c | 9 |
2 files changed, 10 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ab78559..72e19fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-10 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/54862 + * simplify-rtx.c (simplify_truncation): Compare UINTVAL instead of + INTVAL of second argument with precision resp. op_precision. + 2012-10-10 Dodji Seketeli <dodji@redhat.com> PR middle-end/54860 - Make sure attributes hash table is created diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index 95cf186..cb63b80 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -668,7 +668,7 @@ simplify_truncation (enum machine_mode mode, rtx op, && CONST_INT_P (XEXP (op, 1)) && GET_CODE (XEXP (op, 0)) == SIGN_EXTEND && GET_MODE (XEXP (XEXP (op, 0), 0)) == mode - && INTVAL (XEXP (op, 1)) < precision) + && UINTVAL (XEXP (op, 1)) < precision) return simplify_gen_binary (ASHIFTRT, mode, XEXP (XEXP (op, 0), 0), XEXP (op, 1)); @@ -680,7 +680,7 @@ simplify_truncation (enum machine_mode mode, rtx op, && CONST_INT_P (XEXP (op, 1)) && GET_CODE (XEXP (op, 0)) == ZERO_EXTEND && GET_MODE (XEXP (XEXP (op, 0), 0)) == mode - && INTVAL (XEXP (op, 1)) < precision) + && UINTVAL (XEXP (op, 1)) < precision) return simplify_gen_binary (LSHIFTRT, mode, XEXP (XEXP (op, 0), 0), XEXP (op, 1)); @@ -692,7 +692,7 @@ simplify_truncation (enum machine_mode mode, rtx op, && (GET_CODE (XEXP (op, 0)) == ZERO_EXTEND || GET_CODE (XEXP (op, 0)) == SIGN_EXTEND) && GET_MODE (XEXP (XEXP (op, 0), 0)) == mode - && INTVAL (XEXP (op, 1)) < precision) + && UINTVAL (XEXP (op, 1)) < precision) return simplify_gen_binary (ASHIFT, mode, XEXP (XEXP (op, 0), 0), XEXP (op, 1)); @@ -705,8 +705,7 @@ simplify_truncation (enum machine_mode mode, rtx op, && 2 * precision <= op_precision && CONST_INT_P (XEXP (op, 1)) && (INTVAL (XEXP (op, 1)) & (precision - 1)) == 0 - && INTVAL (XEXP (op, 1)) >= 0 - && INTVAL (XEXP (op, 1)) < op_precision) + && UINTVAL (XEXP (op, 1)) < op_precision) { int byte = subreg_lowpart_offset (mode, op_mode); int shifted_bytes = INTVAL (XEXP (op, 1)) / BITS_PER_UNIT; |