Lines Matching refs:macro
452 cpp_macro *macro = node->value.macro; in _cpp_warn_if_unused_macro() local
454 if (!macro->used in _cpp_warn_if_unused_macro()
457 macro->line)))) in _cpp_warn_if_unused_macro()
458 cpp_warning_with_line (pfile, CPP_W_UNUSED_MACROS, macro->line, 0, in _cpp_warn_if_unused_macro()
1148 _cpp_arguments_ok (cpp_reader *pfile, cpp_macro *macro, const cpp_hashnode *node, unsigned int argc) in _cpp_arguments_ok() argument
1150 if (argc == macro->paramc) in _cpp_arguments_ok()
1153 if (argc < macro->paramc) in _cpp_arguments_ok()
1164 if (argc + 1 == macro->paramc && macro->variadic) in _cpp_arguments_ok()
1166 if (CPP_PEDANTIC (pfile) && ! macro->syshdr in _cpp_arguments_ok()
1183 NODE_NAME (node), macro->paramc, argc); in _cpp_arguments_ok()
1188 NODE_NAME (node), argc, macro->paramc); in _cpp_arguments_ok()
1190 if (macro->line > RESERVED_LOCATION_COUNT) in _cpp_arguments_ok()
1191 cpp_error_at (pfile, CPP_DL_NOTE, macro->line, "macro \"%s\" defined here", in _cpp_arguments_ok()
1215 cpp_macro *macro; in collect_args() local
1223 macro = node->value.macro; in collect_args()
1224 if (macro->paramc) in collect_args()
1225 argc = macro->paramc; in collect_args()
1299 && ! (macro->variadic && argc == macro->paramc)) in collect_args()
1368 if (argc <= macro->paramc) in collect_args()
1371 if (argc != macro->paramc) in collect_args()
1391 if (argc == 1 && macro->paramc == 0 && args[0].count == 0) in collect_args()
1393 if (_cpp_arguments_ok (pfile, macro, node, argc)) in collect_args()
1402 if (macro->variadic && (argc < macro->paramc in collect_args()
1405 args[macro->paramc - 1].first = NULL; in collect_args()
1467 macro_real_token_count (const cpp_macro *macro) in macro_real_token_count() argument
1469 if (__builtin_expect (!macro->extra_tokens, true)) in macro_real_token_count()
1470 return macro->count; in macro_real_token_count()
1472 for (unsigned i = macro->count; i--;) in macro_real_token_count()
1473 if (macro->exp.tokens[i].type != CPP_PASTE) in macro_real_token_count()
1510 cpp_macro *macro = node->value.macro; in enter_macro_context() local
1513 if (macro->fun_like) in enter_macro_context()
1529 if (CPP_WTRADITIONAL (pfile) && ! node->value.macro->syshdr) in enter_macro_context()
1541 if (macro->paramc > 0) in enter_macro_context()
1542 replace_args (pfile, node, macro, in enter_macro_context()
1560 macro->used = 1; in enter_macro_context()
1562 if (macro->paramc == 0) in enter_macro_context()
1564 unsigned tokens_count = macro_real_token_count (macro); in enter_macro_context()
1568 const cpp_token *src = macro->exp.tokens; in enter_macro_context()
1594 _cpp_push_token_context (pfile, node, macro->exp.tokens, in enter_macro_context()
1909 expanded_token_index (cpp_reader *pfile, cpp_macro *macro, in expanded_token_index() argument
1915 return cur_replacement_token - macro->exp.tokens; in expanded_token_index()
1949 replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, in replace_args() argument
1970 exp_count = macro_real_token_count (macro); in replace_args()
1972 limit = macro->exp.tokens + exp_count; in replace_args()
1974 for (src = macro->exp.tokens; src < limit; src++) in replace_args()
1995 || (src != macro->exp.tokens && (src[-1].flags & PASTE_LEFT))) in replace_args()
2072 vaopt_state vaopt_tracker (pfile, macro->variadic, &args[macro->paramc - 1]); in replace_args()
2074 for (src = macro->exp.tokens; src < limit; src++) in replace_args()
2088 if (src != macro->exp.tokens && !(src[-1].flags & PASTE_LEFT)) in replace_args()
2091 unsigned index = expanded_token_index (pfile, macro, src, i); in replace_args()
2199 unsigned index = expanded_token_index (pfile, macro, src, i); in replace_args()
2236 else if (src != macro->exp.tokens && (src[-1].flags & PASTE_LEFT)) in replace_args()
2258 && macro->variadic in replace_args()
2259 && src->val.macro_arg.arg_no == macro->paramc) in replace_args()
2302 && src != macro->exp.tokens in replace_args()
2307 unsigned index = expanded_token_index (pfile, macro, src, i); in replace_args()
2347 index = expanded_token_index (pfile, macro, src, token_index); in replace_args()
2362 && ! macro->syshdr && ! _cpp_in_system_header (pfile)) in replace_args()
2381 && ! macro->syshdr && ! _cpp_in_system_header (pfile)) in replace_args()
2451 push_ptoken_context (cpp_reader *pfile, cpp_hashnode *macro, _cpp_buff *buff, in push_ptoken_context() argument
2457 context->c.macro = macro; in push_ptoken_context()
2470 _cpp_push_token_context (cpp_reader *pfile, cpp_hashnode *macro, in _cpp_push_token_context() argument
2475 if (macro == NULL) in _cpp_push_token_context()
2476 macro = macro_of_context (pfile->context); in _cpp_push_token_context()
2480 context->c.macro = macro; in _cpp_push_token_context()
2499 cpp_hashnode *macro, in push_extended_tokens_context() argument
2508 if (macro == NULL) in push_extended_tokens_context()
2509 macro = macro_of_context (pfile->context); in push_extended_tokens_context()
2516 m->macro_node = macro; in push_extended_tokens_context()
2526 _cpp_push_text_context (cpp_reader *pfile, cpp_hashnode *macro, in _cpp_push_text_context() argument
2532 context->c.macro = macro; in _cpp_push_text_context()
2536 macro->flags |= NODE_DISABLED; in _cpp_push_text_context()
2798 : context->c.macro; in macro_of_context()
2827 if (context->c.macro) in _cpp_pop_context()
2829 cpp_hashnode *macro; in _cpp_pop_context() local
2833 macro = mc->macro_node; in _cpp_pop_context()
2847 macro = context->c.macro; in _cpp_pop_context()
2854 if (macro != NULL in _cpp_pop_context()
2861 && macro_of_context (context->prev) != macro) in _cpp_pop_context()
2862 macro->flags &= ~NODE_DISABLED; in _cpp_pop_context()
2864 if (macro == pfile->top_most_macro_node && context->prev == NULL) in _cpp_pop_context()
3007 if (pfile->context->c.macro) in cpp_get_token_1()
3029 && !node->value.macro in cpp_get_token_1()
3273 node = pfile->context->c.macro; in cpp_sys_macro_p()
3279 return node->value.macro && node->value.macro->syshdr; in cpp_sys_macro_p()
3341 if (pfile->context->c.macro) in _cpp_backup_tokens()
3603 lex_expansion_token (cpp_reader *pfile, cpp_macro *macro) in lex_expansion_token() argument
3605 macro = (cpp_macro *)_cpp_reserve_room (pfile, in lex_expansion_token()
3607 + macro->count * sizeof (cpp_token), in lex_expansion_token()
3610 pfile->cur_token = ¯o->exp.tokens[macro->count]; in lex_expansion_token()
3623 else if (CPP_WTRADITIONAL (pfile) && macro->paramc > 0 in lex_expansion_token()
3625 check_trad_stringification (pfile, macro, &token->val.str); in lex_expansion_token()
3627 return macro; in lex_expansion_token()
3641 cpp_macro *macro = NULL; in create_iso_definition() local
3702 macro = _cpp_new_macro (pfile, cmk_macro, in create_iso_definition()
3707 macro->variadic = varadic; in create_iso_definition()
3708 macro->paramc = nparms; in create_iso_definition()
3709 macro->parm.params = params; in create_iso_definition()
3710 macro->fun_like = true; in create_iso_definition()
3715 macro->exp.tokens[0] = *token; in create_iso_definition()
3716 token = ¯o->exp.tokens[0]; in create_iso_definition()
3717 macro->count = 1; in create_iso_definition()
3720 for (vaopt_state vaopt_tracker (pfile, macro->variadic, NULL);; token = NULL) in create_iso_definition()
3724 macro = lex_expansion_token (pfile, macro); in create_iso_definition()
3725 token = ¯o->exp.tokens[macro->count++]; in create_iso_definition()
3730 if (macro->count > 1 && token[-1].type == CPP_HASH && macro->fun_like) in create_iso_definition()
3733 || (macro->variadic in create_iso_definition()
3745 macro->count--; in create_iso_definition()
3776 if (macro->count == 1) in create_iso_definition()
3787 token->val.token_no = macro->count - 1; in create_iso_definition()
3792 --macro->count; in create_iso_definition()
3812 macro->count--; in create_iso_definition()
3814 macro = (cpp_macro *)_cpp_commit_buff in create_iso_definition()
3816 + sizeof (cpp_token) * macro->count); in create_iso_definition()
3819 if (macro->count) in create_iso_definition()
3820 macro->exp.tokens[0].flags &= ~PREV_WHITE; in create_iso_definition()
3833 cpp_token *exp = macro->exp.tokens; in create_iso_definition()
3834 for (unsigned ix = 0; ix != macro->count; ix++) in create_iso_definition()
3842 macro->extra_tokens = 1; in create_iso_definition()
3849 return ok ? macro : NULL; in create_iso_definition()
3855 cpp_macro *macro = (cpp_macro *) placement; in _cpp_new_macro() local
3859 memset (macro, 0, offsetof (cpp_macro, exp)); in _cpp_new_macro()
3861 macro->line = pfile->directive_line; in _cpp_new_macro()
3862 macro->parm.params = 0; in _cpp_new_macro()
3863 macro->lazy = 0; in _cpp_new_macro()
3864 macro->paramc = 0; in _cpp_new_macro()
3865 macro->variadic = 0; in _cpp_new_macro()
3866 macro->used = !CPP_OPTION (pfile, warn_unused_macros); in _cpp_new_macro()
3867 macro->count = 0; in _cpp_new_macro()
3868 macro->fun_like = 0; in _cpp_new_macro()
3869 macro->imported_p = false; in _cpp_new_macro()
3870 macro->extra_tokens = 0; in _cpp_new_macro()
3872 macro->syshdr = pfile->buffer && pfile->buffer->sysp != 0; in _cpp_new_macro()
3874 macro->kind = kind; in _cpp_new_macro()
3876 return macro; in _cpp_new_macro()
3883 cpp_macro *macro; in _cpp_create_definition() local
3886 macro = _cpp_create_trad_definition (pfile); in _cpp_create_definition()
3888 macro = create_iso_definition (pfile); in _cpp_create_definition()
3890 if (!macro) in _cpp_create_definition()
3898 if (warn_of_redefinition (pfile, node, macro)) in _cpp_create_definition()
3911 node->value.macro->line, 0, in _cpp_create_definition()
3919 node->value.macro = macro; in _cpp_create_definition()
3940 cpp_macro *macro = node->value.macro; in cpp_define_lazily() local
3942 gcc_checking_assert (pfile->cb.user_lazy_macro && macro && num < UCHAR_MAX); in cpp_define_lazily()
3944 macro->lazy = num + 1; in cpp_define_lazily()
3955 node->value.macro = pfile->cb.user_deferred_macro (pfile, loc, node); in cpp_get_deferred_macro()
3957 if (!node->value.macro) in cpp_get_deferred_macro()
3960 return node->value.macro; in cpp_get_deferred_macro()
3967 cpp_macro *macro = node->value.macro; in get_deferred_or_lazy_macro() local
3968 if (!macro) in get_deferred_or_lazy_macro()
3970 macro = cpp_get_deferred_macro (pfile, node, loc); in get_deferred_or_lazy_macro()
3971 gcc_checking_assert (!macro || !macro->lazy); in get_deferred_or_lazy_macro()
3973 else if (macro->lazy) in get_deferred_or_lazy_macro()
3975 pfile->cb.user_lazy_macro (pfile, macro, macro->lazy - 1); in get_deferred_or_lazy_macro()
3976 macro->lazy = 0; in get_deferred_or_lazy_macro()
3979 return macro; in get_deferred_or_lazy_macro()
4018 check_trad_stringification (cpp_reader *pfile, const cpp_macro *macro, in check_trad_stringification() argument
4041 for (i = 0; i < macro->paramc; i++) in check_trad_stringification()
4043 const cpp_hashnode *node = macro->parm.params[i]; in check_trad_stringification()
4067 if (const cpp_macro *macro = get_deferred_or_lazy_macro (pfile, node, 0)) in cpp_macro_definition() local
4068 return cpp_macro_definition (pfile, node, macro); in cpp_macro_definition()
4074 const cpp_macro *macro) in cpp_macro_definition() argument
4081 if (macro->fun_like) in cpp_macro_definition()
4085 for (i = 0; i < macro->paramc; i++) in cpp_macro_definition()
4086 len += NODE_LEN (macro->parm.params[i]) + 1; /* "," */ in cpp_macro_definition()
4091 len += _cpp_replacement_text_len (macro); in cpp_macro_definition()
4094 unsigned int count = macro_real_token_count (macro); in cpp_macro_definition()
4097 const cpp_token *token = ¯o->exp.tokens[i]; in cpp_macro_definition()
4125 if (macro->fun_like) in cpp_macro_definition()
4128 for (i = 0; i < macro->paramc; i++) in cpp_macro_definition()
4130 cpp_hashnode *param = macro->parm.params[i]; in cpp_macro_definition()
4138 if (i + 1 < macro->paramc) in cpp_macro_definition()
4143 else if (macro->variadic) in cpp_macro_definition()
4154 buffer = _cpp_copy_replacement_text (macro, buffer); in cpp_macro_definition()
4155 else if (macro->count) in cpp_macro_definition()
4158 unsigned int count = macro_real_token_count (macro); in cpp_macro_definition()
4161 const cpp_token *token = ¯o->exp.tokens[i]; in cpp_macro_definition()