+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
+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
--- /dev/null
+/* { 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;
+}
{
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)
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)))))