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

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:e235031d490e8ed2aa0bc229694975493fd58977

commit r10-6633-ge235031d490e8ed2aa0bc229694975493fd58977
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Feb 14 09:04:14 2020 +0100

    c++: Partially implement P1042R1: __VA_OPT__ wording clarifications
[PR92319]

    I've noticed we claim in cxx-status.html that we implement P1042R1,
    but it seems we don't implement any of the changes from there.
    The following patch implements just the change that __VA_OPT__ determines
    whether to expand to nothing or the enclosed tokens no longer based on
    whether there were any tokens passed to __VA_ARGS__, but whether
__VA_ARGS__
    expands to any tokens (from testing apparently it has to be non-CPP_PADDING
    tokens).

    I'm afraid I'm completely lost about the padding preservation/removal
    changes that are also in the paper, so haven't touched that part.

    2020-02-14  Jakub Jelinek  <ja...@redhat.com>

        Partially implement P1042R1: __VA_OPT__ wording clarifications
        PR preprocessor/92319
        * macro.c (expand_arg): Move declarations before vaopt_state
        definition.
        (class vaopt_state): Move enum update_type definition earlier.  Remove
        m_allowed member, add m_arg and m_update members.
        (vaopt_state::vaopt_state): Change last argument from bool any_args
        to macro_arg *arg, initialize m_arg and m_update instead of m_allowed.
        (vaopt_state::update): When bumping m_state from 1 to 2 and m_update
        is ERROR, determine if __VA_ARGS__ expansion has any non-CPP_PADDING
        tokens and set m_update to INCLUDE if it has any, DROP otherwise.
        Return m_update instead of m_allowed ? INCLUDE : DROP in m_state >= 2.
        (replace_args, create_iso_definition): Adjust last argument to
        vaopt_state ctor.

        * c-c++-common/cpp/va-opt-4.c: New test.

Reply via email to