mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-23 12:10:57 +08:00
re PR middle-end/36154 (internal compiler error: in get_constraint_for_component_ref, at tree-ssa-structalias.c:2727)
2008-05-08 Richard Guenther <rguenther@suse.de> PR middle-end/36154 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make sure to create a representative for trailing arrays for PTA. * gcc.c-torture/compile/pr36154.c: New testcase. From-SVN: r135071
This commit is contained in:
parent
b13e7b6cfc
commit
1b674de053
@ -1,3 +1,9 @@
|
||||
2008-05-08 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/36154
|
||||
* tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
|
||||
sure to create a representative for trailing arrays for PTA.
|
||||
|
||||
2008-05-08 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/36172
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-05-08 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/36154
|
||||
* gcc.c-torture/compile/pr36154.c: New testcase.
|
||||
|
||||
2008-05-08 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/36172
|
||||
|
11
gcc/testsuite/gcc.c-torture/compile/pr36154.c
Normal file
11
gcc/testsuite/gcc.c-torture/compile/pr36154.c
Normal file
@ -0,0 +1,11 @@
|
||||
struct eth_test_pkt {
|
||||
unsigned short len;
|
||||
unsigned short ctr;
|
||||
unsigned char packet[];
|
||||
} __attribute__ ((packed));
|
||||
struct eth_test_pkt pkt_unaligned = { .packet = { 0xFC } };
|
||||
int cmd_unaligned(const void *p)
|
||||
{
|
||||
return memcmp(p, pkt_unaligned.packet, 1);
|
||||
}
|
||||
|
@ -4160,11 +4160,15 @@ push_fields_onto_fieldstack (tree type, VEC(fieldoff_s,heap) **fieldstack,
|
||||
(DECL_NONADDRESSABLE_P (field)
|
||||
? addressable_type
|
||||
: TREE_TYPE (field))))
|
||||
&& DECL_SIZE (field)
|
||||
&& !integer_zerop (DECL_SIZE (field)))
|
||||
/* Empty structures may have actual size, like in C++. So
|
||||
&& ((DECL_SIZE (field)
|
||||
&& !integer_zerop (DECL_SIZE (field)))
|
||||
|| (!DECL_SIZE (field)
|
||||
&& TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE)))
|
||||
/* Empty structures may have actual size, like in C++. So
|
||||
see if we didn't push any subfields and the size is
|
||||
nonzero, push the field onto the stack */
|
||||
nonzero, push the field onto the stack. Trailing flexible
|
||||
array members also need a representative to be able to
|
||||
treat taking their address in PTA. */
|
||||
push = true;
|
||||
|
||||
if (push)
|
||||
|
Loading…
x
Reference in New Issue
Block a user