GCC4.8からdiagnostic messageを改良する動きが出ています。
http://gcc.gnu.org/wiki/ClangDiagnosticsComparison
GCC4.6からdiagnostic messageの改良が始まっていましたが、これまでのは例えば
struct S
{
... snip ...
}
int i;
というコードで意味不明なエラーメッセージが出ていたのを、セミコロンが抜けているといった本質的なメッセージに修正するといったものでした。
$ cat hoge.c
struct S
{
}
int i;
$ gcc-4.4 hoge.c
hoge.c:5: error: two or more data types in declaration specifiers
$ gcc-4.6 hoge.c
hoge.c:5:1: error: expected ';', identifier or '(' before 'int'
これがGCC 4.8だとClangに近いメッセージになります。(既にtrunkに入っています)
$ gcc-4.8 hoge.c
hoge.c:5:1: error: expected ';', identifier or '(' before 'int'
int i;
^
まだ指してる場所が変な感じですが、今後もっと改良されていくのではないでしょうか。