libcpp uses diagnostic->override_column to give a custom column number to diagnostics. This is taken into account when building the prefix, but it was missing when placing the caret.
Before: /home/manuel/override_column.c:1:4: warning: "/*" within comment [-Wcomment] /* /* */ ^ After: /home/manuel/override_column.c:1:4: warning: "/*" within comment [-Wcomment] /* /* */ ^ Committed as obvious in r218295. 2014-12-03 Manuel López-Ibáñez <m...@gcc.gnu.org> * diagnostic.c (diagnostic_show_locus): Honor override_column when placing the caret. --- gcc/diagnostic.c (revision 218278) +++ gcc/diagnostic.c (working copy) @@ -308,10 +308,12 @@ diagnostic_show_locus (diagnostic_contex || diagnostic->location == context->last_location) return; context->last_location = diagnostic->location; s = expand_location_to_spelling_point (diagnostic->location); + if (diagnostic->override_column) + s.column = diagnostic->override_column; line = location_get_source_line (s, &line_width); if (line == NULL || s.column > line_width) return;