From 817a788f9eb01eff367191401d48f2aaa8d4f428 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Wed, 10 Feb 2016 14:40:41 -0800 Subject: Unify ChromeOS and Android versions of GCC. This CL updates Android's GCC to match ChromeOS's GCC (with appropriate patches applied in both places to make sure no cherry-picked changes are lost). Change-Id: I390140c449b0e5df9ee78a06268319c8c510302f --- gcc-4.9/gcc/cp/cp-lang.c | 4 ++-- gcc-4.9/gcc/cp/cp-tree.h | 3 ++- gcc-4.9/gcc/cp/decl2.c | 5 +++-- gcc-4.9/gcc/cp/parser.c | 10 ++++++++++ 4 files changed, 17 insertions(+), 5 deletions(-) (limited to 'gcc-4.9/gcc/cp') diff --git a/gcc-4.9/gcc/cp/cp-lang.c b/gcc-4.9/gcc/cp/cp-lang.c index 22f8e4bbb..bd2c2b7bd 100644 --- a/gcc-4.9/gcc/cp/cp-lang.c +++ b/gcc-4.9/gcc/cp/cp-lang.c @@ -109,8 +109,8 @@ static tree get_template_argument_pack_elems_folded (const_tree); #define LANG_HOOKS_COPY_LANG_TYPE cp_lipo_copy_lang_type #undef LANG_HOOKS_PROCESS_PENDING_DECLS #define LANG_HOOKS_PROCESS_PENDING_DECLS cp_process_pending_declarations -#undef LANG_HOOKS_CLEAR_DEFFERED_FNS -#define LANG_HOOKS_CLEAR_DEFFERED_FNS cp_clear_deferred_fns +#undef LANG_HOOKS_RESET_PARSING_STATE +#define LANG_HOOKS_RESET_PARSING_STATE cp_reset_parsing_state #undef LANG_HOOKS_IS_GENERATED_TYPE #define LANG_HOOKS_IS_GENERATED_TYPE cp_is_compiler_generated_type #undef LANG_HOOKS_CMP_LANG_TYPE diff --git a/gcc-4.9/gcc/cp/cp-tree.h b/gcc-4.9/gcc/cp/cp-tree.h index ac60ad5b9..793c8481d 100644 --- a/gcc-4.9/gcc/cp/cp-tree.h +++ b/gcc-4.9/gcc/cp/cp-tree.h @@ -4385,6 +4385,7 @@ extern int cp_unevaluated_operand; extern tree cp_convert_range_for (tree, tree, tree, bool); extern bool parsing_nsdmi (void); extern void inject_this_parameter (tree, cp_cv_quals); +extern void clear_lambda_scope (void); /* in pt.c */ @@ -5342,7 +5343,7 @@ extern void cplus_decl_attributes (tree *, tree, int); extern void finish_anon_union (tree); extern void cp_write_global_declarations (void); extern void cp_process_pending_declarations (location_t); -extern void cp_clear_deferred_fns (void); +extern void cp_reset_parsing_state (void); extern void cp_clear_constexpr_hashtable (void); extern void cp_clear_conv_type_map (void); extern tree coerce_new_type (tree); diff --git a/gcc-4.9/gcc/cp/decl2.c b/gcc-4.9/gcc/cp/decl2.c index 074108eea..ff0d30446 100644 --- a/gcc-4.9/gcc/cp/decl2.c +++ b/gcc-4.9/gcc/cp/decl2.c @@ -4178,10 +4178,10 @@ no_linkage_error (tree decl) "to declare function %q#D with linkage", t, decl); } -/* Clear the list of deferred functions. */ +/* Reset the parsing state for the next module. */ void -cp_clear_deferred_fns (void) +cp_reset_parsing_state (void) { vec_free (deferred_fns); deferred_fns = NULL; @@ -4192,6 +4192,7 @@ cp_clear_deferred_fns (void) clear_pending_templates (); reset_anon_name (); reset_temp_count (); + clear_lambda_scope (); } /* Collect declarations from all namespaces relevant to SOURCE_FILE. */ diff --git a/gcc-4.9/gcc/cp/parser.c b/gcc-4.9/gcc/cp/parser.c index 29b590ea4..aadb36e8a 100644 --- a/gcc-4.9/gcc/cp/parser.c +++ b/gcc-4.9/gcc/cp/parser.c @@ -8705,6 +8705,16 @@ finish_lambda_scope (void) lambda_scope_stack->pop (); } +void +clear_lambda_scope (void) +{ + if (!lambda_scope_stack) + return; + gcc_assert(lambda_scope_stack->is_empty()); + lambda_scope = NULL_TREE; + lambda_count = 0; +} + /* Parse a lambda expression. lambda-expression: -- cgit v1.2.3