From 3c3beda679a885f4cff33def8b8b311be78101e9 Mon Sep 17 00:00:00 2001 From: echristo Date: Thu, 9 Nov 2000 23:15:27 +0000 Subject: [PATCH] 2000-11-07 Eric Christopher * decl.c (init_decl_processing): Change definition of __wchar_t to wchar_t. Remove artificial declaration of wchar_t. * lex.c: Change instances of __wchar_t to wchar_t. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37348 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 25 +++++++++------ gcc/cp/decl.c | 97 +++++++++++++++++++++++++++----------------------------- gcc/cp/lex.c | 54 +++++++++++++++---------------- 3 files changed, 89 insertions(+), 87 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 9bda1b6e5a6..384d8c21457 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2000-11-07 Eric Christopher + + * decl.c (init_decl_processing): Change definition of + __wchar_t to wchar_t. Remove artificial declaration of + wchar_t. + * lex.c: Change instances of __wchar_t to wchar_t. + 2000-11-09 Nathan Sidwell * lex.c (do_identifier): Don't lookup_name for operators. @@ -115,7 +122,7 @@ * error.c (dump_function_decl): Print no space between `ptr-operator' the `type-specifier' of the return type. (dump_type_prefix): Make sure we put space at the appropriate - place. + place. 2000-10-23 Jason Merrill @@ -134,7 +141,7 @@ * optimize.c (copy_body_r): Don't treat CALL_EXPRs specially. - * typeck.c (c_sizeof): Return an expression of `size_t' type, + * typeck.c (c_sizeof): Return an expression of `size_t' type, not one with TYPE_IS_SIZETYPE set. (dubious_conversion_warnings): Remove special-case code. @@ -147,7 +154,7 @@ * tree.c (walk_tree): Handle VECTOR_TYPE. * decl.c (init_decl_processing): Call MD_INIT_BUILTINS. - + 2000-10-21 Jason Merrill * parse.y (operator): Set got_object from got_scope. @@ -195,7 +202,7 @@ Fri Oct 20 13:54:59 2000 Richard Kenner (splay_tree_compare_integer_csts): New function. (layout_class_type): Use a splay_tree, rather than a varray, to represent the offsets of empty bases. - + * cp-tree.h (DECL_ANTICIPATED): Don't require a FUNCTION_DECL. * decl.c (select_decl): Don't return declarations that are DECL_ANTICIPATED. @@ -227,7 +234,7 @@ Fri Oct 20 13:54:59 2000 Richard Kenner * except.c (init_exception_processing): Use std_identifier. * init.c (build_member_call): Use fake_std_node. * rtti.c (init_rtti_processing): Use std_identifier. - + 2000-10-17 Mark Mitchell * cp-tree.h (back_end_hook): Remove declaration. @@ -295,7 +302,7 @@ Tue Oct 17 20:19:06 2000 Brad Lucier (init_repo): Initialize it. * search.c (current_obstack): Remove. * typeck2.c (add_exception_specifier): Don't call build_decl_list. - + 2000-10-09 Richard Henderson * Make-lang.in (CXX_EXTRA_HEADERS): Remove. @@ -331,7 +338,7 @@ Tue Oct 17 20:19:06 2000 Brad Lucier * pt.c (lookup_template_class): Set current access for enum. (tsubst_enum): Set file & line for enum decl. - + * spew.c (yylex): Remove unused variable. 2000-10-05 Richard Henderson @@ -354,7 +361,7 @@ Tue Oct 17 20:19:06 2000 Brad Lucier 2000-10-05 Nathan Sidwell * pt.c (tsubst_expr, DECL_STMT case): Don't process if - tsubsting fails. + tsubsting fails. 2000-10-05 Nathan Sidwell @@ -366,7 +373,7 @@ Tue Oct 17 20:19:06 2000 Brad Lucier * decl.c (lang_mark_false_label_stack): Remove. * lex.c (cp_mang_lang_type): Use ggc_alloc_cleared. - + 2000-09-30 Joseph S. Myers * gxxint.texi: Use @email for formatting email addresses. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 51591c18936..ce19601760b 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -188,7 +188,7 @@ static tree start_cleanup_fn PARAMS ((void)); static void end_cleanup_fn PARAMS ((void)); static tree cp_make_fname_decl PARAMS ((tree, const char *, int)); static void initialize_predefined_identifiers PARAMS ((void)); -static tree check_special_function_return_type +static tree check_special_function_return_type PARAMS ((special_function_kind, tree, tree, tree)); static tree push_cp_library_fn PARAMS ((enum tree_code, tree)); static tree build_cp_library_fn PARAMS ((tree, enum tree_code, tree)); @@ -491,7 +491,7 @@ struct binding_level replaced with a TEMPLATE_DECL. */ unsigned template_parms_p : 1; - /* Nonzero if this scope corresponds to the `<>' in a + /* Nonzero if this scope corresponds to the `<>' in a `template <>' clause. Whenever this flag is set, TEMPLATE_PARMS_P will be set as well. */ unsigned template_spec_p : 1; @@ -2860,12 +2860,12 @@ pushtag (name, type, globalize) all function definitions in a translation unit in a convenient way. (It's otherwise tricky to find a member function definition it's only pointed to from within a local class.) */ - if (TYPE_CONTEXT (type) + if (TYPE_CONTEXT (type) && TREE_CODE (TYPE_CONTEXT (type)) == FUNCTION_DECL && !processing_template_decl) VARRAY_PUSH_TREE (local_classes, type); - if (!uses_template_parms (type)) + if (!uses_template_parms (type)) { if (flag_new_abi) DECL_ASSEMBLER_NAME (d) = mangle_type (type); @@ -4049,7 +4049,7 @@ pushdecl (x) warn if we later see static one. */ if (IDENTIFIER_GLOBAL_VALUE (name) == NULL_TREE && TREE_PUBLIC (x)) TREE_PUBLIC (name) = 1; - + /* Bind the mangled name for the entity. In the future, we should not need to do this; mangled names are an implementation detail of which the front-end should not @@ -4745,7 +4745,7 @@ redeclaration_error_message (newdecl, olddecl) else if (TREE_CODE (newdecl) == TEMPLATE_DECL) { if ((TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == FUNCTION_DECL - && (DECL_TEMPLATE_RESULT (newdecl) + && (DECL_TEMPLATE_RESULT (newdecl) != DECL_TEMPLATE_RESULT (olddecl)) && DECL_INITIAL (DECL_TEMPLATE_RESULT (newdecl)) && DECL_INITIAL (DECL_TEMPLATE_RESULT (olddecl))) @@ -5152,7 +5152,7 @@ struct cp_switch mark the stack for garbage collection because it is only active during the processing of the body of a function, and we never collect at that point. */ - + static struct cp_switch *switch_stack; /* Called right after a switch-statement condition is parsed. @@ -5175,7 +5175,7 @@ void pop_switch () { struct cp_switch *cs; - + cs = switch_stack; splay_tree_delete (cs->cases); switch_stack = switch_stack->next; @@ -5197,7 +5197,7 @@ finish_case_label (low_value, high_value) if (high_value) error ("case label not within a switch statement"); else if (low_value) - cp_error ("case label `%E' not within a switch statement", + cp_error ("case label `%E' not within a switch statement", low_value); else error ("`default' label not within a switch statement"); @@ -5698,8 +5698,8 @@ select_decl (binding, flags) /* When we implicitly declare some builtin entity, we mark it DECL_ANTICIPATED, so that we know to ignore it until it is really declared. */ - if (val && DECL_P (val) - && DECL_LANG_SPECIFIC (val) + if (val && DECL_P (val) + && DECL_LANG_SPECIFIC (val) && DECL_ANTICIPATED (val)) return NULL_TREE; @@ -6267,7 +6267,7 @@ typedef struct predefined_identifier /* Create all the predefined identifiers. */ static void -initialize_predefined_identifiers () +initialize_predefined_identifiers () { struct predefined_identifier *pid; @@ -6385,7 +6385,7 @@ init_decl_processing () void_type_node); pushdecl (fake_std_node); } - + /* Define `int' and `char' first so that dbx will output them first. */ record_builtin_type (RID_INT, NULL_PTR, integer_type_node); record_builtin_type (RID_CHAR, "char", char_type_node); @@ -6405,7 +6405,7 @@ init_decl_processing () long_long_unsigned_type_node); record_builtin_type (RID_SHORT, "short int", short_integer_type_node); record_builtin_type (RID_MAX, "short unsigned int", - short_unsigned_type_node); + short_unsigned_type_node); record_builtin_type (RID_MAX, "unsigned short", short_unsigned_type_node); @@ -6576,12 +6576,7 @@ init_decl_processing () wchar_type_node = make_signed_type (wchar_type_size); else wchar_type_node = make_unsigned_type (wchar_type_size); - record_builtin_type (RID_WCHAR, "__wchar_t", wchar_type_node); - - /* Artificial declaration of wchar_t -- can be bashed */ - wchar_decl_node = build_decl (TYPE_DECL, get_identifier ("wchar_t"), - wchar_type_node); - pushdecl (wchar_decl_node); + record_builtin_type (RID_WCHAR, "wchar_t", wchar_type_node); /* This is for wide string constants. */ wchar_array_type_node @@ -6760,7 +6755,7 @@ cp_make_fname_decl (id, name, type_dep) tree decl, type, init; size_t length = strlen (name); tree domain = NULL_TREE; - + if (!processing_template_decl) type_dep = 0; if (!type_dep) @@ -6791,7 +6786,7 @@ cp_make_fname_decl (id, name, type_dep) } DECL_INITIAL (decl) = init; cp_finish_decl (decl, init, NULL_TREE, LOOKUP_ONLYCONVERTING); - + /* We will have to make sure we only emit this, if it is actually used. */ return decl; } @@ -6823,7 +6818,7 @@ builtin_function (name, type, code, class, libname) /* All builtins that don't begin with an `_' should go in the `std' namespace. */ - if (flag_honor_std && name[0] != '_') + if (flag_honor_std && name[0] != '_') { push_namespace (std_identifier); DECL_CONTEXT (decl) = std_node; @@ -6937,7 +6932,7 @@ push_cp_library_fn (operator_code, type) enum tree_code operator_code; tree type; { - tree fn = build_cp_library_fn (ansi_opname (operator_code), + tree fn = build_cp_library_fn (ansi_opname (operator_code), operator_code, type); pushdecl (fn); @@ -7399,7 +7394,7 @@ start_decl_1 (decl) && TREE_CODE (decl) != TYPE_DECL && TREE_CODE (decl) != TEMPLATE_DECL && type != error_mark_node - && IS_AGGR_TYPE (type) + && IS_AGGR_TYPE (type) && ! DECL_EXTERNAL (decl)) { if ((! processing_template_decl || ! uses_template_parms (type)) @@ -7922,7 +7917,7 @@ maybe_inject_for_scope_var (decl) { if (!DECL_NAME (decl)) return; - + if (current_binding_level->is_for_scope) { struct binding_level *outer @@ -8000,7 +7995,7 @@ initialize_local_var (decl, init, flags) saved_stmts_are_full_exprs_p = stmts_are_full_exprs_p (); current_stmt_tree ()->stmts_are_full_exprs_p = 1; finish_expr_stmt (build_aggr_init (decl, init, flags)); - current_stmt_tree ()->stmts_are_full_exprs_p = + current_stmt_tree ()->stmts_are_full_exprs_p = saved_stmts_are_full_exprs_p; } @@ -8114,9 +8109,9 @@ cp_finish_decl (decl, init, asmspec_tree, flags) if (type == error_mark_node) return; - + /* Add this declaration to the statement-tree. */ - if (building_stmt_tree () + if (building_stmt_tree () && at_function_scope_p () && TREE_CODE (decl) != RESULT_DECL) add_decl_stmt (decl); @@ -9140,12 +9135,12 @@ grokvardecl (type, declarator, specbits_in, initialized, constp, in_namespace) set_decl_namespace (decl, context, 0); context = DECL_CONTEXT (decl); - if (declarator && context && current_lang_name != lang_name_c) + if (declarator && context && current_lang_name != lang_name_c) { if (flag_new_abi) DECL_ASSEMBLER_NAME (decl) = mangle_decl (decl); else - DECL_ASSEMBLER_NAME (decl) + DECL_ASSEMBLER_NAME (decl) = build_static_name (context, declarator); } } @@ -9550,7 +9545,7 @@ check_special_function_return_type (sfk, type, ctype, optype) case sfk_constructor: if (type) cp_error ("return type specification for constructor invalid"); - + /* In the old ABI, we return `this'; in the new ABI we don't bother. */ type = flag_new_abi ? void_type_node : build_pointer_type (ctype); @@ -9871,7 +9866,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) ctor_return_type = TREE_TYPE (dname); sfk = sfk_conversion; if (IDENTIFIER_GLOBAL_VALUE (dname) - && (TREE_CODE (IDENTIFIER_GLOBAL_VALUE (dname)) + && (TREE_CODE (IDENTIFIER_GLOBAL_VALUE (dname)) == TYPE_DECL)) name = IDENTIFIER_POINTER (dname); else @@ -10442,7 +10437,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) if (IDENTIFIER_TYPENAME_P (tmp)) { if (IDENTIFIER_GLOBAL_VALUE (tmp) - && (TREE_CODE (IDENTIFIER_GLOBAL_VALUE (tmp)) + && (TREE_CODE (IDENTIFIER_GLOBAL_VALUE (tmp)) == TYPE_DECL)) name = IDENTIFIER_POINTER (tmp); else @@ -10585,7 +10580,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) type = create_array_type_for_decl (dname, type, size); /* VLAs never work as fields. */ - if (decl_context == FIELD && !processing_template_decl + if (decl_context == FIELD && !processing_template_decl && TREE_CODE (type) == ARRAY_TYPE && TYPE_DOMAIN (type) != NULL_TREE && !TREE_CONSTANT (TYPE_MAX_VALUE (TYPE_DOMAIN (type)))) @@ -10948,7 +10943,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) t = ctype; while (t != NULL_TREE && CLASS_TYPE_P (t)) { - /* You're supposed to have one `template <...>' + /* You're supposed to have one `template <...>' for every template class, but you don't need one for a full specialization. For example: @@ -11191,7 +11186,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) DECL_NAME (CLASSTYPE_TI_TEMPLATE (type)) = TYPE_IDENTIFIER (type); - if (flag_new_abi) + if (flag_new_abi) DECL_ASSEMBLER_NAME (decl) = mangle_type (type); else { @@ -11203,7 +11198,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) DECL_CONTEXT (decl) = current_class_type; else DECL_CONTEXT (decl) = FROB_CONTEXT (current_namespace); - + DECL_ASSEMBLER_NAME (decl) = DECL_NAME (decl); DECL_ASSEMBLER_NAME (decl) = get_identifier (build_overload_name (type, 1, 1)); @@ -11984,7 +11979,7 @@ check_default_argument (decl, arg) The keyword `this' shall not be used in a default argument of a member function. */ - var = walk_tree_without_duplicates (&arg, local_variable_p_walkfn, + var = walk_tree_without_duplicates (&arg, local_variable_p_walkfn, NULL); if (var) { @@ -12409,7 +12404,7 @@ grok_op_properties (decl, virtualp, friendp) case CALL_EXPR: TYPE_OVERLOADS_CALL_EXPR (current_class_type) = 1; break; - + case ARRAY_REF: TYPE_OVERLOADS_ARRAY_REF (current_class_type) = 1; break; @@ -12418,19 +12413,19 @@ grok_op_properties (decl, virtualp, friendp) case MEMBER_REF: TYPE_OVERLOADS_ARROW (current_class_type) = 1; break; - + case NEW_EXPR: TYPE_HAS_NEW_OPERATOR (current_class_type) = 1; break; - + case DELETE_EXPR: TYPE_GETS_DELETE (current_class_type) |= 1; break; - + case VEC_NEW_EXPR: TYPE_HAS_ARRAY_NEW_OPERATOR (current_class_type) = 1; break; - + case VEC_DELETE_EXPR: TYPE_GETS_DELETE (current_class_type) |= 2; break; @@ -12508,7 +12503,7 @@ grok_op_properties (decl, virtualp, friendp) { int ref = (TREE_CODE (t) == REFERENCE_TYPE); const char *what = 0; - + if (ref) t = TYPE_MAIN_VARIANT (TREE_TYPE (t)); @@ -12528,7 +12523,7 @@ grok_op_properties (decl, virtualp, friendp) } } - if (DECL_ASSIGNMENT_OPERATOR_P (decl) + if (DECL_ASSIGNMENT_OPERATOR_P (decl) && operator_code == NOP_EXPR) { tree parmtype; @@ -13128,9 +13123,9 @@ xref_basetypes (code_type_node, name, ref, binfo) if (CLASS_TYPE_P (basetype)) { - TYPE_HAS_NEW_OPERATOR (ref) + TYPE_HAS_NEW_OPERATOR (ref) |= TYPE_HAS_NEW_OPERATOR (basetype); - TYPE_HAS_ARRAY_NEW_OPERATOR (ref) + TYPE_HAS_ARRAY_NEW_OPERATOR (ref) |= TYPE_HAS_ARRAY_NEW_OPERATOR (basetype); TYPE_GETS_DELETE (ref) |= TYPE_GETS_DELETE (basetype); /* If the base-class uses multiple inheritance, so do we. */ @@ -13760,7 +13755,7 @@ start_function (declspecs, declarator, attrs, flags) /* If we are (erroneously) defining a function that we have already defined before, wipe out what we knew before. */ - if (!DECL_PENDING_INLINE_P (decl1) + if (!DECL_PENDING_INLINE_P (decl1) && DECL_SAVED_FUNCTION_DATA (decl1)) { free (DECL_SAVED_FUNCTION_DATA (decl1)); @@ -13960,7 +13955,7 @@ store_parm_decls (current_function_parms) else cp_error ("parameter `%D' declared void", parm); - cleanup = (processing_template_decl + cleanup = (processing_template_decl ? NULL_TREE : maybe_build_cleanup (parm)); @@ -14726,7 +14721,7 @@ lang_mark_tree (t) { ggc_mark (ld); c_mark_lang_decl (&ld->decl_flags.base); - if (!DECL_GLOBAL_CTOR_P (t) + if (!DECL_GLOBAL_CTOR_P (t) && !DECL_GLOBAL_DTOR_P (t) && !DECL_THUNK_P (t)) ggc_mark_tree (ld->decl_flags.u2.access); diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index d4e3c8f572d..e7c1e550de1 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -170,7 +170,7 @@ make_pointer_declarator (cv_qualifiers, target) We return an ADDR_EXPR whose "contents" are TARGET and whose type is the modifier list. */ - + tree make_reference_declarator (cv_qualifiers, target) tree cv_qualifiers, target; @@ -199,7 +199,7 @@ tree make_call_declarator (target, parms, cv_qualifiers, exception_specification) tree target, parms, cv_qualifiers, exception_specification; { - target = build_parse_node (CALL_EXPR, target, + target = build_parse_node (CALL_EXPR, target, tree_cons (parms, cv_qualifiers, NULL_TREE), /* The third operand is really RTL. We shouldn't put anything there. */ @@ -323,7 +323,7 @@ init_cpp_parse () operator_name_info_t operator_name_info[(int) LAST_CPLUS_TREE_CODE]; /* Similar, but for assignment operators. */ operator_name_info_t assignment_operator_name_info[(int) LAST_CPLUS_TREE_CODE]; - + /* Initialize data structures that keep track of operator names. */ #define DEF_OPERATOR(NAME, C, NM, OM, AR, AP) \ @@ -337,7 +337,7 @@ init_operators () tree identifier; char buffer[256]; struct operator_name_info_t *oni; - + #define DEF_OPERATOR(NAME, CODE, NEW_MANGLING, OLD_MANGLING, ARITY, ASSN_P) \ sprintf (buffer, ISALPHA (NAME[0]) ? "operator %s" : "operator%s", NAME); \ identifier = get_identifier (buffer); \ @@ -353,7 +353,7 @@ init_operators () #include "operators.def" #undef DEF_OPERATOR - operator_name_info[(int) ERROR_MARK].identifier + operator_name_info[(int) ERROR_MARK].identifier = get_identifier (""); /* Handle some special cases. These operators are not defined in @@ -361,8 +361,8 @@ init_operators () for error-reporting. (Eventually, we should ensure that this does not happen. Error messages involving these operators will be confusing to users.) */ - - operator_name_info [(int) INIT_EXPR].name + + operator_name_info [(int) INIT_EXPR].name = operator_name_info [(int) MODIFY_EXPR].name; operator_name_info [(int) EXACT_DIV_EXPR].name = "(ceiling /)"; operator_name_info [(int) CEIL_DIV_EXPR].name = "(ceiling /)"; @@ -380,19 +380,19 @@ init_operators () operator_name_info [(int) RANGE_EXPR].name = "..."; operator_name_info [(int) CONVERT_EXPR].name = "+"; - assignment_operator_name_info [(int) EXACT_DIV_EXPR].name + assignment_operator_name_info [(int) EXACT_DIV_EXPR].name = "(exact /=)"; - assignment_operator_name_info [(int) CEIL_DIV_EXPR].name + assignment_operator_name_info [(int) CEIL_DIV_EXPR].name = "(ceiling /=)"; - assignment_operator_name_info [(int) FLOOR_DIV_EXPR].name + assignment_operator_name_info [(int) FLOOR_DIV_EXPR].name = "(floor /=)"; - assignment_operator_name_info [(int) ROUND_DIV_EXPR].name + assignment_operator_name_info [(int) ROUND_DIV_EXPR].name = "(round /=)"; - assignment_operator_name_info [(int) CEIL_MOD_EXPR].name + assignment_operator_name_info [(int) CEIL_MOD_EXPR].name = "(ceiling %=)"; - assignment_operator_name_info [(int) FLOOR_MOD_EXPR].name + assignment_operator_name_info [(int) FLOOR_MOD_EXPR].name = "(floor %=)"; - assignment_operator_name_info [(int) ROUND_MOD_EXPR].name + assignment_operator_name_info [(int) ROUND_MOD_EXPR].name = "(round %=)"; } @@ -443,7 +443,6 @@ static const struct resword reswords[] = { "__typeof__", RID_TYPEOF, 0 }, { "__volatile", RID_VOLATILE, 0 }, { "__volatile__", RID_VOLATILE, 0 }, - { "__wchar_t", RID_WCHAR, 0 }, { "asm", RID_ASM, D_ASM }, { "and", RID_AND, D_OPNAME }, { "and_eq", RID_AND_EQ, D_OPNAME }, @@ -515,6 +514,7 @@ static const struct resword reswords[] = { "virtual", RID_VIRTUAL, 0 }, { "void", RID_VOID, 0 }, { "volatile", RID_VOLATILE, 0 }, + { "wchar_t", RID_WCHAR, 0 }, { "while", RID_WHILE, 0 }, { "xor", RID_XOR, D_OPNAME }, { "xor_eq", RID_XOR_EQ, D_OPNAME }, @@ -560,7 +560,7 @@ const short rid_to_yy[RID_MAX] = /* RID_BYCOPY */ 0, /* RID_BYREF */ 0, /* RID_ONEWAY */ 0, - + /* C */ /* RID_INT */ TYPESPEC, /* RID_CHAR */ TYPESPEC, @@ -708,7 +708,7 @@ init_parse (filename) set_identifier_size (sizeof (struct lang_identifier)); decl_printable_name = lang_printable_name; - internal_filename = ggc_alloc_string (INTERNAL_FILENAME, + internal_filename = ggc_alloc_string (INTERNAL_FILENAME, sizeof (INTERNAL_FILENAME)); input_filename = internal_filename; @@ -896,7 +896,7 @@ print_parse_statistics () int i; int maxlen = REDUCE_LENGTH; unsigned *sorted; - + if (reduce_count[-1] == 0) return; @@ -981,7 +981,7 @@ extract_interface_info () if (flag_alt_external_templates) { tree til = tinst_for_decl (); - + if (til) finfo = get_fileinfo (TINST_FILE (til)); } @@ -1117,7 +1117,7 @@ parse_strconst_pragma (name, opt) error ("invalid #pragma %s", name); return (tree)-1; } - + static void handle_pragma_vtable (dfile) cpp_reader *dfile ATTRIBUTE_UNUSED; @@ -1392,15 +1392,15 @@ do_identifier (token, parsing, args) like local variables, rather than creating TEMPLATE_DECLs for the local variables and then finding matching instantiations. */ if (current_template_parms - && (is_overloaded_fn (id) - || (TREE_CODE (id) == VAR_DECL + && (is_overloaded_fn (id) + || (TREE_CODE (id) == VAR_DECL && CP_DECL_CONTEXT (id) && TREE_CODE (CP_DECL_CONTEXT (id)) == FUNCTION_DECL) || TREE_CODE (id) == PARM_DECL || TREE_CODE (id) == RESULT_DECL || TREE_CODE (id) == USING_DECL)) id = build_min_nt (LOOKUP_EXPR, token); - + return id; } @@ -1418,7 +1418,7 @@ do_scoped_id (token, parsing) id = NULL_TREE; else id = BINDING_VALUE (id); - } + } else id = IDENTIFIER_GLOBAL_VALUE (token); if (parsing && yychar == YYEMPTY) @@ -1616,7 +1616,7 @@ cp_make_lang_type (code) { struct lang_type *pi; - pi = ((struct lang_type *) + pi = ((struct lang_type *) ggc_alloc_cleared (sizeof (struct lang_type))); TYPE_LANG_SPECIFIC (t) = pi; @@ -1669,9 +1669,9 @@ compiler_error VPARAMS ((const char *msg, ...)) #endif char buf[1024]; va_list ap; - + VA_START (ap, msg); - + #ifndef ANSI_PROTOTYPES msg = va_arg (ap, const char *); #endif -- 2.11.4.GIT