http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54928
--- Comment #3 from Manuel López-Ibáñez <manu at gcc dot gnu.org> 2012-10-15 09:17:28 UTC --- If an internal_error is triggered during macro unwinding, then it will try to macro unwind it, triggering the bug again, and so on. See: prog.cpp:2:45: internal compiler error: in internal_error, at diagnostic.c:1069 I guess the same could happen with the caret code, if some bug may produce an ICE there. I think the best would be to disable both caret diagnostics and macro unwinding for ICEs. I suspect also that it is not easy to trigger, but it is indeed a bug (even if the issue triggering the first ICE is fixed).