re PR middle-end/37713 (ice for legal code with -O3 on 20080926)
2008-10-02 Richard Guenther <rguenther@suse.de> PR middle-end/37713 * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE and VECTOR_TYPE recurse with useless_type_conversion_p which properly handles void pointer conversion. * gcc.c-torture/compile/pr37713.c: New testcase. From-SVN: r140832
This commit is contained in:
parent
068450d045
commit
0d17b70a0a
@ -1,3 +1,10 @@
|
||||
2008-10-02 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/37713
|
||||
* tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
|
||||
and VECTOR_TYPE recurse with useless_type_conversion_p which
|
||||
properly handles void pointer conversion.
|
||||
|
||||
2008-10-02 Danny Smith <dannysmith@users.sourceforge.net>
|
||||
|
||||
PR target/37528
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-10-02 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/37713
|
||||
* gcc.c-torture/compile/pr37713.c: New testcase.
|
||||
|
||||
2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com>
|
||||
|
||||
* gcc.target/powerpc/altivec-cell-1.c: New test.
|
||||
|
10
gcc/testsuite/gcc.c-torture/compile/pr37713.c
Normal file
10
gcc/testsuite/gcc.c-torture/compile/pr37713.c
Normal file
@ -0,0 +1,10 @@
|
||||
void add_opush(void)
|
||||
{
|
||||
unsigned char formats[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0xff };
|
||||
void *dtds[sizeof(formats)];
|
||||
unsigned int i;
|
||||
unsigned char dtd = 0x08;
|
||||
for (i = 0; i < sizeof(formats); i++)
|
||||
dtds[i] = &dtd;
|
||||
sdp_seq_alloc(dtds);
|
||||
}
|
@ -1159,15 +1159,15 @@ useless_type_conversion_p_1 (tree outer_type, tree inner_type)
|
||||
/* Recurse for complex types. */
|
||||
else if (TREE_CODE (inner_type) == COMPLEX_TYPE
|
||||
&& TREE_CODE (outer_type) == COMPLEX_TYPE)
|
||||
return useless_type_conversion_p_1 (TREE_TYPE (outer_type),
|
||||
TREE_TYPE (inner_type));
|
||||
return useless_type_conversion_p (TREE_TYPE (outer_type),
|
||||
TREE_TYPE (inner_type));
|
||||
|
||||
/* Recurse for vector types with the same number of subparts. */
|
||||
else if (TREE_CODE (inner_type) == VECTOR_TYPE
|
||||
&& TREE_CODE (outer_type) == VECTOR_TYPE
|
||||
&& TYPE_PRECISION (inner_type) == TYPE_PRECISION (outer_type))
|
||||
return useless_type_conversion_p_1 (TREE_TYPE (outer_type),
|
||||
TREE_TYPE (inner_type));
|
||||
return useless_type_conversion_p (TREE_TYPE (outer_type),
|
||||
TREE_TYPE (inner_type));
|
||||
|
||||
/* For aggregates we may need to fall back to structural equality
|
||||
checks. */
|
||||
|
Loading…
Reference in New Issue
Block a user