aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
AgeCommit message (Collapse)AuthorFilesLines
2003-07-16re PR c/10962 (lookup_field is a linear search on a linked list (can be slow ↵Andrew Pinski4-76/+30
if large struct)) 2003-07-16 Andrew Pinski <pinskia@physics.uc.edu> ChangeLog: PR c/10962 * ggc.h: Add header guards. * c-decl.c (finish_struct): Sort fields if number greater than 15 and there are no anonymous structs/unions. * c-common.h: Include ggc.h. (sorted_fields_type): New struct. (field_decl_cmp): New prototype. (resort_sorted_fields): New prototype. (DECL_DECLARES_TYPE_NON_TEMPLATE_P): New macro. * c-tree.h: (lang_type): Use pointer to sorted_fields_type as s, removing other fields. * c-typeck.c (lookup_field): Use s in lang_type. These were mostly moved from cp/class.c: * c-common.c (field_decl_cmp): New static function. (field_decl_cmp): New function. (resort_sorted_fields): New function. cp/ChangeLog: * class.c (field_decl_cmp): Remove. (resort_field_decl_cmp): Remove. (resort_sorted_fields): Remove. (add_fields_to_vec): Rename to ... (add_fields_to_record_type): this. (finish_struct_1): Change to be using sorted_fields_type's fields. * cp-tree.h (lang_decl): In lang_decl_u3 change sorted_fields to be a pointer to sorted_fields_type. (resort_sorted_fields): Remove prototype. * search.c (lookup_field_1): Change to be using sorted_fields_type's fields. From-SVN: r69470
2003-07-16re PR c++/5421 (friends+templates: ICE: expected identifier_node, have ↵Kriang Lerdsuwanakij3-1/+14
template_id_expr in grokfndecl, at cp/decl.c:8835) PR c++/5421 * decl.c (grokdeclarator): Handle TEMPLATE_ID_EXPR if friend is a member of other class. * friend.c (do_friend): Don't build TEMPLATE_DECL if friend is a specialization of function template. * g++.dg/template/friend21.C: New test. From-SVN: r69457
2003-07-16re PR c++/10903 ([3.3 only] g++ says: "error: object ``type_decl' not ↵Gabriel Dos Reis2-1/+14
supported by dump_expr") PR c++/10903 * pt.c (convert_nontype_argument): Fix thinko in diagnostic. Improve. From-SVN: r69435
2003-07-16cp-tree.def (LOOKUP_EXPR): Remove.Mark Mitchell14-125/+88
* cp-tree.def (LOOKUP_EXPR): Remove. * cp-tree.h (cp_id_kind): Add CP_ID_KIND_UNQUALIFIED_DEPENDENT. (LOOKUP_EXPR_GLOBAL): Remove. (get_bindings): Remove. (is_aggr_type_2): Remove. * call.c (resolved_scoped_fn_name): Remove support for LOOKUP_EXPR. * decl.c (grokfndecl): Likewise. (grokdeclarator): Likewise. * error.c (dump_decl): Likewise. (dump_expr): Likewise. * friend.c (do_friend): Likewise. * init.c (build_offset_ref): Likewise. * lex.c (unqualified_fn_lookup_error): Use pedwarn. Do not create LOOKUP_EXPRs * mangle.c (write_expression): Remove support for LOOKUP_EXPR. * parser.c (cp_parser_postfix_expression): Modify Koenig lookup test. * pt.c (get_bindings): Give it internal linkage. (check_explicit_specialization): Remove support for LOOKUP_EXPR. (lookup_template_function): Likewise. (for_each_tempalte_parm_r): Likewise. (tsubst_decl): Likewise. (tsubst_qualified_id): Handle template template parameters. (tsubst_copy): Remove support for LOOKUP_EXPR. (tsubst_copy_and_build): Likewise. (most_general_template): Likewise. (value_dependent_expression_p): Likewise. (type_dependent_expression_p): Note that IDENTIFIER_NODEs are always dependent. * semantics.c (perform_koenig_lookup): Do not create IDENTIFIER_NODEs. (finish_fname): Likewise. (finish_id_expression): Likewise. * tree.c (is_aggr_type_2): Remove. From-SVN: r69427
2003-07-15re PR c++/11531 (ICE on invalid code (returning to void))Gabriel Dos Reis2-3/+8
PR c++/11531 * diagnostic.c (diagnostic_report_diagnostic): Don't ICE if we're not recursing on hard error. (diagnostic_for_decl): Likewise. * diagnostic.def: Rearrange. cp/ * typeck.c (check_return_expr): Fix thinko in diagnostic. From-SVN: r69425
2003-07-15re PR c++/10108 (tree checking ICE: expected var_decl, have error_mark in ↵Kriang Lerdsuwanakij2-0/+8
tsubst_decl) PR c++/10108 * pt.c (tsubst_decl) <TEMPLATE_DECL>: Add a check for error_mark_node. * g++.dg/template/crash7.C: New test. From-SVN: r69409
2003-07-14re PR c++/11509 (ICE with expression with static member in template arg)Mark Mitchell2-34/+49
PR c++/11509 * pt.c (dependent_scope_ref_p): New function. (value_dependent_expression_p): Use it. (type_dependent_expression_p): Likewise. * pt.c (tsubst_friend_function): Use reregister_specialization. PR c++/11509 * g++.dg/template/crash6.C: New test. From-SVN: r69363
2003-07-14re PR c++/7019 ([3.3 only] SFINAE does not work with explicitally specified ↵Mark Mitchell6-17/+42
template arguments) PR c++/7019 * cp-tree.h (lookup_qualified_name): Adjust prototype. * decl.c (lookup_qualified_name): Add complain parameter. Adjust call to is_aggr_type. * parser.c (cp_parser_lookup_name): Adjust call to lookup_qualified_name. * pt.c (tsubst_qualified_id): Likewise. (tsubst_copy_and_build): Likewise. * semantics.c (finish_qualified_id_expr): Deal with erroneous expressions. PR c++/7019 * g++.dg/template/overload2.C: New test. From-SVN: r69342
2003-07-14re PR c++/11510 (Error message with operator __imag__ is missing spaces)Gabriel Dos Reis3-0/+20
PR c++/11510 * call.c (op_error): Properly handle REALPART_EXPR and IMAGPART_EXPR. * error.c (dump_expr): Likewise. From-SVN: r69340
2003-07-14* error.c (dump_expr): Handle EMPTY_CLASS_EXPR.Gabriel Dos Reis2-0/+10
From-SVN: r69338
2003-07-14re PR c++/5293 (confusing message when binding a temporary to a reference)Gabriel Dos Reis2-1/+12
PR c++/5293 * call.c (initialize_reference): Improve diagnostic. From-SVN: r69332
2003-07-14re PR c++/11154 (spurious ambiguity report for template class specialization)Kriang Lerdsuwanakij3-7/+17
PR c++/11154 * pt.c (more_specialized_class): Add full_args parameter. (most_specialized_class): Adjust calls to more_specialized_class. * cp-tree.h (more_specialized_class): Adjust declaration. * g++.dg/template/partial2.C: New test. From-SVN: r69328
2003-07-14* lex.c (enum tree_node_kind): Delete.Dan Nicolaescu2-29/+4
From-SVN: r69327
2003-07-14re PR c++/11503 (segfault when instantiating template with ADDR_EXPR)Mark Mitchell5-10/+25
PR c++/11503 * g++.dg/template/anon1.C: New test. PR c++/11503 * cp-tree.h (DECL_SELF_REFERENCE_P): New macro. (SET_DECL_SELF_REFERENCE_P): Likewise. * class.c (build_self_reference): Use SET_DECL_SELF_REFERENCE_P. * pt.c (tsubst_decl): Copy it. * search.c (lookup_base): Use DECL_SELF_REFERENCE_P. From-SVN: r69317
2003-07-14re PR c++/11493 (tree check ICE in error.c)Mark Mitchell8-728/+663
* cp-tree.h (cp_id_kind): New type. (unqualified_name_lookup_error): Change prototype. (unqualified_fn_lookup_error): New function. (do_identifier): Remove. (do_scoped_id): Likewise. (tsubst_copy_and_build): Change prototype. (reregister_specialization): New function. (perform_koenig_lookup): Likewise. (finish_id_expression): Likewise. * call.c (build_method_call): Adjust call to unqualified_name_lookup_error. * decl.c (duplicate_decls): Use reregister_specialization. * lex.c (is_global): Remove. (unqualified_name_lookup_error): Return a value. (do_identifier): Remove. (do_scoped_id): Likewise. (identifier_typedecl_value): Remove. (unqualified_fn_lookup_error): New function. * parser.c (cp_parser_id_kind): Remove. (cp_parser_non_constant_id_expression): Remove. (cp_parser_primary_expression): Use finish_id_expression. (cp_parser_class_or_namespace_name): Use cp_id_kind, not cp_parser_id_kind. (cp_parser_postfix_expression): Use perform_koenig_lookup. (cp_parser_template_argument): Use cp_id_kind. (cp_parser_fold_non_dependent_expr): Adjust call to tsubst_copy_and_build. * pt.c (unregister_specialization): Rename to ... (reregister_specialization): This. (tsubst_friend_function): Use it. (maybe_fold_nontype_arg): Adjust call to tsubst_copy_and_build. (tsubst_qualified_id): Likewise. (tsubst_expr): Likewise. (tsubst_copy_and_build): Add function_p parameter. Use finish_id_expression. Introduce RECUR macro. (tsubst_non_call_postfix_expression): New function. (regenerate_decl_from_template): Use reregister_specialization. * semantics.c (perform_koenig_lookup): New function. (finish_id_expression): Likewise. PR c++/11493 PR c++/11495 * g++.dg/parse/template9.C: Likewise. * g++.dg/template/crash4.C: New test. * g++.dg/template/koenig1.C: Likewise. * g++.old-deja/g++.benjamin/tem03.C: Adjust error markers. * g++.old-deja/g++.benjamin/tem06.C: Declare "x". * g++.old-deja/g++.jason/overload33.C: Use this-> when calling functions. * g++.old-deja/g++.jason/template36.C: Likewise. * g++.old-deja/g++.mike/p1989.C: Likewise. * g++.old-deja/g++.pt/lookup2.C: Use -fpermissive when compiling. * g++.old-deja/g++.pt/ttp20.C: Use this->. * g++.old-deja/g++.pt/ttp21.C: Use this->. * g++.old-deja/g++.pt/typename13.C: Use -fpermissive when compiling. * g++.old-deja/g++.pt/union2.C: Use this->. From-SVN: r69316
2003-07-13pt.c (push_access_scope_real): Remove.Kriang Lerdsuwanakij2-54/+35
* pt.c (push_access_scope_real): Remove. (push_access_scope): Move code from push_access_scope_real. (pop_access_scope): Don't check for TEMPLATE_DECL. (instantiate_template): Defer access checking during template substitution. (regenerate_decl_from_template): Tidy. From-SVN: r69291
2003-07-13document covariants implementedNathan Sidwell1-0/+3
From-SVN: r69287
2003-07-11re PR c++/11437 (ICE in lookup_name_real)Nathanael Nerode2-1/+8
PR c++/11437 * operators.def: Add definitions for __imag__, __real__. From-SVN: r69254
2003-07-11re PR c++/11050 ("some string" __FUNCTION__ is accepted)Nathan Sidwell3-186/+198
cp: PR c++/11050 * parser.c (cp_parser_expression_list): Rename to ... (cp_parser_parenthesized_expression_list): ... here. Add attribute parameter, parse the surounding parentheses. (cp_parser_skip_to_closing_parenthesis): Add recover and or_comma parameters. Return int. (cp_parser_skip_to_closing_parenthesis or comma): Remove. (cp_parser_postfix_expression): Adjust function call parsing. (cp_parser_new_placement): Adjust. (cp_parser_new_initializer): Likewise. (cp_parser_cast_expression): Likewise. (cp_parser_selection_statement): Likewise. (cp_parser_mem_initializer): Likewise. (cp_parser_asm_definition): Likewise. (cp_parser_init_declarator): Likewise. (cp_parser_declarator): Make cdtor_or_conv_p an int ptr. (cp_parser_direct_declarator): Likewise. Check for a parameter list on cdtors & conv functions. (cp_parser_initializer): Adjust. (cp_parser_member_declaration): Adjust. (cp_parser_attribute_list): Move code into cp_parser_parens_expression_list. (cp_parser_functional_cast): Adjust. * pt.c (type_dependent_expression_p): Erroneous expressions are non-dependent. testsuite: PR c++/11050 * g++.dg/parse/args1.C: New test. * g++.pt/defarg8.C: Change expected errors. From-SVN: r69230
2003-07-11Index: ChangeLogGeoffrey Keating5-8/+21
2003-07-10 Geoffrey Keating <geoffk@apple.com> * c-decl.c (finish_decl): Handle 'used' here... * cgraphunit.c (cgraph_finalize_function): ... and here ... * c-common.c: (handle_used_attribute): ... not here. * configure.in (onstep): Support --enable-intermodule. * Makefile.in (OBJS-common): New. (OBJS-md): New. (OBJS-archive): New. (OBJS): Build from OBJS-common, OBJS-md, OBJS-archive. (OBJS-onestep): New. (libbackend.a): Support @onestep@. (libbackend.o): New. * configure: Regenerate. * c-common.h (c_reset_state): New prototype. (c_parse_file): New prototype. (finish_file): Move prototype from c-tree.h. * c-decl.c: Include <hashtab.h>. (builtin_decls): New. (current_file_decl): New. (duplicate_decls): Add extra parameter. Change all callers. Don't output duplicate common symbols. (link_hash_hash): New. (link_hash_eq): New. (poplevel): Handle popping of the top level. (warn_if_shadowing): Handle TRANSLATION_UNIT_DECL. (pushdecl): Set DECL_CONTEXT to TRANSLATION_UNIT_DECL if appropriate. (pushdecl_top_level): Likewise. (redeclaration_error_message): Handle TRANSLATION_UNIT_DECL. (c_init_decl_processing): Create TRANSLATION_UNIT_DECL. (finish_decl): Handle TRANSLATION_UNIT_DECL. (merge_translation_unit_decls): New. (c_write_global_declarations): New. (c_reset_state): New. (implicitly_declare): Handle TRANSLATION_UNIT_DECL. * c-lang.c (LANG_HOOKS_WRITE_GLOBALS): New. * c-objc-common.c (c_cannot_inline_tree_fn): Handle TRANSLATION_UNIT_DECL. (c_objc_common_finish_file): Call merge_translation_unit_decls. * c-opts.c (in_fnames): Rename from in_fname. (c_common_decode_option): Handle multiple input filenames. (c_common_post_options): Likewise. (c_common_parse_file): Likewise; also, call c_parse_file rather than yyparse. * c-parse.in: Move cleanup code to c_parse_file. (free_parser_stacks): Move contents to c_parse_file. (c_parse_file): New. * c-tree.h (union lang_tree_node): Chain along TYPE_NEXT_VARIANT for integer types. (C_DECL_FILE_SCOPE): New. (finish_file): Move prototype to c-common.h. (merge_translation_unit_decls): New prototype. (comptypes): Add extra parameter to prototype. (c_write_global_declarations): New prototype. * c-typeck.c (tagged_types_tu_compatible_p): New. (function_types_compatible_p): Add extra parameter, change all callers. (type_lists_compatible_p): Likewise. (comptypes): Likewise. (struct tagged_tu_seen): New. (tagged_tu_seen_base): New. (build_unary_op): Handle TRANSLATION_UNIT_DECL. (c_mark_addressable): Remove #if 0 code. * calls.c (special_function_p): Handle TRANSLATION_UNIT_DECL, add comment explaining why it shouldn't have to. * cgraph.h (struct cgraph_node): Add chain_next and chain_prev GTY options. * cppinit.c (cpp_read_next_file): New. (cpp_read_main_file): Use it. * cpplib.c (undefine_macros): New. (cpp_undef_all): New. * cpplib.h (cpp_read_next_file): Prototype. (cpp_undef_all): Prototype. * langhooks-def.h (write_global_declarations): Remove prototype. * toplev.h (write_global_declarations): Add prototype. * tree.c (decl_type_context): Use switch statement, handle TRANSLATION_UNIT_DECL. * tree.def: Update documentation for TRANSLATION_UNIT_DECL. (TRANSLATION_UNIT_DECL): New kind of tree. * tree.h: Update documentation for TRANSLATION_UNIT_DECL. * Makefile.in (c-decl.o): Add $(HASHTAB_H) to dependencies. * doc/invoke.texi: Make attempt to document new functionality. 2003-05-19 Per Bothner <bothner@apple.com> * gcc.c (combine_inputs): New. (process_command): Set combine_inputs. (do_spec_1): Handle combine_inputs. (main): Likewise. Index: cp/ChangeLog 2003-07-10 Geoffrey Keating <geoffk@apple.com> * decl.c (cp_finish_decl): Handle 'used' attribute. * cp-lang.c (c_reset_state): New dummy routine. * cp-tree.h (finish_file): Move prototype to c-common.h. * parser.c (c_parse_file): Rename from yyparse; don't call finish_file. From-SVN: r69224
2003-07-11re PR c++/8327 (In definition of template static member value of static ↵Mark Mitchell2-7/+50
const member isn't known) PR c++/8327 * pt.c (tsubst_qualified_id): Implement suggested resolution for Core Issue 2. (type_dependent_expression_p): Likewise. PR c++/8327 * g++.dg/template/scope1.C: New test. From-SVN: r69223
2003-07-11typeck.c (build_binary_op): Do not warn about signed vs.Mark Mitchell2-1/+7
* typeck.c (build_binary_op): Do not warn about signed vs. unsigned comparisons in the bodies of templates. * g++.dg/warn/Wsign-compare-1.C: New test. From-SVN: r69222
2003-07-10re PR c++/9411 ([New parser] Template function lookup problem)Mark Mitchell2-0/+7
PR c++/9411 * parser.c (cp_parser_postfix_expression): Check dependency of functions. PR c++/9411 * g++.dg/template/explicit2.C: New test. From-SVN: r69196
2003-07-10re PR c++/10032 (-pedantic converts some errors to warnings)Mark Mitchell6-121/+18
PR c++/10032 * doc/invoke.texi (C++ Dialect Options): Change documentation of -fpermissive. PR c++/10032 * decl.c (cxx_init_decl_processing): With -pedantic, pedwarns are still errors. PR c++/10527 * error.c (decl_to_string): Do not print default argument expressions. * cp-tree.h (break_out_calls): Remove declaration. * tree.c (break_out_calls): Remove. * typeck.c (build_modify_expr): Avoid invalid sharing of trees. PR c++/10032 * g++.dg/warn/pedantic1.C: New test. From-SVN: r69191
2003-07-10PR c++ 9483Nathan Sidwell4-9/+33
cp: PR c++ 9483 * class.c (check_field_decls): Pass DECL_NAME to constructor_name_p. * decl2.c (constructor_name_p): Avoid repeated constructor_name calls. * decl.c (grokdeclarator): Refactor ctor/dtor detection. testsuite: PR c++ 9483 * g++.dg/other/field1.C: New test. From-SVN: r69180
2003-07-09typeck.c (build_x_unary_op): Take note of the fact that PREINCREMENT_EXPR ↵Mark Mitchell2-1/+5
and POSTINCREMENT_EXPR are binary... * typeck.c (build_x_unary_op): Take note of the fact that PREINCREMENT_EXPR and POSTINCREMENT_EXPR are binary operations on trees. From-SVN: r69161
2003-07-09parser.c (cp_parser_primary_expression): Preserve the form of qualified ↵Mark Mitchell4-9/+38
expressions in templates... * parser.c (cp_parser_primary_expression): Preserve the form of qualified expressions in templates, even if they are not dependent. * pt.c (convert_nontype_argument): Handle non-dependent SCOPE_REFs. (tsubst_qualified_id): Likewise. * search.c (accessible_p): Treat everything in the body of a From-SVN: r69160
2003-07-09fold-const.c (make_range): Do not access operand 1 for a zero-operand operator.Mark Mitchell14-815/+895
* fold-const.c (make_range): Do not access operand 1 for a zero-operand operator. 2003-07-08 Mark Mitchell <mark@codesourcery.com> * cp-tree.def (NON_DEPENDENT_EXPR): New node. * cp-tree.h (build_call_from_tree): Remove. (build_member_call): Likewise. (dependent_template_arg_p): Remove. (any_dependent_template_arguments_p): New function. (dependent_template_id_p): Likewise. (any_type_dependent_arguments_p): Likewise. (build_non_dependent_expr): Likewise. (build_non_dependent_args): Likewise. (build_x_compound_expr): Adjust prototype. * call.c (build_new_method_call): Handle non-dependent expressions correctly. * decl2.c (grok_array_decl): Likewise. (build_offset_ref_call_from_tree): Likewise. (build_call_from_tree): Remove. * error.c (dump_decl): Handle NON_DEPENDENT_EXPR. (dump_expr): Likewise. * init.c (build_member_call): Remove. * mangle.c (write_expression): Update handling for template-ids. * parser.c (cp_parser_primary_expression): Use any_dependent_template_arguments_p. Update constant-expression handling. (cp_parser_postfix_expression): Use any_type_dependent_arguments_p. Simplify call processing. (cp_parser_unary_expression): Simplify. (cp_parser_expression): Adjust for changes to build_x_compound_expr. (cp_parser_template_argument): Implement standard-conforming parsing of non-type template arguments. (cp_parser_direct_declarator): Use cp_parser_fold_non_dependent_expr. (cp_parser_fold_non_dependent_expr): New function. (cp_parser_next_token_ends_template_argument_p): Likewise. * pt.c (convert_template_argument): Do not call maybe_fold_nontype_arg. (tsubst_baselink): Likewise. (tsubst_copy_and_build): Share common code. Make sizeof/alignof processing work correctly for non-dependent expressions. Adjust handling of COMPOUND_EXPR. Simplify call processing. (value_dependent_expression_p): Deal with functional casts and sizeof/alignof correctly. (type_dependent_expression_p): Handle overloaded functions. (any_type_dependent_arguments_p): New function. (any_dependent_template_arguments_p): Likewise. (dependent_template_p): Treat SCOPE_REFs as dependent. (dependent_template_id_p): Simplify. (build_non_dependent_expr): New function. (build_non_dependent_args): Likewise. * semantics.c (finish_stmt_expr): Don't make dependent statement-expresions have void type. (finish_call_expr): Handle non-dependent expressions correctly. * tree.c (lvalue_p_1): Treat NON_DEPENDENT_EXPRs as lvalues. * typeck.c (cxx_sizeof_or_alignof_type): Give the expression type size_t, even in templates. (expr_sizeof): Likewise. (finish_class_member_access_expr): Handle non-dependent expressions correctly. (build_x_indirect_ref): Likewise. (build_x_binary_op): Likewise. (build_x_unary_op): Likewise. (build_x_conditional_expr): Likewise. (build_x_compound_expr): Likewise. * typeck2.c (build_x_arrow): Likewise. 2003-07-08 Mark Mitchell <mark@codesourcery.com> * g++.dg/abi/mangle17.C: Make sure template expressions are dependent. * g++.dg/abi/mangle4.C: Mark erroneous casts. * g++.dg/debug/debug7.C: Mark erronous new-declarator. * g++.dg/opt/stack1.C: Remove erroneous code. * g++.dg/parse/template7.C: New test. * g++.dg/template/dependent-expr1.C: Mark erroneous code. * g++.old-deja/g++.pt/crash4.C: Likewise. 2003-07-09 Mark Mitchell <mark@codesourcery.com> * gcj/array.h (JvPrimClass): Don't parenthesize the output. From-SVN: r69130
2003-07-09java-tree.h (DECL_NUM_STMTS): Rename to...Jan Hubicka5-5/+20
* java-tree.h (DECL_NUM_STMTS): Rename to... (DECL_ESTIMATED_INSNS): ... this. * lang.c (java_estimate_num_insns, java_estimate_num_insns_1): New static functions. (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define. * parser.y (add_stmt_to_compound): Do not account statements. * cp-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New. * decl.c (duplicate_decls): Use DECL_ESTIMATED_INSNS. (start_function): Use DECL_ESTIMATED_INSNS. * optimize.c (maybe_clone_body): Use DECL_ESTIMATED_INSNS. * decl2.c (maybe_emit_vtables): Fix marking vtables as needed in unit-at-a-time * c-common.c (c_estimate_num_insns_1): New static function. (c_estimate_num_insns): New global function. * c-common.h (DECL_NUM_STMTS): Rename to... (DECL_ESTIMATED_INSNS): ... this. (c_estimate_num_insns): Declare. * c-decl.c (duplicate_decls): Use DECL_ESTIMATED_INSNS. * c-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New. * c-semantics.c (add_stmt): Do not account statements. * langhooks-def.h (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): New. * langhooks.h (lang_hooks_for_tree_inlining): Add estimate_num_insns * params.def (max-inline-insns-auto, max-inline-insns-auto): set to 100. (max-inline-insns): set to 300. (min-inline-insns): set to 10. * tree-inline.c (struct inline_data): Rename inlined_stmts to inlined-insns. (INSNS_PER_STMT): Kill. (inlinable_function_p): Compute and store body size. (expand_call_inline): Likewise. (optimize_inline_calls): Likewise. From-SVN: r69113
2003-07-08re PR c++/11030 (Cannot befriend a template specialization)Kriang Lerdsuwanakij2-0/+8
PR c++/11030 * pt.c (instantiate_class_template): Don't call xref_tag to inject name when the friend class is a specialization. * g++.dg/template/friend19.C: New test. From-SVN: r69088
2003-07-08cp-tree.h (build_scoped_method_call): Remove.Mark Mitchell18-927/+522
* cp-tree.h (build_scoped_method_call): Remove. (lookup_qualified_name): Remove parameter. (tsubst_copy_and_build): Declare. (finish_qualified_object_call_expr): Remove. (check_accessibility_of_qualified_id): New function. (finish_qualified_id_expr): Likewise. (non_reference): Likewise. (build_expr_from-tree): Remove. * call.c (non_reference): Remove. (build_scoped_method_call): Likewise. (build_method_call): Use error_operand_p. Assert that we are not processing a template. (standard_conversion): Use non_reference. * class.c (build_vtbl_entry_ref): Likewise. (build_vtbl_ref_1): Likewise. * cvt.c (build_expr_type_conversion): Use non_reference. * decl.c (lookup_qualified_name): Remove flags parameter. (grok_op_properties): Use non_reference. * decl2.c (grok_array_decl): Likewise. (build_expr_from_tree): Remove. (build_offset_ref_call_from_tree): Update comment. * error.c (parm_to_string): Call reinit_global_formatting_buffer. * except.c (prepare_eh_types): Use non_reference. (can_convert_eh): Likewise. * init.c (build_dtor_call): Avoid using build_method_call. * mangle.c (write_template_param): Remove misleading comment. * method.c (locate_copy): Use non_reference. * parser.c (cp_parser_scope_through_which_access_occurs): Remove. (cp_parser_primary_expression): Do not create SCOPE_REFs is non-dependent contexts. (cp_parser_postfix_expression): Use finish_qualified_id_expr. (cp_parser_direct_declarator): Use tsubst_copy_and_build, not build_expr_from_tree. (cp_parser_lookup_name): Adjust call to lookup_qualified_name. Use check_accessibility_of_qualified_id. * pt.c (maybe_fold_nontype_arg): Use tsubst_copy_and_build, not build_expr_from_tree. (tsubst_baselink): New function. (tsubst_qualified_id): Likewise. (tsubst_copy): Use them. Remove support for METHOD_CALL_EXPR. (tsubst_expr): Adjust call to lookup_qualified_name. (tsubst_copy_and_build): Handle SCOPE_REFs specially. Adjust handling of CALL_EXPRs. (value_dependent_expression_p): Use INTEGRAL_OR_ENUMERATION_TYPE_P. * rtti.c (get_tinfo_decl_dynamic): Use non_reference. * search.c (check_final_overrider): Likewise. * semantics.c (check_accessibility_of_qualified_id): New function. (finish_qualified_object_call_expr): Remove. * typeck.c (target_type): Use non_reference. (cxx_sizeof_or_alignof_type): Likewise. (dubious_conversion_warnings): Likewise. (convert_for_initialization): Likewise. (non_reference): New function. From-SVN: r69063
2003-07-08bitmap.c (debug_bitmap_file): Merge uses of HOST_PTR_PRINTF with adjacent ↵Kaveh R. Ghazi3-27/+21
stdio calls. gcc: * bitmap.c (debug_bitmap_file): Merge uses of HOST_PTR_PRINTF with adjacent stdio calls. * c-decl.c (c_print_identifier): Likewise. * mips-tfile.c (write_varray, write_object, allocate_cluster): Likewise. * print-rtl.c (print_rtx): Likewise. * print-tree.c (print_node_brief, print_node): Likewise. * system.h (HOST_PTR_PRINTF): Ensure we have a literal string. * configure.in (AC_COMPILE_CHECK_SIZEOF): Check for `void *'. * config.in, configure: Regenerated. cp: * decl.c (print_binding_level, print_other_binding_stack, print_binding_stack): Merge uses of HOST_PTR_PRINTF with adjacent stdio calls. * ptree.c (cxx_print_decl, cxx_print_binding): Likewise. From-SVN: r69061
2003-07-07* friend.c: Convert to ISO C90 prototypes.Andreas Jaeger1-12/+6
From-SVN: r69052
2003-07-07genextract.c: Convert remaining prototypes to ISO C90.Andreas Jaeger9-83/+56
2003-07-07 Andreas Jaeger <aj@suse.de> * genextract.c: Convert remaining prototypes to ISO C90. * cpplex.c (_cpp_free_buff): Convert prototype to ISO C90. * fold-const.c (fold_single_bit_test): Likewise. * diagnostic.c (default_diagnostic_finalizer): Likewise. * cfgrtl.c (rtl_redirect_edge_and_branch): Likewise. * gengtype.c (write_array): Generate ISO C90 prototypes. * genflags.c (gen_proto): Generate ISO C90 prototypes. For cp: 2003-07-07 Andreas Jaeger <aj@suse.de> * friend.c: Convert to ISO C90 prototypes. * Make-lang.in ($(srcdir)/cp/cfns.h): Use ANSI-C as output language. * cfns.h: Regenerate. * typeck.c: Convert remaining prototypes to ISO C90. * search.c: Likewise. * decl2.c (build_expr_from_tree): Convert prototype to ISO C90. * semantics.c (expand_or_defer_fn): Likewise * mangle.c (discriminator_for_string_literal): Likewise. * g++spec.c (lang_specific_driver): Likewise. * search.c (lookup_base_r): Remove unused variable. From-SVN: r69050
2003-07-07rtl.h (emit_line_note): Take a location_t.Nathan Sidwell2-1/+6
* rtl.h (emit_line_note): Take a location_t. (emit_line_note_force): Remove. (set_file_and_line_for_statement): Take a location_t. * tree.g (emit_line_note): Take a location_t. * emit-rtl.c (emit_line_note): Take a location_t. (emit_line_note_force): Remove. * function.c (init_function_start): Adjust emit_line_note call. (expand_function_end): Use force_next_line_note, not emit_line_note_force. * c-parse.in (maybe_type_qual): Adjust emit_line_note calls. * c-semantics.c (genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt, genrtl_while_stmt, genrtl_do_stmt_1, genrtl_return_stmt, genrtl_for_stmt, genrtl_break_stmt, genrtl_continue_stmt, genrtl_continue_stmt, genrtl_switch_stmt, genrtl_asm_stmt): Likewise. * expr.c (expand_expr): Likewise. * integrate.c (expand_inline_function): Likewise. * stmt.c (set_file_and_line_for_stmt): Take a location_t. (expand_decl_init): Adjust emit_line_note call. * ada/trans.c (build_unit_elab, set_lineno): Adjust emit_line_note calls. * cp/semantics.c: (genrtl_try_block) Adjust emit_line_note calls. * f/com.c (bison_rule_pushlevel_, bison_rule_compstmt_): Adjust emit_line_note calls. * f/ste.c (ffeste_emit_line_note_): Likewise. * java/expr.c (expand_byte_code): * treelang/treetree.c (tree_code_if_start, tree_code_if_else, tree_code_if_end, tree_code_create_function_initial, tree_code_create_function_wrapup, tree_code_generate_return, tree_code_output_expression_statement): Adjust emit_line_note calls. From-SVN: r69047
2003-07-07* search.c (lookup_base_r): Remove unused variable.Andreas Jaeger2-2/+4
From-SVN: r69033
2003-07-07re PR debug/10055 (g++ emits "<internal>" as source filename with -gstabs+)Michael Chastain2-2/+15
PR debug/10055 * lex.c (cxx_init): Call push_srcloc and pop_srcloc rather than assigning to input_filename directly. From-SVN: r69032
2003-07-06call.c: Fix comment formatting.Kazu Hirata14-55/+71
* call.c: Fix comment formatting. * class.c: Likewise. * cp-tree.h: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * error.c: Likewise. * method.c: Likewise. * name-lookup.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * typeck.c: Likewise. From-SVN: r69022
2003-07-06re PR c++/11345 (ICE in build_base_path)Mark Mitchell3-54/+25
PR c++/11345 * search.c (lookup_base_r): Remove is_non_public and within_current_scope parameters. Remove other dead code. (lookup_base): Adjust call to lookup_base_r. (adjust_result_of_qualified_name_lookup): Improve comment. * semantics.c (finish_call_expr): Use maybe_dummy_object. From-SVN: r69020
2003-07-06c-common.h (c_comon_handle_filename, [...]): New.Neil Booth2-0/+9
* c-common.h (c_comon_handle_filename, c_common_missing_arguement): New. * c-lang.c (LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT): New. * c-opts.c (missing_arg): Rename c_common_missing_argument, update to be an appropriate langhook. (c_common_handle_option): Don't handle filenames. (c_common_handle_filename): New. * hooks.c (hook_void_constcharptr, hook_bool_constcharptr_size_t_false): New. * hooks.h (hook_void_constcharptr, hook_bool_constcharptr_size_t_false): New. * langhooks-def.h (LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT): New. (LANG_HOOKS_INITIALIZER): Update. * langhooks.h (struct lang_hooks): Add handle_filename and missing_argument. * opts.c (handle_option): Don't handle filenames here, but ... (handle_options): ... here. (common_handle_option): Don't handle missing arguments here. * objc/objc-lang.c (LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT): New. ada: * misc.c (gnat_handle_option): Don't handle filenames. cp: * cp-lang.c (LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT): Override. f: * top.c (ffe_handle_option): Don't handle filenames. java: * lang.c (java_handle_option): Don't handle filenames. From-SVN: r69011
2003-07-06re PR c++/11431 (static_cast behavior with subclasses when default ↵Mark Mitchell9-69/+131
constructor available) PR c++/11431 * typeck.c (build_static_cast): Check for reference conversions earlier. * cp-tree.h (perform_integral_promotions): Declare. * call.c (build_addr_func): Use decay_conversion. (convert_arg_to_ellipsis): Likewise. Remove misleading comment. (convert_for_arg_passing): Use perform_integral_promotions. * cvt.c (build_expr_type_conversion): Use decay_conversion. (type_promotes_to): Do not return a cv-qualified type. * decl.c (grok_reference_init): Fix formatting. (get_atexit_node): Use decay_conversion. (build_enumerator): Use perform_integral_promotions. * init.c (build_vec_init): Use decay_conversion. * semantics.c (finish_expr_stmt): Likewise. (finish_switch_cond): Use perform_integral_promotions. * typeck.c (default_conversion): Likewise. (perform_integral_promotions): New function. (build_indirect_ref): Use decay_conversion. (build_array_ref): Use perform_integral_promotions. (convert_arguments): Use decay_conversion. (build_unary_op): Use perform_integral_promotions. (build_c_cast): Use decay_conversion. (build_modify_expr): Likewise. (convert_for_initialization): Likewise. * typeck2.c (build_x_arrow): Likewise. * g++.old-deja/g++.jason/typeid1.C: Make it a compile test, not a run test. PR c++/11431 * g++.dg/expr/static_cast3.C: New test. From-SVN: r68989
2003-07-05call.c: Fix comment typos.Kazu Hirata15-65/+82
* call.c: Fix comment typos. * class.c: Likewise. * cp-tree.h: Likewise. * cvt.c: Likewise. * decl2.c: Likewise. * decl.c: Likewise. * init.c: Likewise. * mangle.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise From-SVN: r68956
2003-07-05cpplib.h (CPP_AT_NAME, [...]): New token types.Zack Weinberg2-78/+39
* cpplib.h (CPP_AT_NAME, CPP_OBJC_STRING): New token types. (struct cpp_options): Add narrow_charset, wide_charset, bytes_big_endian fields. Remove EBCDIC field. (cpp_init_iconv, cpp_interpret_string): New external interfaces. * cpphash.h: Include <iconv.h> if we have it, otherwise provide a dummy definition of iconv_t. (struct cpp_reader): Add narrow_cset_desc and wide_cset_desc fields. (_cpp_valid_ucn): Update prototype. (_cpp_destroy_iconv): New prototype. * doc/cpp.texi: Document character set handling. * doc/cppopts.texi: Document -fexec-charset= and -fexec-wide-charset=. * doc/extend.texi: Delete entire section on multiline strings. Rewrite section on __FUNCTION__ etc now that these are variables in C. * cppucnid.tab, cppucnid.pl: New files. * cppucnid.h: New generated file. * cppcharset.c: Include cppucnid.h. Lots of commentary added. (iconv_open, iconv, iconv_close): Provide dummy definitions if !HAVE_ICONV. (SOURCE_CHARSET, struct strbuf, init_iconv_desc, cpp_init_iconv, _cpp_destroy_iconv, convert_cset, width_to_mask, convert_ucn, emit_numeric_escape, convert_hex, convert_oct, convert_escape, cpp_interpret_string, narrow_str_to_charconst, wide_str_to_charconst): New. (ucn_valid_in_identifier): Use a binary search through the ucnranges table defined in cppucnid.h, not a long chain of if statements. (_cpp_valid_ucn): Add a limit pointer. Downgrade "universal character names are only valid in C++ and C99" to a warning. Issue the "meaning of \[uU] is different in traditional C" warning here. Take care not to let iconv see an invalid UCS value if we get a malformed UCN. Issue an error if we don't have iconv. (cpp_interpret_charconst): Moved here from cpplex.c. Use cpp_interpret_string to do the heavy lifting. * cppinit.c (cpp_create_reader): Initialize bytes_big_endian, narrow_charset, wide_charset fields of options structure. (cpp_destroy): Call _cpp_destroy_iconv. * cpplex.c (forms_identifier_p): Adjust call to _cpp_valid_ucn. (maybe_read_ucn, hex_digit_value, cpp_parse_escape): Delete. (cpp_interpret_charconst): Moved to cppcharset.c. * cpplib.c (dequote_string): Delete. (interpret_string_notranslate): New. (do_line, do_linemarker): Use interpret_string_notranslate. * Makefile.in (cppcharset.o): Depend on cppucnid.h. * c-common.c (fname_string, combine_strings): Delete. * c-common.h (fname_string, combine_strings): Delete prototypes. * c-lex.c (ignore_escape_flag): Delete. (cb_ident): Use cpp_interpret_string, not lex_string. (get_nonpadding_token): New function. (c_lex): Handle Objective-C @-prefixed identifiers and strings here. Adjust calls to lex_string. Don't write *value twice. (lex_string): Now handles string constant concatenation. Most of the work handed off to cpp_interpret_string. Call fix_string_type here. * c-parse.in (STRING_FUNC_NAME, VAR_FUNC_NAME): Replace with FUNC_NAME, throughout. (OBJC_STRING): New token type. (primary:STRING): No need to call fix_string_type here. (primary:objc_string): Make that OBJC_STRING. (objc_string nonterminal): Delete. (yylexname): Delete code to handle fake string constants. (yylexstring): Delete entirely. (_yylex): Handle CPP_AT_NAME and CPP_OBJC_STRING. No need to handle CPP_ATSIGN. * c.opt (-fexec-charset=, -fwide-exec-charset=): New options. * c-opts.c (missing_arg, c_common_handle_option): Handle OPT_fexec_charset_ and OPT_fwide_exec_charset_. (c_common_init): Set cpp_opts->bytes_big_endian, not cpp_opts->EBCDIC. Call cpp_init_iconv. (print_help): Document -fexec-charset= and -fexec-wide-charset=. (TARGET_EBCDIC): Delete default definition. * objc/objc-act.c (build_objc_string_object): No need to handle string constant concatenation. cp: * parser.c (cp_lexer_read_token): No need to handle string constant concatenation. testsuite: * gcc.c-torture/execute/wchar_t-1.x: New file; XFAIL wchar_t-1.c everywhere. * gcc.dg/concat.c: Concatenation of string constants with __FUNCTION__ / __PRETTY_FUNCTION__ is now a hard error. * gcc.dg/wtr-strcat-1.c: Loosen dg-warning regexp. * gcc.dg/cpp/escape-2.c: Use wide character constants where necessary to avoid multi-character character constant warning. * gcc.dg/cpp/escape.c: Likewise. * gcc.dg/cpp/ucs.c: Likewise. Remove backslashes from dg-bogus comments, as they confuse Tcl. Fix a typo. libstdc++-v3: * testsuite/22_locale/collate/compare/wchar_t/2.cc * testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc * testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc * testsuite/22_locale/collate/hash/wchar_t/2.cc * testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc * testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc * testsuite/22_locale/collate/transform/wchar_t/2.cc * testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc * testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc: XFAIL on all targets. From-SVN: r68952
2003-07-04call.c (build_addr_func): Handle bound pointers-to-members.Mark Mitchell12-359/+185
* call.c (build_addr_func): Handle bound pointers-to-members. (build_method_call): Do not call resolve_offset_ref. (implicit_conversion): Likewise. (resolve_scoped_fn_name): Use finish_non_static_data_member, not resolve_offset_ref. (resolve_args): Do not call resolve_offset_ref. (build_conditional_expr): Likewise. (build_new_method_call): Likewise. * cp-tree.def (OFFSET_REF): Update documentation. (cp_convert_to_pointer): Update handling of conversions from pointers to members to pointers. (ocp_convert): Do not call resolve_offset_ref. (convert_to_void): Likewise. (build_expr_type_conversion): Likewise. (delete_sanity): Likewise. (resolve_offset_ref): Simplify greatly. (build_vec_delete): Do not call resolve_offset_ref. * parser.c (cp_parser_postfix_expression): Call resolve_offset_ref if appropriate. (cp_parser_unary_expression): Use cp_parser_simple_cast_expression. (cp_parser_delete_expression): Likewise. (cp_parser_cast_expression): Likewise. (cp_parser_pm_expression): Use cp_parser_binary_op. (cp_parser_simple_cast_expression): New function. * rtti.c (build_dynamic_cast_1): Do not call resolve_offset_ref. * semantics.c (finish_increment_expr): Likewise. (finish_typeof): Likewise. * tree.c (lvalue_p_1): Do not handle OFFSET_REF. * typeck.c (require_complete_type): Do not handle OFFSET_REFs. (decay_conversion): Do not call resolve_offset_ref. (finish_class_member_access_expr): Likewise. (convert_arguments): Likewise. (build_x_binary_op): Handle DOTSTAR_EXPR. (condition_conversion): Do not call resolve_offset_ref. (unary_complex_lvalue): Likewise. (build_static_cast): Likewise. (build_reinterpret_cast): Likewise. (build_const_cast): Likewise. (build_c_cast): Likewise. (build_modify_expr): Likewise. (convert_for_assignment): Likewise. (convert_for_initialization): Likewise. * typeck2.c (build_x_arrow): Likewise. (build_m_component_ref): Simplify. * g++.old-deja/g++.jason/typeid1.C: Add dg-error marker. * g++.old-deja/g++.mike/net36.C: Tweak error messages. From-SVN: r68911
2003-07-04c-aux-info.c: Include toplev.h after c-tree.h.Kaveh R. Ghazi2-4/+20
gcc: * c-aux-info.c: Include toplev.h after c-tree.h. * c-common.c: Likewise. (GCC_DIAG_STYLE): Undef. * c-semantics.c (GCC_DIAG_STYLE): Define. * c-tree.h (GCC_DIAG_STYLE): Likewise. * diagnostic.h (inform): Move prototype to toplev.h. * jump.c: Include diagnostic.h before toplev.h. * toplev.h (GCC_DIAG_STYLE, ATTRIBUTE_GCC_DIAG): Define. (warning, error, fatal_error, pedwarn, sorry, inform, error_for_asm, warning_for_asm): Mark with ATTRIBUTE_GCC_CXXDIAG. cp: * cp-tree.h (GCC_DIAG_STYLE, ATTRIBUTE_GCC_CXXDIAG): Define. (cp_error_at, cp_warning_at, cp_pedwarn_at): Mark with ATTRIBUTE_GCC_CXXDIAG. From-SVN: r68910
2003-07-03call.c (build_scoped_method_call): Use convert_to_void.Mark Mitchell7-64/+53
* call.c (build_scoped_method_call): Use convert_to_void. (build_method_call): Likewise. * class.c (check_field_decls): Remove dead code. * cvt.c (convert_from_reference): Remove OFFSET_TYPE handling. * decl2.c (grok_array_decl): Remove dead code. (arg_assoc_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE as pointer-to-member representation. * init.c (build_offset_ref): Tidy. (build_vec_delete_1): Use convert_to_void. * mangle.c (write_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE as pointer-to-member representation. From-SVN: r68895
2003-07-03re PR c++/9162 ([New parser] Problem with default argument in a friend function)Nathan Sidwell5-72/+99
cp: PR c++/9162 * decl.c (grokdeclarator): Return friend decls, not void_type_node. * decl2.c (grokfield): Alter friend decl check. * parser.c (struct cp_parser): Document default_arg chain on unparsed_functions_queue. (cp_parser_save_default_args): New. (cp_parser_init_declarator, cp_parser_function_definition, cp_parser_member_declaration): Call it. (cp_parser_class_specifier): Remove unused variable. Alter processing of unparsed_functions_queue. testsuite: PR c++/9162 * g++.dg/parse/defarg4.C: New. From-SVN: r68886
2003-07-03class.c (add_method, [...]): Fix format specifier.Kaveh R. Ghazi5-16/+33
* class.c (add_method, check_field_decl): Fix format specifier. * decl.c (duplicate_decls, pushdecl, check_goto, fixup_anonymous_aggr, maybe_commonize_var, grokdeclarator, start_enum): Likewise. * decl2.c (ambiguous_decl): Likewise. * pt.c (redeclare_class_template): Likewise. From-SVN: r68878
2003-07-02Fix a typo.Wolfgang Bangerth1-1/+1
From-SVN: r68856
2003-07-02re PR c++/10219 (ICE in maybe_adjust_types_for_deduction on invalid code)Nathan Sidwell3-0/+9
cp: PR c++/10219 * pt.c (type_unification_real): Don't unify exprs of error type. * tree.c (error_type): Don't die on error_type. testsuite: PR c++/10219 * g++.dg/template/error1.C: New. From-SVN: r68825