mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 15:11:08 +08:00
re PR target/34856 (ICE with some constant vectors)
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. * gcc.c-torture/compile/pr34856.c: New testcase. From-SVN: r131696
This commit is contained in:
parent
94c54fea1a
commit
bb0c55f6ee
@ -1,3 +1,12 @@
|
||||
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.
|
||||
|
@ -1,3 +1,8 @@
|
||||
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
|
||||
|
17
gcc/testsuite/gcc.c-torture/compile/pr34856.c
Normal file
17
gcc/testsuite/gcc.c-torture/compile/pr34856.c
Normal file
@ -0,0 +1,17 @@
|
||||
#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);
|
||||
}
|
||||
|
@ -3304,7 +3304,7 @@ verify_expr (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
|
||||
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;
|
||||
|
@ -205,6 +205,7 @@ for_each_index (tree *addr_p, bool (*cbck) (tree, tree *, void *), void *data)
|
||||
case INTEGER_CST:
|
||||
case REAL_CST:
|
||||
case FIXED_CST:
|
||||
case CONSTRUCTOR:
|
||||
return true;
|
||||
|
||||
case TARGET_MEM_REF:
|
||||
|
@ -552,6 +552,7 @@ copy_reference_ops_from_ref (tree ref, VEC(vn_reference_op_s, heap) **result)
|
||||
case COMPLEX_CST:
|
||||
case VECTOR_CST:
|
||||
case REAL_CST:
|
||||
case CONSTRUCTOR:
|
||||
case VALUE_HANDLE:
|
||||
case VAR_DECL:
|
||||
case PARM_DECL:
|
||||
|
Loading…
x
Reference in New Issue
Block a user