On Wed, Feb 17, 2021 at 01:46:37PM -0500, Nathan Sidwell wrote: > I'd missed that macros were allocated from GC storage, and that they can > become unattached from an identifier, and therefore not GC-reachable. > And then bad things happen. Fixed by making the module machinery's > reference vector a GC root. > > PR c++/99023 > gcc/cp/ > * module.cc (struct macro_export): Add GTY markers. > (macro_exports): Likewise, us a va_gc Vector. > gcc/testsuite/ > * g++.dg/modules/pr99023_a.H: New. > * g++.dg/modules/pr99023_b.H: New.
I must say I don't know much about modules, but seeing the second set of > 100KB g++.dg/modules/ testcases, I need to wonder, do we really need that large tests? Can't cvise (or creduce or multi-delta) be used to minimize that, use a checking script that uses unfixed and fixed compilers and minimizes into something that is accepted without errors by the fixed compiler and still ICEs with the unfixed one? Jakub