* support/cpp/output.h, support/cpp/opts-common.c,
[fw/sdcc] / support / cpp / libcpp / macro.c
1 /* Part of CPP library.  (Macro and #define handling.)
2    Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
3    1999, 2000, 2001, 2002, 2003, 2004, 2005,
4    2006, 2007, 2008, 2009 Free Software Foundation, Inc.
5    Written by Per Bothner, 1994.
6    Based on CCCP program by Paul Rubin, June 1986
7    Adapted to ANSI C, Richard Stallman, Jan 1987
8
9 This program is free software; you can redistribute it and/or modify it
10 under the terms of the GNU General Public License as published by the
11 Free Software Foundation; either version 3, or (at your option) any
12 later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; see the file COPYING3.  If not see
21 <http://www.gnu.org/licenses/>.
22
23  In other words, you are welcome to use, share and improve this program.
24  You are forbidden to forbid anyone else to use, share and improve
25  what you give them.   Help stamp out software-hoarding!  */
26
27 #include "config.h"
28 #include "system.h"
29 #include "cpplib.h"
30 #include "internal.h"
31
32 typedef struct macro_arg macro_arg;
33 struct macro_arg
34 {
35   const cpp_token **first;      /* First token in unexpanded argument.  */
36   const cpp_token **expanded;   /* Macro-expanded argument.  */
37   const cpp_token *stringified; /* Stringified argument.  */
38   unsigned int count;           /* # of tokens in argument.  */
39   unsigned int expanded_count;  /* # of tokens in expanded argument.  */
40 };
41
42 /* Macro expansion.  */
43
44 static int enter_macro_context (cpp_reader *, cpp_hashnode *,
45                                 const cpp_token *);
46 static int builtin_macro (cpp_reader *, cpp_hashnode *);
47 static void push_ptoken_context (cpp_reader *, cpp_hashnode *, _cpp_buff *,
48                                  const cpp_token **, unsigned int);
49 static _cpp_buff *collect_args (cpp_reader *, const cpp_hashnode *,
50                                 _cpp_buff **);
51 static cpp_context *next_context (cpp_reader *);
52 static const cpp_token *padding_token (cpp_reader *, const cpp_token *);
53 static void expand_arg (cpp_reader *, macro_arg *);
54 static const cpp_token *new_string_token (cpp_reader *, uchar *, unsigned int);
55 static const cpp_token *stringify_arg (cpp_reader *, macro_arg *);
56 static void paste_all_tokens (cpp_reader *, const cpp_token *);
57 static bool paste_tokens (cpp_reader *, const cpp_token **, const cpp_token *);
58 static void replace_args (cpp_reader *, cpp_hashnode *, cpp_macro *,
59                           macro_arg *);
60 static _cpp_buff *funlike_invocation_p (cpp_reader *, cpp_hashnode *,
61                                         _cpp_buff **);
62 static bool create_iso_definition (cpp_reader *, cpp_macro *);
63
64 /* #define directive parsing and handling.  */
65
66 static cpp_token *alloc_expansion_token (cpp_reader *, cpp_macro *);
67 static cpp_token *lex_expansion_token (cpp_reader *, cpp_macro *);
68 static bool warn_of_redefinition (cpp_reader *, const cpp_hashnode *,
69                                   const cpp_macro *);
70 static bool parse_params (cpp_reader *, cpp_macro *);
71 static void check_trad_stringification (cpp_reader *, const cpp_macro *,
72                                         const cpp_string *);
73
74 /* Emits a warning if NODE is a macro defined in the main file that
75    has not been used.  */
76 int
77 _cpp_warn_if_unused_macro (cpp_reader *pfile, cpp_hashnode *node,
78                            void *v ATTRIBUTE_UNUSED)
79 {
80   if (node->type == NT_MACRO && !(node->flags & NODE_BUILTIN))
81     {
82       cpp_macro *macro = node->value.macro;
83
84       if (!macro->used
85           && MAIN_FILE_P (linemap_lookup (pfile->line_table, macro->line)))
86         cpp_error_with_line (pfile, CPP_DL_WARNING, macro->line, 0,
87                              "macro \"%s\" is not used", NODE_NAME (node));
88     }
89
90   return 1;
91 }
92
93 /* Allocates and returns a CPP_STRING token, containing TEXT of length
94    LEN, after null-terminating it.  TEXT must be in permanent storage.  */
95 static const cpp_token *
96 new_string_token (cpp_reader *pfile, unsigned char *text, unsigned int len)
97 {
98   cpp_token *token = _cpp_temp_token (pfile);
99
100   text[len] = '\0';
101   token->type = CPP_STRING;
102   token->val.str.len = len;
103   token->val.str.text = text;
104   token->flags = 0;
105   return token;
106 }
107
108 static const char * const monthnames[] =
109 {
110   "Jan", "Feb", "Mar", "Apr", "May", "Jun",
111   "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
112 };
113
114 /* Helper function for builtin_macro.  Returns the text generated by
115    a builtin macro. */
116 const uchar *
117 _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
118 {
119   const struct line_map *map;
120   const uchar *result = NULL;
121   linenum_type number = 1;
122
123   switch (node->value.builtin)
124     {
125     default:
126       cpp_error (pfile, CPP_DL_ICE, "invalid built-in macro \"%s\"",
127                  NODE_NAME (node));
128       break;
129
130     case BT_TIMESTAMP:
131       {
132         cpp_buffer *pbuffer = cpp_get_buffer (pfile);
133         if (pbuffer->timestamp == NULL)
134           {
135             /* Initialize timestamp value of the assotiated file. */
136             struct _cpp_file *file = cpp_get_file (pbuffer);
137             if (file)
138               {
139                 /* Generate __TIMESTAMP__ string, that represents
140                    the date and time of the last modification
141                    of the current source file. The string constant
142                    looks like "Sun Sep 16 01:03:52 1973".  */
143                 struct tm *tb = NULL;
144                 struct stat *st = _cpp_get_file_stat (file);
145                 if (st)
146                   tb = localtime (&st->st_mtime);
147                 if (tb)
148                   {
149                     char *str = asctime (tb);
150                     size_t len = strlen (str);
151                     unsigned char *buf = _cpp_unaligned_alloc (pfile, len + 2);
152                     buf[0] = '"';
153                     strcpy ((char *) buf + 1, str);
154                     buf[len] = '"';
155                     pbuffer->timestamp = buf;
156                   }
157                 else
158                   {
159                     cpp_errno (pfile, CPP_DL_WARNING,
160                         "could not determine file timestamp");
161                     pbuffer->timestamp = UC"\"??? ??? ?? ??:??:?? ????\"";
162                   }
163               }
164           }
165         result = pbuffer->timestamp;
166       }
167       break;
168     case BT_FILE:
169     case BT_BASE_FILE:
170       {
171         unsigned int len;
172         const char *name;
173         uchar *buf;
174         map = linemap_lookup (pfile->line_table, pfile->line_table->highest_line);
175
176         if (node->value.builtin == BT_BASE_FILE)
177           while (! MAIN_FILE_P (map))
178             map = INCLUDED_FROM (pfile->line_table, map);
179
180         name = map->to_file;
181         len = strlen (name);
182         buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);
183         result = buf;
184         *buf = '"';
185         buf = cpp_quote_string (buf + 1, (const unsigned char *) name, len);
186         *buf++ = '"';
187         *buf = '\0';
188       }
189       break;
190
191     case BT_INCLUDE_LEVEL:
192       /* The line map depth counts the primary source as level 1, but
193          historically __INCLUDE_DEPTH__ has called the primary source
194          level 0.  */
195       number = pfile->line_table->depth - 1;
196       break;
197
198     case BT_SPECLINE:
199       map = &pfile->line_table->maps[pfile->line_table->used-1];
200       /* If __LINE__ is embedded in a macro, it must expand to the
201          line of the macro's invocation, not its definition.
202          Otherwise things like assert() will not work properly.  */
203       number = SOURCE_LINE (map,
204                             CPP_OPTION (pfile, traditional)
205                             ? pfile->line_table->highest_line
206                             : pfile->cur_token[-1].src_loc);
207       break;
208
209       /* __STDC__ has the value 1 under normal circumstances.
210          However, if (a) we are in a system header, (b) the option
211          stdc_0_in_system_headers is true (set by target config), and
212          (c) we are not in strictly conforming mode, then it has the
213          value 0.  (b) and (c) are already checked in cpp_init_builtins.  */
214     case BT_STDC:
215       if (cpp_in_system_header (pfile))
216         number = 0;
217       else
218         number = 1;
219       break;
220
221     case BT_DATE:
222     case BT_TIME:
223       if (pfile->date == NULL)
224         {
225           /* Allocate __DATE__ and __TIME__ strings from permanent
226              storage.  We only do this once, and don't generate them
227              at init time, because time() and localtime() are very
228              slow on some systems.  */
229           time_t tt;
230           struct tm *tb = NULL;
231
232           /* (time_t) -1 is a legitimate value for "number of seconds
233              since the Epoch", so we have to do a little dance to
234              distinguish that from a genuine error.  */
235           errno = 0;
236           tt = time(NULL);
237           if (tt != (time_t)-1 || errno == 0)
238             tb = localtime (&tt);
239
240           if (tb)
241             {
242               pfile->date = _cpp_unaligned_alloc (pfile,
243                                                   sizeof ("\"Oct 11 1347\""));
244               sprintf ((char *) pfile->date, "\"%s %2d %4d\"",
245                        monthnames[tb->tm_mon], tb->tm_mday,
246                        tb->tm_year + 1900);
247
248               pfile->time = _cpp_unaligned_alloc (pfile,
249                                                   sizeof ("\"12:34:56\""));
250               sprintf ((char *) pfile->time, "\"%02d:%02d:%02d\"",
251                        tb->tm_hour, tb->tm_min, tb->tm_sec);
252             }
253           else
254             {
255               cpp_errno (pfile, CPP_DL_WARNING,
256                          "could not determine date and time");
257
258               pfile->date = UC"\"??? ?? ????\"";
259               pfile->time = UC"\"??:??:??\"";
260             }
261         }
262
263       if (node->value.builtin == BT_DATE)
264         result = pfile->date;
265       else
266         result = pfile->time;
267       break;
268
269     case BT_COUNTER:
270       if (CPP_OPTION (pfile, directives_only) && pfile->state.in_directive)
271         cpp_error (pfile, CPP_DL_ERROR,
272             "__COUNTER__ expanded inside directive with -fdirectives-only");
273       number = pfile->counter++;
274       break;
275     }
276
277   if (result == NULL)
278     {
279       /* 21 bytes holds all NUL-terminated unsigned 64-bit numbers.  */
280       result = _cpp_unaligned_alloc (pfile, 21);
281       sprintf ((char *) result, "%u", number);
282     }
283
284   return result;
285 }
286
287 /* Convert builtin macros like __FILE__ to a token and push it on the
288    context stack.  Also handles _Pragma, for which a new token may not
289    be created.  Returns 1 if it generates a new token context, 0 to
290    return the token to the caller.  */
291 static int
292 builtin_macro (cpp_reader *pfile, cpp_hashnode *node)
293 {
294   const uchar *buf;
295   size_t len;
296   char *nbuf;
297
298   if (node->value.builtin == BT_PRAGMA)
299     {
300       /* Don't interpret _Pragma within directives.  The standard is
301          not clear on this, but to me this makes most sense.  */
302       if (pfile->state.in_directive)
303         return 0;
304
305       return _cpp_do__Pragma (pfile);
306     }
307
308   buf = _cpp_builtin_macro_text (pfile, node);
309   len = ustrlen (buf);
310   nbuf = (char *) alloca (len + 1);
311   memcpy (nbuf, buf, len);
312   nbuf[len]='\n';
313
314   cpp_push_buffer (pfile, (uchar *) nbuf, len, /* from_stage3 */ true);
315   _cpp_clean_line (pfile);
316
317   /* Set pfile->cur_token as required by _cpp_lex_direct.  */
318   pfile->cur_token = _cpp_temp_token (pfile);
319   _cpp_push_token_context (pfile, NULL, _cpp_lex_direct (pfile), 1);
320   if (pfile->buffer->cur != pfile->buffer->rlimit)
321     cpp_error (pfile, CPP_DL_ICE, "invalid built-in macro \"%s\"",
322                NODE_NAME (node));
323   _cpp_pop_buffer (pfile);
324
325   return 1;
326 }
327
328 /* Copies SRC, of length LEN, to DEST, adding backslashes before all
329    backslashes and double quotes. DEST must be of sufficient size.
330    Returns a pointer to the end of the string.  */
331 uchar *
332 cpp_quote_string (uchar *dest, const uchar *src, unsigned int len)
333 {
334   while (len--)
335     {
336       uchar c = *src++;
337
338       if (c == '\\' || c == '"')
339         {
340           *dest++ = '\\';
341           *dest++ = c;
342         }
343       else
344           *dest++ = c;
345     }
346
347   return dest;
348 }
349
350 /* Convert a token sequence ARG to a single string token according to
351    the rules of the ISO C #-operator.  */
352 static const cpp_token *
353 stringify_arg (cpp_reader *pfile, macro_arg *arg)
354 {
355   unsigned char *dest;
356   unsigned int i, escape_it, backslash_count = 0;
357   const cpp_token *source = NULL;
358   size_t len;
359
360   if (BUFF_ROOM (pfile->u_buff) < 3)
361     _cpp_extend_buff (pfile, &pfile->u_buff, 3);
362   dest = BUFF_FRONT (pfile->u_buff);
363   *dest++ = '"';
364
365   /* Loop, reading in the argument's tokens.  */
366   for (i = 0; i < arg->count; i++)
367     {
368       const cpp_token *token = arg->first[i];
369
370       if (token->type == CPP_PADDING)
371         {
372           if (source == NULL)
373             source = token->val.source;
374           continue;
375         }
376
377       escape_it = (token->type == CPP_STRING || token->type == CPP_CHAR
378                    || token->type == CPP_WSTRING || token->type == CPP_STRING
379                    || token->type == CPP_STRING32 || token->type == CPP_CHAR32
380                    || token->type == CPP_STRING16 || token->type == CPP_CHAR16);
381
382       /* Room for each char being written in octal, initial space and
383          final quote and NUL.  */
384       len = cpp_token_len (token);
385       if (escape_it)
386         len *= 4;
387       len += 3;
388
389       if ((size_t) (BUFF_LIMIT (pfile->u_buff) - dest) < len)
390         {
391           size_t len_so_far = dest - BUFF_FRONT (pfile->u_buff);
392           _cpp_extend_buff (pfile, &pfile->u_buff, len);
393           dest = BUFF_FRONT (pfile->u_buff) + len_so_far;
394         }
395
396       /* Leading white space?  */
397       if (dest - 1 != BUFF_FRONT (pfile->u_buff))
398         {
399           if (source == NULL)
400             source = token;
401           if (source->flags & PREV_WHITE)
402             *dest++ = ' ';
403         }
404       source = NULL;
405
406       if (escape_it)
407         {
408           _cpp_buff *buff = _cpp_get_buff (pfile, len);
409           unsigned char *buf = BUFF_FRONT (buff);
410           len = cpp_spell_token (pfile, token, buf, true) - buf;
411           dest = cpp_quote_string (dest, buf, len);
412           _cpp_release_buff (pfile, buff);
413         }
414       else
415         dest = cpp_spell_token (pfile, token, dest, true);
416
417       if (token->type == CPP_OTHER && token->val.str.text[0] == '\\')
418         backslash_count++;
419       else
420         backslash_count = 0;
421     }
422
423   /* Ignore the final \ of invalid string literals.  */
424   if (backslash_count & 1)
425     {
426       cpp_error (pfile, CPP_DL_WARNING,
427                  "invalid string literal, ignoring final '\\'");
428       dest--;
429     }
430
431   /* Commit the memory, including NUL, and return the token.  */
432   *dest++ = '"';
433   len = dest - BUFF_FRONT (pfile->u_buff);
434   BUFF_FRONT (pfile->u_buff) = dest + 1;
435   return new_string_token (pfile, dest - len, len);
436 }
437
438 /* Try to paste two tokens.  On success, return nonzero.  In any
439    case, PLHS is updated to point to the pasted token, which is
440    guaranteed to not have the PASTE_LEFT flag set.  */
441 static bool
442 paste_tokens (cpp_reader *pfile, const cpp_token **plhs, const cpp_token *rhs)
443 {
444   unsigned char *buf, *end, *lhsend;
445   cpp_token *lhs;
446   unsigned int len;
447
448   len = cpp_token_len (*plhs) + cpp_token_len (rhs) + 1;
449   buf = (unsigned char *) alloca (len);
450   end = lhsend = cpp_spell_token (pfile, *plhs, buf, false);
451
452   /* Avoid comment headers, since they are still processed in stage 3.
453      It is simpler to insert a space here, rather than modifying the
454      lexer to ignore comments in some circumstances.  Simply returning
455      false doesn't work, since we want to clear the PASTE_LEFT flag.  */
456   if ((*plhs)->type == CPP_DIV && rhs->type != CPP_EQ)
457     *end++ = ' ';
458   /* In one obscure case we might see padding here.  */
459   if (rhs->type != CPP_PADDING)
460     end = cpp_spell_token (pfile, rhs, end, false);
461   *end = '\n';
462
463   cpp_push_buffer (pfile, buf, end - buf, /* from_stage3 */ true);
464   _cpp_clean_line (pfile);
465
466   /* Set pfile->cur_token as required by _cpp_lex_direct.  */
467   pfile->cur_token = _cpp_temp_token (pfile);
468   lhs = _cpp_lex_direct (pfile);
469   if (pfile->buffer->cur != pfile->buffer->rlimit)
470     {
471       source_location saved_loc = lhs->src_loc;
472
473       _cpp_pop_buffer (pfile);
474       _cpp_backup_tokens (pfile, 1);
475       *lhsend = '\0';
476
477       /* We have to remove the PASTE_LEFT flag from the old lhs, but
478          we want to keep the new location.  */
479       *lhs = **plhs;
480       *plhs = lhs;
481       lhs->src_loc = saved_loc;
482       lhs->flags &= ~PASTE_LEFT;
483
484       /* Mandatory error for all apart from assembler.  */
485       if (CPP_OPTION (pfile, lang) != CLK_ASM)
486         cpp_error (pfile, CPP_DL_ERROR,
487          "pasting \"%s\" and \"%s\" does not give a valid preprocessing token",
488                    buf, cpp_token_as_text (pfile, rhs));
489       return false;
490     }
491
492   *plhs = lhs;
493   _cpp_pop_buffer (pfile);
494   return true;
495 }
496
497 /* Handles an arbitrarily long sequence of ## operators, with initial
498    operand LHS.  This implementation is left-associative,
499    non-recursive, and finishes a paste before handling succeeding
500    ones.  If a paste fails, we back up to the RHS of the failing ##
501    operator before pushing the context containing the result of prior
502    successful pastes, with the effect that the RHS appears in the
503    output stream after the pasted LHS normally.  */
504 static void
505 paste_all_tokens (cpp_reader *pfile, const cpp_token *lhs)
506 {
507   const cpp_token *rhs;
508   cpp_context *context = pfile->context;
509
510   do
511     {
512       /* Take the token directly from the current context.  We can do
513          this, because we are in the replacement list of either an
514          object-like macro, or a function-like macro with arguments
515          inserted.  In either case, the constraints to #define
516          guarantee we have at least one more token.  */
517       if (context->direct_p)
518         rhs = FIRST (context).token++;
519       else
520         rhs = *FIRST (context).ptoken++;
521
522       if (rhs->type == CPP_PADDING)
523         {
524           if (rhs->flags & PASTE_LEFT)
525             abort ();
526         }
527       if (!paste_tokens (pfile, &lhs, rhs))
528         break;
529     }
530   while (rhs->flags & PASTE_LEFT);
531
532   /* Put the resulting token in its own context.  */
533   _cpp_push_token_context (pfile, NULL, lhs, 1);
534 }
535
536 /* Returns TRUE if the number of arguments ARGC supplied in an
537    invocation of the MACRO referenced by NODE is valid.  An empty
538    invocation to a macro with no parameters should pass ARGC as zero.
539
540    Note that MACRO cannot necessarily be deduced from NODE, in case
541    NODE was redefined whilst collecting arguments.  */
542 bool
543 _cpp_arguments_ok (cpp_reader *pfile, cpp_macro *macro, const cpp_hashnode *node, unsigned int argc)
544 {
545   if (argc == macro->paramc)
546     return true;
547
548   if (argc < macro->paramc)
549     {
550       /* As an extension, a rest argument is allowed to not appear in
551          the invocation at all.
552          e.g. #define debug(format, args...) something
553          debug("string");
554
555          This is exactly the same as if there had been an empty rest
556          argument - debug("string", ).  */
557
558       if (argc + 1 == macro->paramc && macro->variadic)
559         {
560           if (CPP_PEDANTIC (pfile) && ! macro->syshdr)
561             cpp_error (pfile, CPP_DL_PEDWARN,
562                        "ISO C99 requires rest arguments to be used");
563           return true;
564         }
565
566       cpp_error (pfile, CPP_DL_ERROR,
567                  "macro \"%s\" requires %u arguments, but only %u given",
568                  NODE_NAME (node), macro->paramc, argc);
569     }
570   else
571     cpp_error (pfile, CPP_DL_ERROR,
572                "macro \"%s\" passed %u arguments, but takes just %u",
573                NODE_NAME (node), argc, macro->paramc);
574
575   return false;
576 }
577
578 /* Reads and returns the arguments to a function-like macro
579    invocation.  Assumes the opening parenthesis has been processed.
580    If there is an error, emits an appropriate diagnostic and returns
581    NULL.  Each argument is terminated by a CPP_EOF token, for the
582    future benefit of expand_arg().  If there are any deferred
583    #pragma directives among macro arguments, store pointers to the
584    CPP_PRAGMA ... CPP_PRAGMA_EOL tokens into *PRAGMA_BUFF buffer.  */
585 static _cpp_buff *
586 collect_args (cpp_reader *pfile, const cpp_hashnode *node,
587               _cpp_buff **pragma_buff)
588 {
589   _cpp_buff *buff, *base_buff;
590   cpp_macro *macro;
591   macro_arg *args, *arg;
592   const cpp_token *token;
593   unsigned int argc;
594
595   macro = node->value.macro;
596   if (macro->paramc)
597     argc = macro->paramc;
598   else
599     argc = 1;
600   buff = _cpp_get_buff (pfile, argc * (50 * sizeof (cpp_token *)
601                                        + sizeof (macro_arg)));
602   base_buff = buff;
603   args = (macro_arg *) buff->base;
604   memset (args, 0, argc * sizeof (macro_arg));
605   buff->cur = (unsigned char *) &args[argc];
606   arg = args, argc = 0;
607
608   /* Collect the tokens making up each argument.  We don't yet know
609      how many arguments have been supplied, whether too many or too
610      few.  Hence the slightly bizarre usage of "argc" and "arg".  */
611   do
612     {
613       unsigned int paren_depth = 0;
614       unsigned int ntokens = 0;
615
616       argc++;
617       arg->first = (const cpp_token **) buff->cur;
618
619       for (;;)
620         {
621           /* Require space for 2 new tokens (including a CPP_EOF).  */
622           if ((unsigned char *) &arg->first[ntokens + 2] > buff->limit)
623             {
624               buff = _cpp_append_extend_buff (pfile, buff,
625                                               1000 * sizeof (cpp_token *));
626               arg->first = (const cpp_token **) buff->cur;
627             }
628
629           token = cpp_get_token (pfile);
630
631           if (token->type == CPP_PADDING)
632             {
633               /* Drop leading padding.  */
634               if (ntokens == 0)
635                 continue;
636             }
637           else if (token->type == CPP_OPEN_PAREN)
638             paren_depth++;
639           else if (token->type == CPP_CLOSE_PAREN)
640             {
641               if (paren_depth-- == 0)
642                 break;
643             }
644           else if (token->type == CPP_COMMA)
645             {
646               /* A comma does not terminate an argument within
647                  parentheses or as part of a variable argument.  */
648               if (paren_depth == 0
649                   && ! (macro->variadic && argc == macro->paramc))
650                 break;
651             }
652           else if (token->type == CPP_EOF
653                    || (token->type == CPP_HASH && token->flags & BOL))
654             break;
655           else if (token->type == CPP_PRAGMA)
656             {
657               cpp_token *newtok = _cpp_temp_token (pfile);
658
659               /* CPP_PRAGMA token lives in directive_result, which will
660                  be overwritten on the next directive.  */
661               *newtok = *token;
662               token = newtok;
663               do
664                 {
665                   if (*pragma_buff == NULL
666                       || BUFF_ROOM (*pragma_buff) < sizeof (cpp_token *))
667                     {
668                       _cpp_buff *next;
669                       if (*pragma_buff == NULL)
670                         *pragma_buff
671                           = _cpp_get_buff (pfile, 32 * sizeof (cpp_token *));
672                       else
673                         {
674                           next = *pragma_buff;
675                           *pragma_buff
676                             = _cpp_get_buff (pfile,
677                                              (BUFF_FRONT (*pragma_buff)
678                                               - (*pragma_buff)->base) * 2);
679                           (*pragma_buff)->next = next;
680                         }
681                     }
682                   *(const cpp_token **) BUFF_FRONT (*pragma_buff) = token;
683                   BUFF_FRONT (*pragma_buff) += sizeof (cpp_token *);
684                   if (token->type == CPP_PRAGMA_EOL)
685                     break;
686                   token = cpp_get_token (pfile);
687                 }
688               while (token->type != CPP_EOF);
689
690               /* In deferred pragmas parsing_args and prevent_expansion
691                  had been changed, reset it.  */
692               pfile->state.parsing_args = 2;
693               pfile->state.prevent_expansion = 1;
694
695               if (token->type == CPP_EOF)
696                 break;
697               else
698                 continue;
699             }
700
701           arg->first[ntokens++] = token;
702         }
703
704       /* Drop trailing padding.  */
705       while (ntokens > 0 && arg->first[ntokens - 1]->type == CPP_PADDING)
706         ntokens--;
707
708       arg->count = ntokens;
709       arg->first[ntokens] = &pfile->eof;
710
711       /* Terminate the argument.  Excess arguments loop back and
712          overwrite the final legitimate argument, before failing.  */
713       if (argc <= macro->paramc)
714         {
715           buff->cur = (unsigned char *) &arg->first[ntokens + 1];
716           if (argc != macro->paramc)
717             arg++;
718         }
719     }
720   while (token->type != CPP_CLOSE_PAREN && token->type != CPP_EOF);
721
722   if (token->type == CPP_EOF)
723     {
724       /* We still need the CPP_EOF to end directives, and to end
725          pre-expansion of a macro argument.  Step back is not
726          unconditional, since we don't want to return a CPP_EOF to our
727          callers at the end of an -include-d file.  */
728       if (pfile->context->prev || pfile->state.in_directive)
729         _cpp_backup_tokens (pfile, 1);
730       cpp_error (pfile, CPP_DL_ERROR,
731                  "unterminated argument list invoking macro \"%s\"",
732                  NODE_NAME (node));
733     }
734   else
735     {
736       /* A single empty argument is counted as no argument.  */
737       if (argc == 1 && macro->paramc == 0 && args[0].count == 0)
738         argc = 0;
739       if (_cpp_arguments_ok (pfile, macro, node, argc))
740         {
741           /* GCC has special semantics for , ## b where b is a varargs
742              parameter: we remove the comma if b was omitted entirely.
743              If b was merely an empty argument, the comma is retained.
744              If the macro takes just one (varargs) parameter, then we
745              retain the comma only if we are standards conforming.
746
747              If FIRST is NULL replace_args () swallows the comma.  */
748           if (macro->variadic && (argc < macro->paramc
749                                   || (argc == 1 && args[0].count == 0
750                                       && !CPP_OPTION (pfile, std))))
751             args[macro->paramc - 1].first = NULL;
752           return base_buff;
753         }
754     }
755
756   /* An error occurred.  */
757   _cpp_release_buff (pfile, base_buff);
758   return NULL;
759 }
760
761 /* Search for an opening parenthesis to the macro of NODE, in such a
762    way that, if none is found, we don't lose the information in any
763    intervening padding tokens.  If we find the parenthesis, collect
764    the arguments and return the buffer containing them.  PRAGMA_BUFF
765    argument is the same as in collect_args.  */
766 static _cpp_buff *
767 funlike_invocation_p (cpp_reader *pfile, cpp_hashnode *node,
768                       _cpp_buff **pragma_buff)
769 {
770   const cpp_token *token, *padding = NULL;
771
772   for (;;)
773     {
774       token = cpp_get_token (pfile);
775       if (token->type != CPP_PADDING)
776         break;
777       if (padding == NULL
778           || (!(padding->flags & PREV_WHITE) && token->val.source == NULL))
779         padding = token;
780     }
781
782   if (token->type == CPP_OPEN_PAREN)
783     {
784       pfile->state.parsing_args = 2;
785       return collect_args (pfile, node, pragma_buff);
786     }
787
788   /* CPP_EOF can be the end of macro arguments, or the end of the
789      file.  We mustn't back up over the latter.  Ugh.  */
790   if (token->type != CPP_EOF || token == &pfile->eof)
791     {
792       /* Back up.  We may have skipped padding, in which case backing
793          up more than one token when expanding macros is in general
794          too difficult.  We re-insert it in its own context.  */
795       _cpp_backup_tokens (pfile, 1);
796       if (padding)
797         _cpp_push_token_context (pfile, NULL, padding, 1);
798     }
799
800   return NULL;
801 }
802
803 /* Push the context of a macro with hash entry NODE onto the context
804    stack.  If we can successfully expand the macro, we push a context
805    containing its yet-to-be-rescanned replacement list and return one.
806    If there were additionally any unexpanded deferred #pragma directives
807    among macro arguments, push another context containing the
808    pragma tokens before the yet-to-be-rescanned replacement list
809    and return two.  Otherwise, we don't push a context and return zero.  */
810 static int
811 enter_macro_context (cpp_reader *pfile, cpp_hashnode *node,
812                      const cpp_token *result)
813 {
814   /* The presence of a macro invalidates a file's controlling macro.  */
815   pfile->mi_valid = false;
816
817   pfile->state.angled_headers = false;
818
819   if ((node->flags & NODE_BUILTIN) && !(node->flags & NODE_USED))
820     {
821       node->flags |= NODE_USED;
822       if (pfile->cb.used_define)
823         pfile->cb.used_define (pfile, pfile->directive_line, node);
824     }
825
826   /* Handle standard macros.  */
827   if (! (node->flags & NODE_BUILTIN))
828     {
829       cpp_macro *macro = node->value.macro;
830       _cpp_buff *pragma_buff = NULL;
831
832       if (macro->fun_like)
833         {
834           _cpp_buff *buff;
835
836           pfile->state.prevent_expansion++;
837           pfile->keep_tokens++;
838           pfile->state.parsing_args = 1;
839           buff = funlike_invocation_p (pfile, node, &pragma_buff);
840           pfile->state.parsing_args = 0;
841           pfile->keep_tokens--;
842           pfile->state.prevent_expansion--;
843
844           if (buff == NULL)
845             {
846               if (CPP_WTRADITIONAL (pfile) && ! node->value.macro->syshdr)
847                 cpp_error (pfile, CPP_DL_WARNING,
848  "function-like macro \"%s\" must be used with arguments in traditional C",
849                            NODE_NAME (node));
850
851               if (pragma_buff)
852                 _cpp_release_buff (pfile, pragma_buff);
853
854               return 0;
855             }
856
857           if (macro->paramc > 0)
858             replace_args (pfile, node, macro, (macro_arg *) buff->base);
859           _cpp_release_buff (pfile, buff);
860         }
861
862       /* Disable the macro within its expansion.  */
863       node->flags |= NODE_DISABLED;
864
865       if (!(node->flags & NODE_USED))
866         {
867           node->flags |= NODE_USED;
868           if (pfile->cb.used_define)
869             pfile->cb.used_define (pfile, pfile->directive_line, node);
870         }
871
872       macro->used = 1;
873
874       if (macro->paramc == 0)
875         _cpp_push_token_context (pfile, node, macro->exp.tokens, macro->count);
876
877       if (pragma_buff)
878         {
879           if (!pfile->state.in_directive)
880             _cpp_push_token_context (pfile, NULL,
881                                      padding_token (pfile, result), 1);
882           do
883             {
884               _cpp_buff *tail = pragma_buff->next;
885               pragma_buff->next = NULL;
886               push_ptoken_context (pfile, NULL, pragma_buff,
887                                    (const cpp_token **) pragma_buff->base,
888                                    ((const cpp_token **) BUFF_FRONT (pragma_buff)
889                                     - (const cpp_token **) pragma_buff->base));
890               pragma_buff = tail;
891             }
892           while (pragma_buff != NULL);
893           return 2;
894         }
895
896       return 1;
897     }
898
899   /* Handle built-in macros and the _Pragma operator.  */
900   return builtin_macro (pfile, node);
901 }
902
903 /* Replace the parameters in a function-like macro of NODE with the
904    actual ARGS, and place the result in a newly pushed token context.
905    Expand each argument before replacing, unless it is operated upon
906    by the # or ## operators.  */
907 static void
908 replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg *args)
909 {
910   unsigned int i, total;
911   const cpp_token *src, *limit;
912   const cpp_token **dest, **first;
913   macro_arg *arg;
914   _cpp_buff *buff;
915
916   /* First, fully macro-expand arguments, calculating the number of
917      tokens in the final expansion as we go.  The ordering of the if
918      statements below is subtle; we must handle stringification before
919      pasting.  */
920   total = macro->count;
921   limit = macro->exp.tokens + macro->count;
922
923   for (src = macro->exp.tokens; src < limit; src++)
924     if (src->type == CPP_MACRO_ARG)
925       {
926         /* Leading and trailing padding tokens.  */
927         total += 2;
928
929         /* We have an argument.  If it is not being stringified or
930            pasted it is macro-replaced before insertion.  */
931         arg = &args[src->val.arg_no - 1];
932
933         if (src->flags & STRINGIFY_ARG)
934           {
935             if (!arg->stringified)
936               arg->stringified = stringify_arg (pfile, arg);
937           }
938         else if ((src->flags & PASTE_LEFT)
939                  || (src > macro->exp.tokens && (src[-1].flags & PASTE_LEFT)))
940           total += arg->count - 1;
941         else
942           {
943             if (!arg->expanded)
944               expand_arg (pfile, arg);
945             total += arg->expanded_count - 1;
946           }
947       }
948
949   /* Now allocate space for the expansion, copy the tokens and replace
950      the arguments.  */
951   buff = _cpp_get_buff (pfile, total * sizeof (cpp_token *));
952   first = (const cpp_token **) buff->base;
953   dest = first;
954
955   for (src = macro->exp.tokens; src < limit; src++)
956     {
957       unsigned int count;
958       const cpp_token **from, **paste_flag;
959
960       if (src->type != CPP_MACRO_ARG)
961         {
962           *dest++ = src;
963           continue;
964         }
965
966       paste_flag = 0;
967       arg = &args[src->val.arg_no - 1];
968       if (src->flags & STRINGIFY_ARG)
969         count = 1, from = &arg->stringified;
970       else if (src->flags & PASTE_LEFT)
971         count = arg->count, from = arg->first;
972       else if (src != macro->exp.tokens && (src[-1].flags & PASTE_LEFT))
973         {
974           count = arg->count, from = arg->first;
975           if (dest != first)
976             {
977               if (dest[-1]->type == CPP_COMMA
978                   && macro->variadic
979                   && src->val.arg_no == macro->paramc)
980                 {
981                   /* Swallow a pasted comma if from == NULL, otherwise
982                      drop the paste flag.  */
983                   if (from == NULL)
984                     dest--;
985                   else
986                     paste_flag = dest - 1;
987                 }
988               /* Remove the paste flag if the RHS is a placemarker.  */
989               else if (count == 0)
990                 paste_flag = dest - 1;
991             }
992         }
993       else
994         count = arg->expanded_count, from = arg->expanded;
995
996       /* Padding on the left of an argument (unless RHS of ##).  */
997       if ((!pfile->state.in_directive || pfile->state.directive_wants_padding)
998           && src != macro->exp.tokens && !(src[-1].flags & PASTE_LEFT))
999         *dest++ = padding_token (pfile, src);
1000
1001       if (count)
1002         {
1003           memcpy (dest, from, count * sizeof (cpp_token *));
1004           dest += count;
1005
1006           /* With a non-empty argument on the LHS of ##, the last
1007              token should be flagged PASTE_LEFT.  */
1008           if (src->flags & PASTE_LEFT)
1009             paste_flag = dest - 1;
1010         }
1011       else if (CPP_PEDANTIC (pfile) && ! macro->syshdr
1012                && ! CPP_OPTION (pfile, c99)
1013                && ! cpp_in_system_header (pfile))
1014         {
1015           cpp_error (pfile, CPP_DL_PEDWARN,
1016                      "invoking macro %s argument %d: "
1017                      "empty macro arguments are undefined"
1018                      " in ISO C90 and ISO C++98",
1019                      NODE_NAME (node),
1020                      src->val.arg_no);
1021         }
1022
1023       /* Avoid paste on RHS (even case count == 0).  */
1024       if (!pfile->state.in_directive && !(src->flags & PASTE_LEFT))
1025         *dest++ = &pfile->avoid_paste;
1026
1027       /* Add a new paste flag, or remove an unwanted one.  */
1028       if (paste_flag)
1029         {
1030           cpp_token *token = _cpp_temp_token (pfile);
1031           token->type = (*paste_flag)->type;
1032           token->val = (*paste_flag)->val;
1033           if (src->flags & PASTE_LEFT)
1034             token->flags = (*paste_flag)->flags | PASTE_LEFT;
1035           else
1036             token->flags = (*paste_flag)->flags & ~PASTE_LEFT;
1037           *paste_flag = token;
1038         }
1039     }
1040
1041   /* Free the expanded arguments.  */
1042   for (i = 0; i < macro->paramc; i++)
1043     if (args[i].expanded)
1044       free (args[i].expanded);
1045
1046   push_ptoken_context (pfile, node, buff, first, dest - first);
1047 }
1048
1049 /* Return a special padding token, with padding inherited from SOURCE.  */
1050 static const cpp_token *
1051 padding_token (cpp_reader *pfile, const cpp_token *source)
1052 {
1053   cpp_token *result = _cpp_temp_token (pfile);
1054
1055   result->type = CPP_PADDING;
1056
1057   /* Data in GCed data structures cannot be made const so far, so we
1058      need a cast here.  */
1059   result->val.source = (cpp_token *) source;
1060   result->flags = 0;
1061   return result;
1062 }
1063
1064 /* Get a new uninitialized context.  Create a new one if we cannot
1065    re-use an old one.  */
1066 static cpp_context *
1067 next_context (cpp_reader *pfile)
1068 {
1069   cpp_context *result = pfile->context->next;
1070
1071   if (result == 0)
1072     {
1073       result = XNEW (cpp_context);
1074       result->prev = pfile->context;
1075       result->next = 0;
1076       pfile->context->next = result;
1077     }
1078
1079   pfile->context = result;
1080   return result;
1081 }
1082
1083 /* Push a list of pointers to tokens.  */
1084 static void
1085 push_ptoken_context (cpp_reader *pfile, cpp_hashnode *macro, _cpp_buff *buff,
1086                      const cpp_token **first, unsigned int count)
1087 {
1088   cpp_context *context = next_context (pfile);
1089
1090   context->direct_p = false;
1091   context->macro = macro;
1092   context->buff = buff;
1093   FIRST (context).ptoken = first;
1094   LAST (context).ptoken = first + count;
1095 }
1096
1097 /* Push a list of tokens.  */
1098 void
1099 _cpp_push_token_context (cpp_reader *pfile, cpp_hashnode *macro,
1100                          const cpp_token *first, unsigned int count)
1101 {
1102   cpp_context *context = next_context (pfile);
1103
1104   context->direct_p = true;
1105   context->macro = macro;
1106   context->buff = NULL;
1107   FIRST (context).token = first;
1108   LAST (context).token = first + count;
1109 }
1110
1111 /* Push a traditional macro's replacement text.  */
1112 void
1113 _cpp_push_text_context (cpp_reader *pfile, cpp_hashnode *macro,
1114                         const uchar *start, size_t len)
1115 {
1116   cpp_context *context = next_context (pfile);
1117
1118   context->direct_p = true;
1119   context->macro = macro;
1120   context->buff = NULL;
1121   CUR (context) = start;
1122   RLIMIT (context) = start + len;
1123   macro->flags |= NODE_DISABLED;
1124 }
1125
1126 /* Expand an argument ARG before replacing parameters in a
1127    function-like macro.  This works by pushing a context with the
1128    argument's tokens, and then expanding that into a temporary buffer
1129    as if it were a normal part of the token stream.  collect_args()
1130    has terminated the argument's tokens with a CPP_EOF so that we know
1131    when we have fully expanded the argument.  */
1132 static void
1133 expand_arg (cpp_reader *pfile, macro_arg *arg)
1134 {
1135   unsigned int capacity;
1136   bool saved_warn_trad;
1137
1138   if (arg->count == 0)
1139     return;
1140
1141   /* Don't warn about funlike macros when pre-expanding.  */
1142   saved_warn_trad = CPP_WTRADITIONAL (pfile);
1143   CPP_WTRADITIONAL (pfile) = 0;
1144
1145   /* Loop, reading in the arguments.  */
1146   capacity = 256;
1147   arg->expanded = XNEWVEC (const cpp_token *, capacity);
1148
1149   push_ptoken_context (pfile, NULL, NULL, arg->first, arg->count + 1);
1150   for (;;)
1151     {
1152       const cpp_token *token;
1153
1154       if (arg->expanded_count + 1 >= capacity)
1155         {
1156           capacity *= 2;
1157           arg->expanded = XRESIZEVEC (const cpp_token *, arg->expanded,
1158                                       capacity);
1159         }
1160
1161       token = cpp_get_token (pfile);
1162
1163       if (token->type == CPP_EOF)
1164         break;
1165
1166       arg->expanded[arg->expanded_count++] = token;
1167     }
1168
1169   _cpp_pop_context (pfile);
1170
1171   CPP_WTRADITIONAL (pfile) = saved_warn_trad;
1172 }
1173
1174 /* Pop the current context off the stack, re-enabling the macro if the
1175    context represented a macro's replacement list.  The context
1176    structure is not freed so that we can re-use it later.  */
1177 void
1178 _cpp_pop_context (cpp_reader *pfile)
1179 {
1180   cpp_context *context = pfile->context;
1181
1182   if (context->macro)
1183     context->macro->flags &= ~NODE_DISABLED;
1184
1185   if (context->buff)
1186     _cpp_release_buff (pfile, context->buff);
1187
1188   pfile->context = context->prev;
1189 }
1190
1191 /* External routine to get a token.  Also used nearly everywhere
1192    internally, except for places where we know we can safely call
1193    _cpp_lex_token directly, such as lexing a directive name.
1194
1195    Macro expansions and directives are transparently handled,
1196    including entering included files.  Thus tokens are post-macro
1197    expansion, and after any intervening directives.  External callers
1198    see CPP_EOF only at EOF.  Internal callers also see it when meeting
1199    a directive inside a macro call, when at the end of a directive and
1200    state.in_directive is still 1, and at the end of argument
1201    pre-expansion.  */
1202 const cpp_token *
1203 cpp_get_token (cpp_reader *pfile)
1204 {
1205   const cpp_token *result;
1206   bool can_set = pfile->set_invocation_location;
1207   pfile->set_invocation_location = false;
1208
1209   for (;;)
1210     {
1211       cpp_hashnode *node;
1212       cpp_context *context = pfile->context;
1213
1214       /* Context->prev == 0 <=> base context.  */
1215       if (!context->prev)
1216         result = _cpp_lex_token (pfile);
1217       else if (FIRST (context).token != LAST (context).token)
1218         {
1219           if (context->direct_p)
1220             result = FIRST (context).token++;
1221           else
1222             result = *FIRST (context).ptoken++;
1223
1224           if (result->flags & PASTE_LEFT)
1225             {
1226               paste_all_tokens (pfile, result);
1227               if (pfile->state.in_directive)
1228                 continue;
1229               return padding_token (pfile, result);
1230             }
1231         }
1232       else
1233         {
1234           _cpp_pop_context (pfile);
1235           if (pfile->state.in_directive)
1236             continue;
1237           return &pfile->avoid_paste;
1238         }
1239
1240       if (pfile->state.in_directive && result->type == CPP_COMMENT)
1241         continue;
1242
1243       if (result->type != CPP_NAME)
1244         break;
1245
1246       node = result->val.node;
1247
1248       if (node->type != NT_MACRO || (result->flags & NO_EXPAND))
1249         break;
1250
1251       if (!(node->flags & NODE_DISABLED))
1252         {
1253           int ret = 0;
1254           /* If not in a macro context, and we're going to start an
1255              expansion, record the location.  */
1256           if (can_set && !context->macro)
1257             pfile->invocation_location = result->src_loc;
1258           if (pfile->state.prevent_expansion)
1259             break;
1260
1261           /* Conditional macros require that a predicate be evaluated
1262              first.  */
1263           if ((node->flags & NODE_CONDITIONAL) != 0)
1264             {
1265               if (pfile->cb.macro_to_expand)
1266                 {
1267                   bool whitespace_after;
1268                   const cpp_token *peek_tok = cpp_peek_token (pfile, 0);
1269
1270                   whitespace_after = (peek_tok->type == CPP_PADDING
1271                                       || (peek_tok->flags & PREV_WHITE));
1272                   node = pfile->cb.macro_to_expand (pfile, result);
1273                   if (node)
1274                     ret = enter_macro_context (pfile, node, result);
1275                   else if (whitespace_after)
1276                     {
1277                       /* If macro_to_expand hook returned NULL and it
1278                          ate some tokens, see if we don't need to add
1279                          a padding token in between this and the
1280                          next token.  */
1281                       peek_tok = cpp_peek_token (pfile, 0);
1282                       if (peek_tok->type != CPP_PADDING
1283                           && (peek_tok->flags & PREV_WHITE) == 0)
1284                         _cpp_push_token_context (pfile, NULL,
1285                                                  padding_token (pfile,
1286                                                                 peek_tok), 1);
1287                     }
1288                 }
1289             }
1290           else
1291             ret = enter_macro_context (pfile, node, result);
1292           if (ret)
1293             {
1294               if (pfile->state.in_directive || ret == 2)
1295                 continue;
1296               return padding_token (pfile, result);
1297             }
1298         }
1299       else
1300         {
1301           /* Flag this token as always unexpandable.  FIXME: move this
1302              to collect_args()?.  */
1303           cpp_token *t = _cpp_temp_token (pfile);
1304           t->type = result->type;
1305           t->flags = result->flags | NO_EXPAND;
1306           t->val = result->val;
1307           result = t;
1308         }
1309
1310       break;
1311     }
1312
1313   return result;
1314 }
1315
1316 /* Like cpp_get_token, but also returns a location separate from the
1317    one provided by the returned token.  LOC is an out parameter; *LOC
1318    is set to the location "as expected by the user".  This matters
1319    when a token results from macro expansion -- the token's location
1320    will indicate where the macro is defined, but *LOC will be the
1321    location of the start of the expansion.  */
1322 const cpp_token *
1323 cpp_get_token_with_location (cpp_reader *pfile, source_location *loc)
1324 {
1325   const cpp_token *result;
1326
1327   pfile->set_invocation_location = true;
1328   result = cpp_get_token (pfile);
1329   if (pfile->context->macro)
1330     *loc = pfile->invocation_location;
1331   else
1332     *loc = result->src_loc;
1333
1334   return result;
1335 }
1336
1337 /* Returns true if we're expanding an object-like macro that was
1338    defined in a system header.  Just checks the macro at the top of
1339    the stack.  Used for diagnostic suppression.  */
1340 int
1341 cpp_sys_macro_p (cpp_reader *pfile)
1342 {
1343   cpp_hashnode *node = pfile->context->macro;
1344
1345   return node && node->value.macro && node->value.macro->syshdr;
1346 }
1347
1348 /* Read each token in, until end of the current file.  Directives are
1349    transparently processed.  */
1350 void
1351 cpp_scan_nooutput (cpp_reader *pfile)
1352 {
1353   /* Request a CPP_EOF token at the end of this file, rather than
1354      transparently continuing with the including file.  */
1355   pfile->buffer->return_at_eof = true;
1356
1357   pfile->state.discarding_output++;
1358   pfile->state.prevent_expansion++;
1359
1360   if (CPP_OPTION (pfile, traditional))
1361     while (_cpp_read_logical_line_trad (pfile))
1362       ;
1363   else
1364     while (cpp_get_token (pfile)->type != CPP_EOF)
1365       ;
1366
1367   pfile->state.discarding_output--;
1368   pfile->state.prevent_expansion--;
1369 }
1370
1371 /* Step back one or more tokens obtained from the lexer.  */
1372 void
1373 _cpp_backup_tokens_direct (cpp_reader *pfile, unsigned int count)
1374 {
1375   pfile->lookaheads += count;
1376   while (count--)
1377     {
1378       pfile->cur_token--;
1379       if (pfile->cur_token == pfile->cur_run->base
1380           /* Possible with -fpreprocessed and no leading #line.  */
1381           && pfile->cur_run->prev != NULL)
1382         {
1383           pfile->cur_run = pfile->cur_run->prev;
1384           pfile->cur_token = pfile->cur_run->limit;
1385         }
1386     }
1387 }
1388
1389 /* Step back one (or more) tokens.  Can only step back more than 1 if
1390    they are from the lexer, and not from macro expansion.  */
1391 void
1392 _cpp_backup_tokens (cpp_reader *pfile, unsigned int count)
1393 {
1394   if (pfile->context->prev == NULL)
1395     _cpp_backup_tokens_direct (pfile, count);
1396   else
1397     {
1398       if (count != 1)
1399         abort ();
1400       if (pfile->context->direct_p)
1401         FIRST (pfile->context).token--;
1402       else
1403         FIRST (pfile->context).ptoken--;
1404     }
1405 }
1406
1407 /* #define directive parsing and handling.  */
1408
1409 /* Returns nonzero if a macro redefinition warning is required.  */
1410 static bool
1411 warn_of_redefinition (cpp_reader *pfile, const cpp_hashnode *node,
1412                       const cpp_macro *macro2)
1413 {
1414   const cpp_macro *macro1;
1415   unsigned int i;
1416
1417   /* Some redefinitions need to be warned about regardless.  */
1418   if (node->flags & NODE_WARN)
1419     return true;
1420
1421   /* Suppress warnings for builtins that lack the NODE_WARN flag.  */
1422   if (node->flags & NODE_BUILTIN)
1423     return false;
1424
1425   /* Redefinitions of conditional (context-sensitive) macros, on
1426      the other hand, must be allowed silently.  */
1427   if (node->flags & NODE_CONDITIONAL)
1428     return false;
1429
1430   /* Redefinition of a macro is allowed if and only if the old and new
1431      definitions are the same.  (6.10.3 paragraph 2).  */
1432   macro1 = node->value.macro;
1433
1434   /* Don't check count here as it can be different in valid
1435      traditional redefinitions with just whitespace differences.  */
1436   if (macro1->paramc != macro2->paramc
1437       || macro1->fun_like != macro2->fun_like
1438       || macro1->variadic != macro2->variadic)
1439     return true;
1440
1441   /* Check parameter spellings.  */
1442   for (i = 0; i < macro1->paramc; i++)
1443     if (macro1->params[i] != macro2->params[i])
1444       return true;
1445
1446   /* Check the replacement text or tokens.  */
1447   if (CPP_OPTION (pfile, traditional))
1448     return _cpp_expansions_different_trad (macro1, macro2);
1449
1450   if (macro1->count != macro2->count)
1451     return true;
1452
1453   for (i = 0; i < macro1->count; i++)
1454     if (!_cpp_equiv_tokens (&macro1->exp.tokens[i], &macro2->exp.tokens[i]))
1455       return true;
1456
1457   return false;
1458 }
1459
1460 /* Free the definition of hashnode H.  */
1461 void
1462 _cpp_free_definition (cpp_hashnode *h)
1463 {
1464   /* Macros and assertions no longer have anything to free.  */
1465   h->type = NT_VOID;
1466   /* Clear builtin flag in case of redefinition.  */
1467   h->flags &= ~(NODE_BUILTIN | NODE_DISABLED | NODE_USED);
1468 }
1469
1470 /* Save parameter NODE to the parameter list of macro MACRO.  Returns
1471    zero on success, nonzero if the parameter is a duplicate.  */
1472 bool
1473 _cpp_save_parameter (cpp_reader *pfile, cpp_macro *macro, cpp_hashnode *node)
1474 {
1475   unsigned int len;
1476   /* Constraint 6.10.3.6 - duplicate parameter names.  */
1477   if (node->flags & NODE_MACRO_ARG)
1478     {
1479       cpp_error (pfile, CPP_DL_ERROR, "duplicate macro parameter \"%s\"",
1480                  NODE_NAME (node));
1481       return true;
1482     }
1483
1484   if (BUFF_ROOM (pfile->a_buff)
1485       < (macro->paramc + 1) * sizeof (cpp_hashnode *))
1486     _cpp_extend_buff (pfile, &pfile->a_buff, sizeof (cpp_hashnode *));
1487
1488   ((cpp_hashnode **) BUFF_FRONT (pfile->a_buff))[macro->paramc++] = node;
1489   node->flags |= NODE_MACRO_ARG;
1490   len = macro->paramc * sizeof (union _cpp_hashnode_value);
1491   if (len > pfile->macro_buffer_len)
1492     {
1493       pfile->macro_buffer = XRESIZEVEC (unsigned char, pfile->macro_buffer,
1494                                         len);
1495       pfile->macro_buffer_len = len;
1496     }
1497   ((union _cpp_hashnode_value *) pfile->macro_buffer)[macro->paramc - 1]
1498     = node->value;
1499
1500   node->value.arg_index  = macro->paramc;
1501   return false;
1502 }
1503
1504 /* Check the syntax of the parameters in a MACRO definition.  Returns
1505    false if an error occurs.  */
1506 static bool
1507 parse_params (cpp_reader *pfile, cpp_macro *macro)
1508 {
1509   unsigned int prev_ident = 0;
1510
1511   for (;;)
1512     {
1513       const cpp_token *token = _cpp_lex_token (pfile);
1514
1515       switch (token->type)
1516         {
1517         default:
1518           /* Allow/ignore comments in parameter lists if we are
1519              preserving comments in macro expansions.  */
1520           if (token->type == CPP_COMMENT
1521               && ! CPP_OPTION (pfile, discard_comments_in_macro_exp))
1522             continue;
1523
1524           cpp_error (pfile, CPP_DL_ERROR,
1525                      "\"%s\" may not appear in macro parameter list",
1526                      cpp_token_as_text (pfile, token));
1527           return false;
1528
1529         case CPP_NAME:
1530           if (prev_ident)
1531             {
1532               cpp_error (pfile, CPP_DL_ERROR,
1533                          "macro parameters must be comma-separated");
1534               return false;
1535             }
1536           prev_ident = 1;
1537
1538           if (_cpp_save_parameter (pfile, macro, token->val.node))
1539             return false;
1540           continue;
1541
1542         case CPP_CLOSE_PAREN:
1543           if (prev_ident || macro->paramc == 0)
1544             return true;
1545
1546           /* Fall through to pick up the error.  */
1547         case CPP_COMMA:
1548           if (!prev_ident)
1549             {
1550               cpp_error (pfile, CPP_DL_ERROR, "parameter name missing");
1551               return false;
1552             }
1553           prev_ident = 0;
1554           continue;
1555
1556         case CPP_ELLIPSIS:
1557           macro->variadic = 1;
1558           if (!prev_ident)
1559             {
1560               _cpp_save_parameter (pfile, macro,
1561                                    pfile->spec_nodes.n__VA_ARGS__);
1562               pfile->state.va_args_ok = 1;
1563               if (! CPP_OPTION (pfile, c99)
1564                   && CPP_OPTION (pfile, pedantic)
1565                   && CPP_OPTION (pfile, warn_variadic_macros))
1566                 cpp_error (pfile, CPP_DL_PEDWARN,
1567                            "anonymous variadic macros were introduced in C99");
1568             }
1569           else if (CPP_OPTION (pfile, pedantic)
1570                    && CPP_OPTION (pfile, warn_variadic_macros))
1571             cpp_error (pfile, CPP_DL_PEDWARN,
1572                        "ISO C does not permit named variadic macros");
1573
1574           /* We're at the end, and just expect a closing parenthesis.  */
1575           token = _cpp_lex_token (pfile);
1576           if (token->type == CPP_CLOSE_PAREN)
1577             return true;
1578           /* Fall through.  */
1579
1580         case CPP_EOF:
1581           cpp_error (pfile, CPP_DL_ERROR, "missing ')' in macro parameter list");
1582           return false;
1583         }
1584     }
1585 }
1586
1587 /* Allocate room for a token from a macro's replacement list.  */
1588 static cpp_token *
1589 alloc_expansion_token (cpp_reader *pfile, cpp_macro *macro)
1590 {
1591   if (BUFF_ROOM (pfile->a_buff) < (macro->count + 1) * sizeof (cpp_token))
1592     _cpp_extend_buff (pfile, &pfile->a_buff, sizeof (cpp_token));
1593
1594   return &((cpp_token *) BUFF_FRONT (pfile->a_buff))[macro->count++];
1595 }
1596
1597 /* Lex a token from the expansion of MACRO, but mark parameters as we
1598    find them and warn of traditional stringification.  */
1599 static cpp_token *
1600 lex_expansion_token (cpp_reader *pfile, cpp_macro *macro)
1601 {
1602   cpp_token *token, *saved_cur_token;
1603
1604   saved_cur_token = pfile->cur_token;
1605   pfile->cur_token = alloc_expansion_token (pfile, macro);
1606   token = _cpp_lex_direct (pfile);
1607   pfile->cur_token = saved_cur_token;
1608
1609   /* Is this a parameter?  */
1610   if (token->type == CPP_NAME
1611       && (token->val.node->flags & NODE_MACRO_ARG) != 0)
1612     {
1613       token->type = CPP_MACRO_ARG;
1614       token->val.arg_no = token->val.node->value.arg_index;
1615     }
1616   else if (CPP_WTRADITIONAL (pfile) && macro->paramc > 0
1617            && (token->type == CPP_STRING || token->type == CPP_CHAR))
1618     check_trad_stringification (pfile, macro, &token->val.str);
1619
1620   return token;
1621 }
1622
1623 static bool
1624 create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
1625 {
1626   cpp_token *token;
1627   const cpp_token *ctoken;
1628   bool following_paste_op = false;
1629   const char *paste_op_error_msg =
1630     N_("'##' cannot appear at either end of a macro expansion");
1631
1632   /* Get the first token of the expansion (or the '(' of a
1633      function-like macro).  */
1634   ctoken = _cpp_lex_token (pfile);
1635
1636   if (ctoken->type == CPP_OPEN_PAREN && !(ctoken->flags & PREV_WHITE))
1637     {
1638       bool ok = parse_params (pfile, macro);
1639       macro->params = (cpp_hashnode **) BUFF_FRONT (pfile->a_buff);
1640       if (!ok)
1641         return false;
1642
1643       /* Success.  Commit or allocate the parameter array.  */
1644       if (pfile->hash_table->alloc_subobject)
1645         {
1646           cpp_hashnode **params =
1647             (cpp_hashnode **) pfile->hash_table->alloc_subobject
1648             (sizeof (cpp_hashnode *) * macro->paramc);
1649           memcpy (params, macro->params,
1650                   sizeof (cpp_hashnode *) * macro->paramc);
1651           macro->params = params;
1652         }
1653       else
1654         BUFF_FRONT (pfile->a_buff) = (uchar *) &macro->params[macro->paramc];
1655       macro->fun_like = 1;
1656     }
1657   else if (ctoken->type != CPP_EOF && !(ctoken->flags & PREV_WHITE))
1658     {
1659       /* While ISO C99 requires whitespace before replacement text
1660          in a macro definition, ISO C90 with TC1 allows there characters
1661          from the basic source character set.  */
1662       if (CPP_OPTION (pfile, c99))
1663         cpp_error (pfile, CPP_DL_PEDWARN,
1664                    "ISO C99 requires whitespace after the macro name");
1665       else
1666         {
1667           int warntype = CPP_DL_WARNING;
1668           switch (ctoken->type)
1669             {
1670             case CPP_ATSIGN:
1671             case CPP_AT_NAME:
1672             case CPP_OBJC_STRING:
1673               /* '@' is not in basic character set.  */
1674               warntype = CPP_DL_PEDWARN;
1675               break;
1676             case CPP_OTHER:
1677               /* Basic character set sans letters, digits and _.  */
1678               if (strchr ("!\"#%&'()*+,-./:;<=>?[\\]^{|}~",
1679                           ctoken->val.str.text[0]) == NULL)
1680                 warntype = CPP_DL_PEDWARN;
1681               break;
1682             default:
1683               /* All other tokens start with a character from basic
1684                  character set.  */
1685               break;
1686             }
1687           cpp_error (pfile, warntype,
1688                      "missing whitespace after the macro name");
1689         }
1690     }
1691
1692   if (macro->fun_like)
1693     token = lex_expansion_token (pfile, macro);
1694   else
1695     {
1696       token = alloc_expansion_token (pfile, macro);
1697       *token = *ctoken;
1698     }
1699
1700   for (;;)
1701     {
1702       /* Check the stringifying # constraint 6.10.3.2.1 of
1703          function-like macros when lexing the subsequent token.  */
1704       if (macro->count > 1 && token[-1].type == CPP_HASH && macro->fun_like)
1705         {
1706           if (token->type == CPP_MACRO_ARG)
1707             {
1708               token->flags &= ~PREV_WHITE;
1709               token->flags |= STRINGIFY_ARG;
1710               token->flags |= token[-1].flags & PREV_WHITE;
1711               token[-1] = token[0];
1712               macro->count--;
1713             }
1714           /* Let assembler get away with murder.  */
1715           else if ((CPP_OPTION (pfile, lang) != CLK_ASM)
1716                 && (!CPP_OPTION(pfile, allow_naked_hash)))
1717             {
1718               cpp_error (pfile, CPP_DL_ERROR,
1719                          "'#' is not followed by a macro parameter");
1720               return false;
1721             }
1722         }
1723
1724       if (token->type == CPP_EOF)
1725         {
1726           /* Paste operator constraint 6.10.3.3.1:
1727              Token-paste ##, can appear in both object-like and
1728              function-like macros, but not at the end.  */
1729           if (following_paste_op)
1730             {
1731               cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
1732               return false;
1733             }
1734           break;
1735         }
1736
1737       /* Paste operator constraint 6.10.3.3.1.  */
1738       if (token->type == CPP_PASTE)
1739         {
1740           /* Token-paste ##, can appear in both object-like and
1741              function-like macros, but not at the beginning.  */
1742           if (macro->count == 1)
1743             {
1744               cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
1745               return false;
1746             }
1747
1748           --macro->count;
1749           token[-1].flags |= PASTE_LEFT;
1750         }
1751
1752       following_paste_op = (token->type == CPP_PASTE);
1753       token = lex_expansion_token (pfile, macro);
1754     }
1755
1756   macro->exp.tokens = (cpp_token *) BUFF_FRONT (pfile->a_buff);
1757   macro->traditional = 0;
1758
1759   /* Don't count the CPP_EOF.  */
1760   macro->count--;
1761
1762   /* Clear whitespace on first token for warn_of_redefinition().  */
1763   if (macro->count)
1764     macro->exp.tokens[0].flags &= ~PREV_WHITE;
1765
1766   /* Commit or allocate the memory.  */
1767   if (pfile->hash_table->alloc_subobject)
1768     {
1769       cpp_token *tokns =
1770         (cpp_token *) pfile->hash_table->alloc_subobject (sizeof (cpp_token)
1771                                                           * macro->count);
1772       memcpy (tokns, macro->exp.tokens, sizeof (cpp_token) * macro->count);
1773       macro->exp.tokens = tokns;
1774     }
1775   else
1776     BUFF_FRONT (pfile->a_buff) = (uchar *) &macro->exp.tokens[macro->count];
1777
1778   return true;
1779 }
1780
1781 /* Parse a macro and save its expansion.  Returns nonzero on success.  */
1782 bool
1783 _cpp_create_definition (cpp_reader *pfile, cpp_hashnode *node)
1784 {
1785   cpp_macro *macro;
1786   unsigned int i;
1787   bool ok;
1788
1789   if (pfile->hash_table->alloc_subobject)
1790     macro = (cpp_macro *) pfile->hash_table->alloc_subobject
1791       (sizeof (cpp_macro));
1792   else
1793     macro = (cpp_macro *) _cpp_aligned_alloc (pfile, sizeof (cpp_macro));
1794   macro->line = pfile->directive_line;
1795   macro->params = 0;
1796   macro->paramc = 0;
1797   macro->variadic = 0;
1798   macro->used = !CPP_OPTION (pfile, warn_unused_macros);
1799   macro->count = 0;
1800   macro->fun_like = 0;
1801   /* To suppress some diagnostics.  */
1802   macro->syshdr = pfile->buffer && pfile->buffer->sysp != 0;
1803
1804   if (CPP_OPTION (pfile, traditional))
1805     ok = _cpp_create_trad_definition (pfile, macro);
1806   else
1807     {
1808       ok = create_iso_definition (pfile, macro);
1809
1810       /* We set the type for SEEN_EOL() in directives.c.
1811
1812          Longer term we should lex the whole line before coming here,
1813          and just copy the expansion.  */
1814
1815       /* Stop the lexer accepting __VA_ARGS__.  */
1816       pfile->state.va_args_ok = 0;
1817     }
1818
1819   /* Clear the fast argument lookup indices.  */
1820   for (i = macro->paramc; i-- > 0; )
1821     {
1822       struct cpp_hashnode *node = macro->params[i];
1823       node->flags &= ~ NODE_MACRO_ARG;
1824       node->value = ((union _cpp_hashnode_value *) pfile->macro_buffer)[i];
1825     }
1826
1827   if (!ok)
1828     return ok;
1829
1830   if (node->type == NT_MACRO)
1831     {
1832       if (CPP_OPTION (pfile, warn_unused_macros))
1833         _cpp_warn_if_unused_macro (pfile, node, NULL);
1834
1835       if (warn_of_redefinition (pfile, node, macro))
1836         {
1837           cpp_error_with_line (pfile, CPP_DL_PEDWARN, pfile->directive_line, 0,
1838                                "\"%s\" redefined", NODE_NAME (node));
1839
1840           if (node->type == NT_MACRO && !(node->flags & NODE_BUILTIN))
1841             cpp_error_with_line (pfile, CPP_DL_PEDWARN,
1842                                  node->value.macro->line, 0,
1843                          "this is the location of the previous definition");
1844         }
1845     }
1846
1847   if (node->type != NT_VOID)
1848     _cpp_free_definition (node);
1849
1850   /* Enter definition in hash table.  */
1851   node->type = NT_MACRO;
1852   node->value.macro = macro;
1853   if (! ustrncmp (NODE_NAME (node), DSC ("__STDC_"))
1854       && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_FORMAT_MACROS")
1855       /* __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS are mentioned
1856          in the C standard, as something that one must use in C++.
1857          However DR#593 indicates that these aren't actually mentioned
1858          in the C++ standard.  We special-case them anyway.  */
1859       && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_LIMIT_MACROS")
1860       && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_CONSTANT_MACROS"))
1861     node->flags |= NODE_WARN;
1862
1863   /* If user defines one of the conditional macros, remove the
1864      conditional flag */
1865   node->flags &= ~NODE_CONDITIONAL;
1866
1867   return ok;
1868 }
1869
1870 /* Warn if a token in STRING matches one of a function-like MACRO's
1871    parameters.  */
1872 static void
1873 check_trad_stringification (cpp_reader *pfile, const cpp_macro *macro,
1874                             const cpp_string *string)
1875 {
1876   unsigned int i, len;
1877   const uchar *p, *q, *limit;
1878
1879   /* Loop over the string.  */
1880   limit = string->text + string->len - 1;
1881   for (p = string->text + 1; p < limit; p = q)
1882     {
1883       /* Find the start of an identifier.  */
1884       while (p < limit && !is_idstart (*p))
1885         p++;
1886
1887       /* Find the end of the identifier.  */
1888       q = p;
1889       while (q < limit && is_idchar (*q))
1890         q++;
1891
1892       len = q - p;
1893
1894       /* Loop over the function macro arguments to see if the
1895          identifier inside the string matches one of them.  */
1896       for (i = 0; i < macro->paramc; i++)
1897         {
1898           const cpp_hashnode *node = macro->params[i];
1899
1900           if (NODE_LEN (node) == len
1901               && !memcmp (p, NODE_NAME (node), len))
1902             {
1903               cpp_error (pfile, CPP_DL_WARNING,
1904            "macro argument \"%s\" would be stringified in traditional C",
1905                          NODE_NAME (node));
1906               break;
1907             }
1908         }
1909     }
1910 }
1911
1912 /* Returns the name, arguments and expansion of a macro, in a format
1913    suitable to be read back in again, and therefore also for DWARF 2
1914    debugging info.  e.g. "PASTE(X, Y) X ## Y", or "MACNAME EXPANSION".
1915    Caller is expected to generate the "#define" bit if needed.  The
1916    returned text is temporary, and automatically freed later.  */
1917 const unsigned char *
1918 cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node)
1919 {
1920   unsigned int i, len;
1921   const cpp_macro *macro = node->value.macro;
1922   unsigned char *buffer;
1923
1924   if (node->type != NT_MACRO || (node->flags & NODE_BUILTIN))
1925     {
1926       cpp_error (pfile, CPP_DL_ICE,
1927                  "invalid hash type %d in cpp_macro_definition", node->type);
1928       return 0;
1929     }
1930
1931   /* Calculate length.  */
1932   len = NODE_LEN (node) + 2;                    /* ' ' and NUL.  */
1933   if (macro->fun_like)
1934     {
1935       len += 4;         /* "()" plus possible final ".." of named
1936                            varargs (we have + 1 below).  */
1937       for (i = 0; i < macro->paramc; i++)
1938         len += NODE_LEN (macro->params[i]) + 1; /* "," */
1939     }
1940
1941   /* This should match below where we fill in the buffer.  */
1942   if (CPP_OPTION (pfile, traditional))
1943     len += _cpp_replacement_text_len (macro);
1944   else
1945     {
1946       for (i = 0; i < macro->count; i++)
1947         {
1948           cpp_token *token = &macro->exp.tokens[i];
1949
1950           if (token->type == CPP_MACRO_ARG)
1951             len += NODE_LEN (macro->params[token->val.arg_no - 1]);
1952           else
1953             len += cpp_token_len (token);
1954
1955           if (token->flags & STRINGIFY_ARG)
1956             len++;                      /* "#" */
1957           if (token->flags & PASTE_LEFT)
1958             len += 3;           /* " ##" */
1959           if (token->flags & PREV_WHITE)
1960             len++;              /* " " */
1961         }
1962     }
1963
1964   if (len > pfile->macro_buffer_len)
1965     {
1966       pfile->macro_buffer = XRESIZEVEC (unsigned char,
1967                                         pfile->macro_buffer, len);
1968       pfile->macro_buffer_len = len;
1969     }
1970
1971   /* Fill in the buffer.  Start with the macro name.  */
1972   buffer = pfile->macro_buffer;
1973   memcpy (buffer, NODE_NAME (node), NODE_LEN (node));
1974   buffer += NODE_LEN (node);
1975
1976   /* Parameter names.  */
1977   if (macro->fun_like)
1978     {
1979       *buffer++ = '(';
1980       for (i = 0; i < macro->paramc; i++)
1981         {
1982           cpp_hashnode *param = macro->params[i];
1983
1984           if (param != pfile->spec_nodes.n__VA_ARGS__)
1985             {
1986               memcpy (buffer, NODE_NAME (param), NODE_LEN (param));
1987               buffer += NODE_LEN (param);
1988             }
1989
1990           if (i + 1 < macro->paramc)
1991             /* Don't emit a space after the comma here; we're trying
1992                to emit a Dwarf-friendly definition, and the Dwarf spec
1993                forbids spaces in the argument list.  */
1994             *buffer++ = ',';
1995           else if (macro->variadic)
1996             *buffer++ = '.', *buffer++ = '.', *buffer++ = '.';
1997         }
1998       *buffer++ = ')';
1999     }
2000
2001   /* The Dwarf spec requires a space after the macro name, even if the
2002      definition is the empty string.  */
2003   *buffer++ = ' ';
2004
2005   if (CPP_OPTION (pfile, traditional))
2006     buffer = _cpp_copy_replacement_text (macro, buffer);
2007   else if (macro->count)
2008   /* Expansion tokens.  */
2009     {
2010       for (i = 0; i < macro->count; i++)
2011         {
2012           cpp_token *token = &macro->exp.tokens[i];
2013
2014           if (token->flags & PREV_WHITE)
2015             *buffer++ = ' ';
2016           if (token->flags & STRINGIFY_ARG)
2017             *buffer++ = '#';
2018
2019           if (token->type == CPP_MACRO_ARG)
2020             {
2021               memcpy (buffer,
2022                       NODE_NAME (macro->params[token->val.arg_no - 1]),
2023                       NODE_LEN (macro->params[token->val.arg_no - 1]));
2024               buffer += NODE_LEN (macro->params[token->val.arg_no - 1]);
2025             }
2026           else
2027             buffer = cpp_spell_token (pfile, token, buffer, false);
2028
2029           if (token->flags & PASTE_LEFT)
2030             {
2031               *buffer++ = ' ';
2032               *buffer++ = '#';
2033               *buffer++ = '#';
2034               /* Next has PREV_WHITE; see _cpp_create_definition.  */
2035             }
2036         }
2037     }
2038
2039   *buffer = '\0';
2040   return pfile->macro_buffer;
2041 }