https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93573
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 48135 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48135&action=edit gcc10-pr93573.patch For the error-recovery ICE, we can just make sure that after errors the type isn't assumed to be VLA. Unfortunately: void bar (); void foo (char a, int b) { union C { int d[b]; char *e; }; bar ((union C) &a); } still ICEs.