https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97947
--- Comment #5 from Peter Bergner <bergner at gcc dot gnu.org> --- (In reply to Marek Polacek from comment #2) > We crash here > > 1143 /* Come here only for aggregates: records, arrays, unions, complex > numbers > 1144 and vectors. */ > 1145 gcc_assert (code == ARRAY_TYPE > 1146 || VECTOR_TYPE_P (type) > 1147 || code == RECORD_TYPE > 1148 || code == UNION_TYPE > 1149 || code == COMPLEX_TYPE); > > because code == OPAQUE_TYPE. Since OPAQUE_TYPE is a type of aggregate, I modified the assert to allow code == OPAQUE_TYPE and that fixes the ICE. I don't feel comfortable sprinkling other OPAQUE_TYPE usage around anywhere else unless we have a test case that shows we need it.