summaryrefslogtreecommitdiffstats
path: root/gcc/cpplib.c
diff options
context:
space:
mode:
authorbrolley <brolley@138bc75d-0d04-0410-961f-82ee72b054a4>1998-10-16 14:28:40 +0000
committerbrolley <brolley@138bc75d-0d04-0410-961f-82ee72b054a4>1998-10-16 14:28:40 +0000
commitc2ee5c5282124bd450c6ff4b59bb87e451b76ebc (patch)
tree1923a499442ffb88cbf077dd0dc0b2da3b3f59d7 /gcc/cpplib.c
parent6ee973434a04f61279b6162ab5d5d4a48768fdaa (diff)
downloadppe42-gcc-c2ee5c5282124bd450c6ff4b59bb87e451b76ebc.tar.gz
ppe42-gcc-c2ee5c5282124bd450c6ff4b59bb87e451b76ebc.zip
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 '('. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23139 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cpplib.c')
-rw-r--r--gcc/cpplib.c44
1 files changed, 29 insertions, 15 deletions
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index b56790ec32b..016b1606211 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 (&macro_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 (&macro_mark);
+ cpp_pop_buffer (pfile);
+ parse_set_mark (&macro_mark, pfile);
+ }
+ else
+ break;
+ }
}
if (!is_macro_call)
- parse_goto_mark (&macro_mark, pfile);
+ {
+ parse_goto_mark (&macro_mark, pfile);
+ if (macbuf_whitespace)
+ CPP_PUTC (pfile, ' ');
+ }
parse_clear_mark (&macro_mark);
if (!is_macro_call)
return CPP_NAME;
OpenPOWER on IntegriCloud