implement fdiagnostics-print-source-range-info
Chris Lattner
clattner@apple.com
Tue Aug 4 15:51:00 GMT 2009
On Aug 4, 2009, at 5:46 AM, Manuel López-Ibáñez wrote:
> The following patch implements printing range info in diagnostics. It
> is a very rough initial version but comments are appreciated. With
> this patch for this code:
>
> void bar(void)
> {
> _Complex float Gamma;
> int *P;
> P = (P-42) + Gamma*4;
> }
>
> we print:
>
> test.c: In function ‘bar’:
> test.c:11:14:11.9-14:11.14-21: error: invalid operands to binary +
> (have ‘int *’ and ‘complex float’)
>
> which is not as good as Clang prints because we do not track the
> boundaries of expressions. On the other hand, the above follows GNU
> coding conventions [*] while Clang doesn't.
>
> [*] http://www.gnu.org/prep/standards/standards.html#Errors
I understand why you want to follow the GNU conventions, but my
understanding is that there *is* no convention for multiple ranges on
one line, which is why we didn't follow it. The clang output looks
like:
$ clang t.c -fdiagnostics-print-source-range-info
t.c:5:13:{5:6-5:12}{5:15-5:22}: error: invalid operands to binary
expression ('int *' and '_Complex float')
P = (P-42) + Gamma*4;
~~~~~~ ^ ~~~~~~~
1 diagnostic generated.
In any case, if you really want to generate a different syntax, please
use a different name for the option (like -fdiagnostics-print-source-
range-info-gnu) so that Clang and GCC can conceivably be compatible
with each other by offering both options. There is already at least
one IDE that uses the clang format (and which already supports GCC),
so it would be nice to not break it.
-Chris
More information about the Gcc-patches
mailing list