From 7c8c333543325eb98753b3977c7ec85320f685e8 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Wed, 16 Feb 2005 23:07:47 +0000 Subject: [PATCH] re PR preprocessor/19077 (Internal compiler error compiling MPlayer) 2005-02-16 Eric Christopher PR preprocessor/19077 * gcc.dg/cpp/20050215-1.c: New file. 2005-02-16 Eric Christopher PR preprocessor/19077 * cppmacro.c (cpp_macro_definition): Move handling of whitespace to PREV_WHITE conditional. Remove overloading of len variable. From-SVN: r95123 --- gcc/ChangeLog | 7 +++++++ gcc/cppmacro.c | 12 ++++++++---- gcc/testsuite/ChangeLog | 5 +++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1dc072dae451..71f52ab73c28 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-02-16 Eric Christopher + + PR preprocessor/19077 + * cppmacro.c (cpp_macro_definition): Move handling of whitespace + to PREV_WHITE conditional. Remove overloading of len + variable. + 2005-02-16 Eric Botcazou PR target/19715 diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c index 11ac09f12e1d..2298c854ec55 100644 --- a/gcc/cppmacro.c +++ b/gcc/cppmacro.c @@ -1626,6 +1626,7 @@ cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node) len += NODE_LEN (macro->params[i]) + 1; /* "," */ } + /* This should match below where we fill in the buffer. */ if (CPP_OPTION (pfile, traditional)) len += _cpp_replacement_text_len (macro); else @@ -1637,11 +1638,14 @@ cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node) if (token->type == CPP_MACRO_ARG) len += NODE_LEN (macro->params[token->val.arg_no - 1]); else - len += cpp_token_len (token) + 1; /* Includes room for ' '. */ + len += cpp_token_len (token); + if (token->flags & STRINGIFY_ARG) len++; /* "#" */ if (token->flags & PASTE_LEFT) len += 3; /* " ##" */ + if (token->flags & PREV_WHITE) + len++; /* " " */ } } @@ -1701,10 +1705,10 @@ cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node) if (token->type == CPP_MACRO_ARG) { - len = NODE_LEN (macro->params[token->val.arg_no - 1]); memcpy (buffer, - NODE_NAME (macro->params[token->val.arg_no - 1]), len); - buffer += len; + NODE_NAME (macro->params[token->val.arg_no - 1]), + NODE_LEN (macro->params[token->val.arg_no - 1])); + buffer += NODE_LEN (macro->params[token->val.arg_no - 1]); } else buffer = cpp_spell_token (pfile, token, buffer); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 46062a4ba286..d473fff1c42a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-02-16 Eric Christopher + + PR preprocessor/19077 + * gcc.dg/cpp/20050215-1.c: New file. + 2005-02-12 Kriang Lerdsuwanakij PR c++/14479 -- 2.47.2