It seems I made an off-by-one error in my last patch for multiple locations. This only affected the position of the caret character, which we don't test (since the testsuite uses -fno-diagnostics-show-caret). Fixed thusly and added a comment to remind me and others that locations start at 1, but we still want to start at 0 (but not start at 0 and add an extra space like I did before).
Cheers, Manuel. Index: ChangeLog =================================================================== --- ChangeLog (revision 223445) +++ ChangeLog (working copy) @@ -1,3 +1,8 @@ +2015-05-20 Manuel López-Ibáñez <m...@gcc.gnu.org> + + * diagnostic.c (diagnostic_print_caret_line): Fix off-by-one error + when printing the caret character. + 2015-05-20 Marek Polacek <pola...@redhat.com> * cfgexpand.c (expand_debug_expr): Use UNARY_CLASS_P. Index: diagnostic.c =================================================================== --- diagnostic.c (revision 223445) +++ diagnostic.c (working copy) @@ -420,7 +420,8 @@ int caret_min = cmin == xloc1.column ? caret1 : caret2; int caret_max = cmin == xloc1.column ? caret2 : caret1; - pp_space (context->printer); + /* cmin is >= 1, but we indent with an extra space at the start like + we did above. */ int i; for (i = 0; i < cmin; i++) pp_space (context->printer);