+2014-02-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/58844
+ * macro.c (enter_macro_context): Only push
+ macro_real_token_count (macro) tokens rather than
+ macro->count tokens, regardless of
+ CPP_OPTION (pfile, track-macro-expansion).
+
2014-02-07 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/56824
if (macro->paramc == 0)
{
+ unsigned tokens_count = macro_real_token_count (macro);
if (CPP_OPTION (pfile, track_macro_expansion))
{
- unsigned int i, count = macro->count;
+ unsigned int i;
const cpp_token *src = macro->exp.tokens;
const struct line_map *map;
source_location *virt_locs = NULL;
- _cpp_buff *macro_tokens =
- tokens_buff_new (pfile, count, &virt_locs);
+ _cpp_buff *macro_tokens
+ = tokens_buff_new (pfile, tokens_count, &virt_locs);
/* Create a macro map to record the locations of the
tokens that are involved in the expansion. LOCATION
is the location of the macro expansion point. */
- map = linemap_enter_macro (pfile->line_table,
- node, location, count);
- for (i = 0; i < count; ++i)
+ map = linemap_enter_macro (pfile->line_table,
+ node, location, tokens_count);
+ for (i = 0; i < tokens_count; ++i)
{
tokens_buff_add_token (macro_tokens, virt_locs,
src, src->src_loc,
virt_locs,
(const cpp_token **)
macro_tokens->base,
- count);
- num_macro_tokens_counter += count;
+ tokens_count);
}
else
- {
- unsigned tokens_count = macro_real_token_count (macro);
- _cpp_push_token_context (pfile, node, macro->exp.tokens,
- tokens_count);
- num_macro_tokens_counter += tokens_count;
- }
+ _cpp_push_token_context (pfile, node, macro->exp.tokens,
+ tokens_count);
+ num_macro_tokens_counter += tokens_count;
}
if (pragma_buff)