OK.

On Sun, Jan 14, 2018 at 6:47 PM, Martin Sebor <mse...@gmail.com> wrote:
> The attached patch fixes PR c++/83588 - struct with two flexible
> arrays causes an internal compiler error.  The ICE is caused by
> the same assertion in varasm.c that has led to other similar
> reports in the past:
>
>   /* Given a non-empty initialization, this field had better
>      be last.  Given a flexible array member, the next field
>      on the chain is a TYPE_DECL of the enclosing struct.  */
>   const_tree next = DECL_CHAIN (local->field);
>   gcc_assert (!fieldsize || !next || TREE_CODE (next) != FIELD_DECL);
>
> The fix is simply to also detect when a class defines more than
> one flexible array member and treat the subsequent array as any
> other member, and reject such class definitions to make sure they
> never reach the assertion above.
>
> Martin

Reply via email to