https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93452

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Nathan Sidwell <nat...@gcc.gnu.org>:

https://gcc.gnu.org/g:3d056cbfb3484f4037b34c908b26e1c6776c86b5

commit r10-6294-g3d056cbfb3484f4037b34c908b26e1c6776c86b5
Author: Nathan Sidwell <nat...@acm.org>
Date:   Tue Jan 28 07:58:29 2020 -0800

    preprocessor: Make __has_include a builtin macro [PR93452]

    The clever hack of '#define __has_include __has_include' breaks -dD
    and -fdirectives-only, because that emits definitions.  This turns
    __has_include into a proper builtin macro.  Thus it's never emitted
    via -dD, and because use outside of directive processing is undefined,
    we can just expand it anywhere.

        PR preprocessor/93452
        * internal.h (struct spec_nodes): Drop n__has_include{,_next}.
        * directives.c (lex_macro_node): Don't check __has_include redef.
        * expr.c (eval_token): Drop __has_include eval.
        (parse_has_include): Move to ...
        * macro.c (builtin_has_include): ... here.
        (_cpp_builtin_macro_text): Eval __has_include{,_next}.
        * include/cpplib.h (enum cpp_builtin_type): Add BT_HAS_INCLUDE{,_NEXT}.
        * init.c (builtin_array): Add them.
        (cpp_init_builtins): Drop __has_include{,_next} init here ...
        * pch.c (cpp_read_state): ... and here.
        * traditional.c (enum ls): Drop has_include states ...
        (_cpp_scan_out_logical_line): ... and here.

Reply via email to