https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69558
--- Comment #9 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to Manuel López-Ibáñez from comment #8) > then the second one doesn't work. I cannot think a way to make the above > work properly without breaking something else. Actually, the history check uses: if (linemap_location_before_p (line_table, context->classification_history[i].location, location)) and that seems quite smart about how to compare things. Perhaps if we force input_location to point to foo, things will work as expected. In any case, no for GCC 6 and there are probably many cases where this won't work because we don't have a location for 'foo' ( e.g., C(1) ).