------- Comment #2 from jsm28 at gcc dot gnu dot org  2009-04-19 17:11 -------
Subject: Bug 20078

Author: jsm28
Date: Sun Apr 19 17:10:56 2009
New Revision: 146352

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=146352
Log:
libcpp:
        PR preprocessor/20078
        * include/cpp-id-data.h (struct cpp_macro): Add extra_tokens
        field.
        * include/cpplib.h (SP_DIGRAPH, SP_PREV_WHITE): Define.
        (struct cpp_token): Change flags to unsigned short.
        * lex.c (_cpp_lex_direct): Initialize arg_no for CPP_PASTE tokens.
        (_cpp_equiv_tokens): Check arg_no for CPP_PASTE tokens.
        (cpp_token_val_index): Return CPP_TOKEN_FLD_ARG_NO for CPP_PASTE
        tokens.
        * macro.c (macro_real_token_count): New.
        (enter_macro_context, replace_args): Use macro_real_token_count.
        (create_iso_definition): Record whitespace surrounding and digraph
        spelling of # and ## tokens using SP_PREV_WHITE and SP_DIGRAPH.
        Set extra_tokens and save CPP_PASTE tokens with arg_no set for
        multiple consecutive ## tokens.
        (_cpp_create_definition): Initialize extra_tokens.
        (cpp_macro_definition): Use macro_real_token_count.

gcc/testsuite:
        * gcc.dg/cpp/paste16.c, gcc.dg/cpp/redef4.c: New tests.

Added:
    trunk/gcc/testsuite/gcc.dg/cpp/paste16.c
    trunk/gcc/testsuite/gcc.dg/cpp/redef4.c
Modified:
    trunk/gcc/testsuite/ChangeLog
    trunk/libcpp/ChangeLog
    trunk/libcpp/include/cpp-id-data.h
    trunk/libcpp/include/cpplib.h
    trunk/libcpp/lex.c
    trunk/libcpp/macro.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20078

Reply via email to