https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117381
--- Comment #20 from Richard Biener <rguenth at gcc dot gnu.org> ---
It might be possible to use C++ to hide awkwardness of dynamic allocation and
still support a cheap stack-based allocation for small -fmax-identifier-length.
You can use
auto_vec<char, 63> buf;
buf.reserve_exact (max_identifier_length);
char *the_buf = &buf[0];
for example, but of course I'd simply add a wrapping
class gfc_symbol_buffer
{
...
};
so you can instead do
gfc_symbol_buffer the_buf;
and have it behave like a char the_buf[GFC_MAX_SYMBOL_LEN] declaration.
The auto_vec sequence above uses a stack allocation for up to 63 length
and otherwise a heap allocation (and makes sure to free the allocation
when the buffer goes out of scope).