re PR c/39779 (ICE shifting byte to the right with constant > 7FFFFFFF)

PR c/39779
	* c-typeck.c (build_binary_op) <short_shift>: Check that integer
	constant is more than zero.

testsuite/ChangeLog:

	PR c/39779
	* gcc.c-torture/compile/pr39779.c: New test.

From-SVN: r152064
This commit is contained in:
Uros Bizjak 2009-09-23 11:37:25 +02:00
parent bcd4fd64e6
commit e8f8fdbb6c
4 changed files with 20 additions and 3 deletions

View File

@ -1,7 +1,13 @@
2009-09-23 Uros Bizjak <ubizjak@gmail.com>
PR c/39779
* c-typeck.c (build_binary_op) <short_shift>: Check that integer
constant is more than zero.
2009-09-21 Richard Sandiford <rdsandiford@googlemail.com>
* config/mips/mips.c (mips_override_options): Force flag_dwarf2_cfi_asm
to zero.
* config/mips/mips.c (mips_override_options): Force
flag_dwarf2_cfi_asm to zero.
2009-09-21 Kai Tietz <kai.tietz@onevision.com>
@ -9,7 +15,7 @@
xmm register restore.
2009-09-20 Kai Tietz <kai.tietz@onevision.com>
Pascal Obry <obry@adacore.com>
Pascal Obry <obry@adacore.com>
Backport from mainline
* unwind-dw2-fde.c (classify_object_over_fdes):

View File

@ -8490,6 +8490,7 @@ build_binary_op (location_t location, enum tree_code code,
unsigned_arg = TYPE_UNSIGNED (TREE_TYPE (op0));
if (TYPE_PRECISION (TREE_TYPE (arg0)) < TYPE_PRECISION (result_type)
&& tree_int_cst_sgn (op1) > 0
/* We can shorten only if the shift count is less than the
number of bits in the smaller type size. */
&& compare_tree_int (op1, TYPE_PRECISION (TREE_TYPE (arg0))) < 0

View File

@ -1,3 +1,8 @@
2009-09-23 Uros Bizjak <ubizjak@gmail.com>
PR c/39779
* gcc.c-torture/compile/pr39779.c: New test.
2009-09-21 Kai Tietz <kai.tietz@onevision.com>
* gcc.dg/torture/calleesave-sse.c: New.

View File

@ -0,0 +1,5 @@
int test (char v1)
{
v1 >>= 0xdebecced;
return v1;
}