------- 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