re PR middle-end/45869 (type mismatch in shift expression produces ice with -O3 and -m32)
2010-10-07 Richard Guenther <rguenther@suse.de> PR middle-end/45869 * tree-cfg.c (verify_gimple_assign_binary): Allow vector shifts of pointers. * gcc.dg/torture/pr45869.c: New testcase. From-SVN: r165113
This commit is contained in:
parent
7427ba36d5
commit
65dcb90121
4 changed files with 29 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-10-07 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/45869
|
||||
* tree-cfg.c (verify_gimple_assign_binary): Allow vector shifts
|
||||
of pointers.
|
||||
|
||||
2010-10-07 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_emit_prologue): Use gen_int_mode
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2010-10-07 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/45869
|
||||
* gcc.dg/torture/pr45869.c: New testcase.
|
||||
|
||||
2010-10-07 Iain Sandoe <iains@gcc.gnu.org>
|
||||
|
||||
* objc.dg/set-not-used-1.m: New
|
||||
|
|
15
gcc/testsuite/gcc.dg/torture/pr45869.c
Normal file
15
gcc/testsuite/gcc.dg/torture/pr45869.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* { dg-do compile } */
|
||||
|
||||
char *
|
||||
foo (unsigned int count, void **list)
|
||||
{
|
||||
char *minaddr = (char *) list[0];
|
||||
unsigned int i; /* NOTE: change of type to "int" eliminates the ICE */
|
||||
for (i = 1; i < count; i++)
|
||||
{
|
||||
char *addr = (char *) list[i];
|
||||
if (addr < minaddr)
|
||||
minaddr = addr;
|
||||
}
|
||||
return minaddr;
|
||||
}
|
|
@ -3422,6 +3422,7 @@ verify_gimple_assign_binary (gimple stmt)
|
|||
{
|
||||
if (TREE_CODE (rhs1_type) != VECTOR_TYPE
|
||||
|| !(INTEGRAL_TYPE_P (TREE_TYPE (rhs1_type))
|
||||
|| POINTER_TYPE_P (TREE_TYPE (rhs1_type))
|
||||
|| FIXED_POINT_TYPE_P (TREE_TYPE (rhs1_type))
|
||||
|| SCALAR_FLOAT_TYPE_P (TREE_TYPE (rhs1_type)))
|
||||
|| (!INTEGRAL_TYPE_P (rhs2_type)
|
||||
|
@ -3435,9 +3436,9 @@ verify_gimple_assign_binary (gimple stmt)
|
|||
debug_generic_expr (rhs2_type);
|
||||
return true;
|
||||
}
|
||||
/* For shifting a vector of floating point components we
|
||||
/* For shifting a vector of non-integral components we
|
||||
only allow shifting by a constant multiple of the element size. */
|
||||
if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (rhs1_type))
|
||||
if (!INTEGRAL_TYPE_P (TREE_TYPE (rhs1_type))
|
||||
&& (TREE_CODE (rhs2) != INTEGER_CST
|
||||
|| !div_if_zero_remainder (EXACT_DIV_EXPR, rhs2,
|
||||
TYPE_SIZE (TREE_TYPE (rhs1_type)))))
|
||||
|
|
Loading…
Add table
Reference in a new issue