https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109700
--- Comment #6 from James Legg <jlegg at feralinteractive dot com> --- Yes, declaring bulitin functions is bad, but I didn't expect the ICE. It wasn't done intentionally. glibc's alloca.h defines a alloca(s) macro as __builtin_alloca(s). I had some code defining _alloca as alloca for compatibility with code written to use MSC's _alloca function, and some code intended to build with MSC that attempted to declare _alloca instead of including the appropriate header, but due to macro expansion it was actually declaring __builtin_alloca.