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