http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24985
--- Comment #37 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-04-13 11:50:33 UTC --- I think for Richard's example a nice compromise would be: t.C: In function 'int main()': t.C:5:6: error: no matching function for call to 'f(int)' f(1); ^ note: candidates are: t.C:1:6: note: void f() t.C:1:6: note: candidate expects 0 arguments, 1 provided void f(); void f(int,int); ^ t.C:1:17: note: void f(int, int) t.C:1:17: note: candidate expects 2 arguments, 1 provided void f(); void f(int,int); ^ That includes all the relevant information but removes the duplication caused by printing the same source code and caret after each pair of notes, and the whitespace on the "candidates are" line instead of location info does help make it look less cluttered. GCC diagnostics do tend to look more densely packed than some other compilers. Caret diagnostics change that, but it's not necessarily an improvement if they just space out every line with duplicated snippets of source and carets.