PR middle-end/34856
* tree-cfg.c (verify_expr): Allow all invariant expressions
instead of just constant class ones as reference argument.
* tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
like any other constant.
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
* gcc.c-torture/compile/pr34856.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131696
138bc75d-0d04-0410-961f-
82ee72b054a4
+2008-01-21 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/34856
+ * tree-cfg.c (verify_expr): Allow all invariant expressions
+ instead of just constant class ones as reference argument.
+ * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
+ like any other constant.
+ * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
+
2008-01-21 H.J. Lu <hongjiu.lu@intel.com>
* regmove.c (fixup_match_1): Update call crossed frequencies.
2008-01-21 Richard Guenther <rguenther@suse.de>
+ PR middle-end/34856
+ * gcc.c-torture/compile/pr34856.c: New testcase.
+
+2008-01-21 Richard Guenther <rguenther@suse.de>
+
PR c/34885
* gcc.c-torture/compile/pr34885.c: New testcase.
--- /dev/null
+#undef __vector
+#define __vector __attribute__((vector_size(16) ))
+typedef __vector signed char qword;
+typedef __vector unsigned int VU32;
+extern short g[192 +16];
+void f(qword);
+void f1 (unsigned ctr)
+{
+ VU32 pin;
+ pin = (VU32){(__SIZE_TYPE__)&g[16]};
+ do {
+ f((qword)pin);
+ ctr--;
+ }
+while(ctr);
+}
+
t = TREE_OPERAND (t, 0);
}
- if (!CONSTANT_CLASS_P (t) && !is_gimple_lvalue (t))
+ if (!is_gimple_min_invariant (t) && !is_gimple_lvalue (t))
{
error ("invalid reference prefix");
return t;
case INTEGER_CST:
case REAL_CST:
case FIXED_CST:
+ case CONSTRUCTOR:
return true;
case TARGET_MEM_REF:
case COMPLEX_CST:
case VECTOR_CST:
case REAL_CST:
+ case CONSTRUCTOR:
case VALUE_HANDLE:
case VAR_DECL:
case PARM_DECL: