http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39213
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |tromey at redhat dot com --- Comment #12 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2010-11-24 12:35:18 UTC --- add_line_note adds a sentinel note done: *d = '\n'; /* A sentinel note that should never be processed. */ add_line_note (buffer, d + 1, '\n'); buffer->next_line = s + 1; then _cpp_overlay_buffer changes buffer->cur and the test at the beginning of _cpp_process_line_notes if (note->pos > buffer->cur) break; then becomes totally bogus. I guess _cpp_overlay_buffer/_cpp_remove_overlay must temporarily invalidate the notes somehow.