[cfe-dev] Premature macro expansion in preprocessor?
Douglas Gregor
dgregor at apple.com
Fri Nov 9 14:46:27 PST 2012
On Nov 9, 2012, at 2:37 PM, Andy Gibbs <andyg1001 at hotmail.co.uk> wrote:
> Hi,
>
> In going through the preprocessor code in clang, I have noted a tendancy towards using Lex(Tok) over LexUnexpandedToken(Tok), for example in the built-in macro implementations.
>
> This means, the following "works":
>
> #define HB __has_builtin
> #define LP (
> #define BT __builtin_trap
> #define RP )
>
> HB LP BT RP // expands to 1
>
> My question is, is this intentional, or an oversight? Is it worth my while going through and changing Lex(...) to LexUnexpandedToken(...) in these cases?
I consider this a bug. The __has_builtin/__has_feature/etc. code should be using LexUnexpandedToken.
- Doug
More information about the cfe-dev
mailing list