Commit 1b674de0 by Richard Guenther Committed by Richard Biener

re PR middle-end/36154 (internal compiler error: in…

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
parent b13e7b6c
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
* fold-const.c (operand_equal_p): Two objects which types
differ in pointerness are not equal.
......
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
* gcc.c-torture/compile/pr36172.c: New testcase.
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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment