[cfe-dev] Problems in __builtin_offsetof locations
John McCall
rjmccall at apple.com
Wed Nov 4 02:41:05 PST 2009
Abramo Bagnara wrote:
> The attached C source show two different problems:
>
> $ llvm_new/Debug/bin/clang-cc -W -Wall bug_clang2.c
> bug_clang2.c:11:7: error: too many arguments to function call
> fun(333);
> ~~~ ^~~
> bug_clang2.c:12:7: error: too many arguments to function call
> fun(__builtin_offsetof(struct s, g));
> ~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> bug_clang2.c:13:7: error: too many arguments to function call
> fun(__builtin_offsetof(struct s, f));
> ~~~ ^
> 3 diagnostics generated.
>
>
> 1) As seen in diagnostic for line 12, the end location of
> __builtin_offsetof is not the right paren but the end of location of
> subexpression (like in all other prefix unary operators). This is wrong
> for __builtin_offsetof.
>
Good catch. This seems to be a fault in what Sema gets passed from the
parser.
> 2) Worse in diagnostic for line 13, the end location of
> __builtin_offsetof is invalid (here I don't fully understand how this
> happens).
>
Also a good catch. This is because we're building an anonymous
struct/union member access, which ends up being a different code path.
Please file these as a bug. Patches are welcome, or else I'll look at
it closer in the morning and see if it admits a quick fix.
John.
More information about the cfe-dev
mailing list