![]() Our handling of block-scope extern decls is insufficient for modern C++, in particular modules, (but also constexprs). We mark such local function decls, and this patch extends that to marking local var decls too, so mainly a macro rename. Also, we set this flag earlier, rather than learning about it when pushing the decl. This is a step towards handling these properly. gcc/cp/ * cp-tree.h (DECL_LOCAL_FUNCTION_P): Rename to ... (DECL_LOCAL_DECL_P): ... here. Accept both fns and vars. * decl.c (start_decl): Set DECL_LOCAL_DECL_P for local externs. (omp_declare_variant_finalize_one): Use DECL_LOCAL_DECL_P. (local_variable_p): Simplify. * name-lookup.c (set_decl_context_in_fn): Assert DECL_LOCAL_DECL_P is as expected. Simplify. (do_pushdecl): Don't set decl_context_in_fn for friends. (is_local_extern): Simplify. * call.c (equal_functions): Use DECL_LOCAL_DECL_P. * parser.c (cp_parser_postfix_expression): Likewise. (cp_parser_omp_declare_reduction): Likewise. * pt.c (check_default_tmpl_args): Likewise. (tsubst_expr): Assert nested reduction function is local. (type_dependent_expression_p): Use DECL_LOCAL_DECL_P. * semantics.c (finish_call_expr): Likewise. libcc1/ * libcp1plugin.cc (plugin_build_call_expr): Use DECL_LOCAL_DECL_P. |
||
---|---|---|
.. | ||
aclocal.m4 | ||
callbacks.cc | ||
callbacks.hh | ||
cc1plugin-config.h.in | ||
ChangeLog | ||
compiler-name.hh | ||
configure | ||
configure.ac | ||
connection.cc | ||
connection.hh | ||
findcomp.cc | ||
findcomp.hh | ||
libcc1.cc | ||
libcc1.sym | ||
libcc1plugin.cc | ||
libcc1plugin.sym | ||
libcp1.cc | ||
libcp1plugin.cc | ||
libcp1plugin.sym | ||
Makefile.am | ||
Makefile.in | ||
marshall-c.hh | ||
marshall-cp.hh | ||
marshall.cc | ||
marshall.hh | ||
names.cc | ||
names.hh | ||
rpc.hh | ||
status.hh |