http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56524
--- Comment #3 from Aldy Hernandez <aldyh at gcc dot gnu.org> 2013-03-06 17:54:41 UTC --- This is ICEing here: /* ?? If this fails, we should temporarily restore the default target first (set_cfun (NULL) ??), do the rest of this function, and then restore it. */ gcc_assert (this_target_optabs == &default_target_optabs); In this case, this_target_optabs is being set in: mips_set_mips16_mode() -> save_target_globals_default_opts() -> save_target_globals() -> restore_target_globals() ... this_target_optabs = g->optabs; We can't do exactly as the comment above the ICE says, since cfun isn't even set at this point (we are being called from the parser).