Ping [PATCH] c++/42121 - diagnose invalid flexible array members

Tom de Vries Tom_deVries@mentor.com
Wed Dec 16 07:53:00 GMT 2015


On 14/12/15 17:45, Martin Sebor wrote:
> gcc/testsuite/ChangeLog:
> 2015-12-02  Martin Sebor<msebor@redhat.com>
>
> 	c++/42121
> 	c++/68478
> 	c++/68613
> 	c++/68689
> 	c++/68710
> 	* g++.dg/compat/struct-layout-1_generate.c: Avoid generating
> 	further fields after the first flexible array member.
> 	* g++.dg/ext/flexary2.C: Expect a sole flexible array member
> 	to be rejected.  Add a test case exercising zero-length array.
> 	* g++.dg/ext/flexary3.C: Expect a sole flexible array member
> 	to be rejected.
> 	* g++.dg/ext/flexary.h: New file.
> 	* g++.dg/ext/flexary4.C: New file.
> 	* g++.dg/ext/flexary5.C: New file.
> 	* g++.dg/ext/flexary6.C: New file.
> 	* g++.dg/ext/flexary7.C: New file.
> 	* g++.dg/ext/flexary8.C: New file.
> 	* g++.dg/other/dump-ada-spec-2.C: Adjust to reflect flexible
> 	array members.
> 	* g++.dg/parse/pr43765.C: Add a member to make a struct with
> 	a flexible array member valid.  Adjust expected error message.
> 	* g++.dg/torture/pr64280.C: Expect a sole flexible array member
> 	to be rejected.
> 	* g++.dg/torture/pr64312.C: Add a member to make a struct with
> 	a flexible array member valid.
> 	* g++.dg/ubsan/object-size-1.C: Adjust expected diagnostic.
>
> gcc/cp/ChangeLog:
> 2015-12-02  Martin Sebor<msebor@redhat.com>
>
> 	c++/42121
> 	c++/68478
> 	c++/68613
> 	c++/68689
> 	c++/68710
> 	* class.c (walk_subobject_offsets): Avoid assuming type domain
> 	is non-null or has an upper bound.
> 	(layout_class_type): Include type size in error message.
> 	(flexmems_t): New type.
> 	(field_nonempty_p, find_flexarrays, diagnose_flexarrays)
> 	(check_flexarrays): New	functions.
> 	(finish_struct_1): Call check_flexarrays.
> 	* decl.c (compute_array_index_type): Distinguish flexible array
> 	members from zero-length arrays.
> 	(grokdeclarator): Reject flexible array members in unions.  Avoid
> 	rejecting members of incomplete types that are flexible array members.
> 	* error.c (dump_type_suffix): Handle flexible array members with null
> 	upper bound.
> 	* init.c (perform_member_init): Same.
> 	* pt.c (instantiate_class_template_1): Allow flexible array members.
> 	(tsubst): Handle flexible array members with null upper bound.
> 	* typeck2.c (digest_init_r): Warn for initialization of flexible
> 	array members.
> 	(process_init_constructor_record): Handle flexible array members.
>
> gcc/ChangeLog:
> 2015-12-02  Martin Sebor<msebor@redhat.com>
>
> 	c++/42121
> 	* tree-chkp.c (chkp_find_bound_slots_1): Handle flexible array
> 	members.
> 	* tree.c (type_contains_placeholder_1): Avoid assuming type has
> 	a non-null domain or an upper bound to handle flexible array
> 	members.
> 	* varasm.c (array_size_for_constructor): Same.
> 	(output_constructor_regular_field):  Same.
> 	(output_constructor): Set min_index to integer_zero_node rather
> 	than null when a type has no domain to avoid crashing later.

I think this caused PR68932 - FAIL: 
obj-c++.dg/property/at-property-23.mm -fgnu-runtime (internal compiler 
error)

Thanks,
- Tom



More information about the Gcc-patches mailing list