[PATCH] avoid ICE when pretty-printing a VLA with an error bound (PR 85956)

Jakub Jelinek jakub@redhat.com
Thu May 31 13:52:00 GMT 2018


On Thu, May 31, 2018 at 09:14:33AM -0400, Jason Merrill wrote:
> > I came up with the following hack instead (or in addition to),
> > replace those error_mark_node bounds with NULL (i.e. pretend flexible array
> > members) if during OpenMP/OpenACC outlining we've decided not to pass around
> > the bounds artificial decl because nothing really use it.
> >
> > Is this a reasonable hack, or shall we go with Martin's patch + similar
> > change in C++ pretty printer to handle error_mark_node specially and perhaps
> > also handle NULL specially too as the patch does, or both those FE changes
> > and this, something else?
> 
> We generally try to avoid embedded error_mark_node within other trees.
> If the array bound is erroneous, can we replace the whole array type
> with error_mark_node?

The array bound isn't errorneous, just becomes unknown (well, known only in
an outer function), we still need to know it is an array type and that it
has 0 as the low bound.
Instead of replacing it with NULL we in theory could just create another
VAR_DECL and never initialize it, it wouldn't be far from what happens with
some other VLAs - during optimizations it is possible to array bound var is
optimized away.  Just it would be much more work to do it that way.

	Jakub



More information about the Gcc-patches mailing list