diff options
author | Dave Brolley <brolley@cygnus.com> | 1998-10-16 14:28:40 +0000 |
---|---|---|
committer | Dave Brolley <brolley@gcc.gnu.org> | 1998-10-16 10:28:40 -0400 |
commit | c55ade0244cff15833d8c72f1bc360f3f8c26360 (patch) | |
tree | 1923a499442ffb88cbf077dd0dc0b2da3b3f59d7 /gcc/cpplib.c | |
parent | 7cfac5953a129fe78668db20cdf2533125349dea (diff) | |
download | gcc-c55ade0244cff15833d8c72f1bc360f3f8c26360.zip gcc-c55ade0244cff15833d8c72f1bc360f3f8c26360.tar.gz gcc-c55ade0244cff15833d8c72f1bc360f3f8c26360.tar.bz2 |
cpplib.c (cpp_get_token): Replace whitespace that occurs between a macro name and the next token with a...
Fri Oct 16 17:26:10 1998 Dave Brolley <brolley@cygnus.com>
* cpplib.c (cpp_get_token): Replace whitespace that occurs between
a macro name and the next token with a single blank if that whitespace
is in a macro buffer and the next token is not '('.
From-SVN: r23139
Diffstat (limited to 'gcc/cpplib.c')
-rw-r--r-- | gcc/cpplib.c | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/gcc/cpplib.c b/gcc/cpplib.c index b56790e..016b160 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -5099,29 +5099,43 @@ cpp_get_token (pfile) if (hp->type == T_MACRO && hp->value.defn->nargs >= 0) { struct parse_marker macro_mark; - int is_macro_call; - while (CPP_IS_MACRO_BUFFER (CPP_BUFFER (pfile))) - { - cpp_buffer *next_buf; - cpp_skip_hspace (pfile); - if (PEEKC () != EOF) - break; - next_buf = CPP_PREV_BUFFER (CPP_BUFFER (pfile)); - (*CPP_BUFFER (pfile)->cleanup) (CPP_BUFFER (pfile), pfile); - CPP_BUFFER (pfile) = next_buf; - } + int is_macro_call, macbuf_whitespace = 0; + parse_set_mark (¯o_mark, pfile); for (;;) { cpp_skip_hspace (pfile); c = PEEKC (); is_macro_call = c == '('; - if (c != '\n') - break; - FORWARD (1); + if (c != EOF) + { + if (c != '\n') + break; + FORWARD (1); + } + else + { + if (CPP_IS_MACRO_BUFFER (CPP_BUFFER (pfile))) + { + if (macro_mark.position != + (CPP_BUFFER (pfile)->cur + - CPP_BUFFER (pfile)->buf)) + macbuf_whitespace = 1; + + parse_clear_mark (¯o_mark); + cpp_pop_buffer (pfile); + parse_set_mark (¯o_mark, pfile); + } + else + break; + } } if (!is_macro_call) - parse_goto_mark (¯o_mark, pfile); + { + parse_goto_mark (¯o_mark, pfile); + if (macbuf_whitespace) + CPP_PUTC (pfile, ' '); + } parse_clear_mark (¯o_mark); if (!is_macro_call) return CPP_NAME; |