aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
AgeCommit message (Collapse)AuthorFilesLines
2004-11-04re PR tree-optimization/18184 (Tree optimizers ignore pointer modes)Ulrich Weigand3-2/+13
ChangeLog: PR tree-optimization/18184 * c-typeck.c (comptypes): Do not treat pointers of different modes or alias-all flags as equivalent. * tree-ssa.c (tree_ssa_useless_type_conversion_1): Likewise. cp/ChangeLog: PR tree-optimization/18184 * cp-objcp-common.c (cxx_types_compatible_p): Do not treat pointers of different modes or alias-all flags as equivalent. * typeck.c (comptypes): Likewise. From-SVN: r90078
2004-11-04DR 49, 100Giovanni Bajo5-342/+366
DR 49, 100 * cp-tree.h (TYPE_REF_OBJ_P): New macro. (TYPE_PTR_P, TYPE_PTROB_P, TYPE_PTROBV_P, TYPE_PTRFN_P, TYPE_REFFN_P): Document. (fold_decl_constant_value): New prototype. * pt.c (convert_nontype_argument_function): Rewrite and extract parts into... (fold_decl_constant_value, convert_nontype_argument_function): New. (lookup_template_class): Add comment about useless double call. * mangle.c (write_expression): Strip conversions before lowering pointer to members. * cvt.c (ocp_convert): Check LOOKUP_COMPLAIN for a pedwarn. Disallow enum to enum conversion. * g++.dg/template/nontype7.C: New test. * g++.dg/template/nontype8.C: Likewise. * g++.dg/template/nontype9.C: Likewise. * g++.dg/template/nontype10.C: Likewise. * g++.dg/tc1/dr49.C: Likewise. * g++.dg/template/ptrmem8.C: Relax dg-error checks. * g++.old-deja/g++.other/null1.C: Remove a buggy error check From-SVN: r90059
2004-11-03re PR c++/18124 (ICE with invalid template template parameter)Mark Mitchell3-10/+38
PR c++/18124 * parser.c (cp_parser_type_parameter): Robustify. PR c++/18155 * parser.c (cp_parser_single_declaration): Disallow template typedefs. PR c++/18177 * typeck.c (build_const_cast): Use error_operand_p. PR c++/18124 * g++.dg/template/crash25.C: New test. PR c++/18155 * g++.dg/template/typedef2.C: New test. * g++.dg/parse/crash13.C: Adjust error markers. PR c++/18177 * g++.dg/conversion/const3.C: New test. From-SVN: r90016
2004-11-02c-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Remove.Ziemowit Laski4-23/+33
[gcc/ChangeLog] 2004-11-02 Ziemowit Laski <zlaski@apple.com> * c-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Remove. (c_types_compatible_p): Move function definition... * c-objc-common.c (c_types_compatible_p): ...here. * c-objc-common.h (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from c-lang.c. [gcc/cp/ChangeLog] 2004-11-02 Ziemowit Laski <zlaski@apple.com> * cp-lang.c (cxx_types_compatible_p): Remove prototype and definition. (LANG_HOOKS_TYPES_COMPATIBLE_P): Move to cp-objcp-common.h. * cp-objcp-common.c (cxx_types_compatible_p): Moved definition here from cp-lang.c. * cp-objcp-common.h (cxx_types_compatible_p): Moved prototype here from cp-lang.c. (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from cp-lang.c. From-SVN: r89997
2004-11-01fix typoJason Merrill1-1/+1
From-SVN: r89960
2004-11-01re PR c++/18064 (gcc accepts different pointer types as covariant return types)Nathan Sidwell2-0/+11
cp: PR c++/18064 * search.c (check_final_overrider): Deprecate gnu covariant extension. doc: PR c++/18064 * doc/extend.texi (Deprecated Features): Deprecate G++ covariant extension. testsuite: PR c++/18064 * g++.old-deja/g++.mike/p811.C: Avoid covariant extension. From-SVN: r89946
2004-11-01Convert diagnostics to use quoting flag q 9/nGabriel Dos Reis11-28/+48
Convert diagnostics to use quoting flag q 9/n * typeck.c (build_x_unary_op, convert_member_func_to_ptr, get_delta_difference): Use new quotation style. * repo.c (reopen_repo_file_for_write): Likewise. * pt.c (do_type_instantiation): Likewise. * parser.c (cp_parser_diagnose_invalid_type_name): * name-lookup.c (push_overloaded_decl, set_decl_namespace): * error.c (cp_print_error_function, print_instantiation_full_context): Likewise. * decl.c (define_label, grok_reference_init, maybe_deduce_size_from_array_init, revert_static_member_fn): * decl2.c (check_classfn): Likewise. * class.c (add_method, check_field_decls, layout_class_type, resolve_address_of_overloaded_function): Likewise. * call.c (build_x_va_arg, build_over_call): Likewise. From-SVN: r89938
2004-11-01Convert diagnostics to use quoting flag q 8/nGabriel Dos Reis2-41/+52
Convert diagnostics to use quoting flag q 8/n * cvt.c (cp_convert_to_pointer, warn_ref_binding, convert_to_reference, ocp_convert, convert_to_void cp_convert_to_pointer): From-SVN: r89924
2004-11-01re PR c++/15172 (Copy constructor optimization in aggregate initialization)Mark Mitchell2-17/+15
PR c++/15172 * typeck2.c (store_init_value): Use split_nonconstant_init even for types that require construction. PR c++/15172 * g++.dg/init/aggr2.C: New test. From-SVN: r89922
2004-10-30re PR c++/17542 (Visibility attribute ignored when it precedes class head)Matt Austern4-4/+22
PR c++/17542 * cp-tree.h (class_key_or_enum_as_string): Declare. * error.c (class_key_or_enum): Rename to class_key_or_enum_as_string and remove static qualifier. * decl.c (shadow_tag): Warn about ignored attributes in class/struct/ union/enum declaration. * g++.dg/ext/attrib18.C: New test. From-SVN: r89898
2004-10-29* pt.c: Fix a comment typo.Kazu Hirata2-1/+5
From-SVN: r89845
2004-10-29typeck.c (composite_pointer_type): Remove comment about DR 195.Nathan Sidwell2-24/+15
cp: * typeck.c (composite_pointer_type): Remove comment about DR 195. (build_reinterpret_cast_1): Revert DR195 patch. Only emit a warning when being pedantic. (build_reinterpet_cast, build_c_cast): Adjust. testsuite: * g++.dg/conversion/dr195.C: Adjust expected errors for DR195 not being implemented. * g++.dg/conversion/dr195-1.C: New. * g++.old-deja/g++.brendan/operators4.C: Don't be pedantic. * g++.old-deja/g++.mike/p10148.C: Likewise. From-SVN: r89826
2004-10-29re PR c++/17695 (ICE in add_abstract_origin_attribute)Mark Mitchell2-0/+14
PR c++/17695 * decl.c (grokdeclarator): Mark TYPE_DECLs as abstract when they appear in a constructor/destructor that will be cloned. PR c++/17695 * g++.dg/debug/typedef2.C: New test. From-SVN: r89819
2004-10-29c++/14124Matt Austern3-2/+28
* decl.c (finish_enum): Handle packed attribute. * parser.c (cp_parser_enum_specifier): Process trailing attributes. * g++.dg/ext/packed7.C: New test. From-SVN: r89801
2004-10-28re PR c++/17132 (GCC fails to eliminate function template specialization ↵Mark Mitchell2-2/+23
when argument deduction fails) PR c++/17132 * pt.c (instantiate_class_template): Increment processing_template_decl when substituting into a member class template. PR c++/17132 * g++.dg/template/memclass3.C: New test. From-SVN: r89778
2004-10-28decl.c (bad_specifiers): Move the q after the %.Andrew Pinski1-1/+1
2004-10-27 Andrew Pinski <pinskia@physics.uc.edu> * decl.c (bad_specifiers): Move the q after the %. From-SVN: r89756
2004-10-28re PR c++/17435 (Binding a temporary of derived type to reference of base)Mark Mitchell3-7/+21
PR c++/17435 * call.c (convert_like_real): Fix formatting. (initialize_reference): When binding a temporary to a base class, ensure that the nominal copy made is to the derived class, not the base class. PR c++/18140 * parser.c (cp_parser_next_token_ends_template_argument_p): Do not include ">>". PR c++/17435 * g++.dg/init/ref12.C: New test. PR c++/18140 * g++.dg/template/shift1.C: New test. * g++.dg/template/error10.C: Adjust error markers. From-SVN: r89738
2004-10-27decl.c: Move the q after the %.Andrew Pinski2-1/+5
2004-10-27 Andrew Pinski <pinskia@physics.uc.edu> * decl.c: Move the q after the %. From-SVN: r89728
2004-10-27parser.c (cp_parser_diagnose_invalid_type_name): Move the q after the %.Andrew Pinski2-1/+6
2004-10-27 Andrew Pinski <pinskia@physics.uc.edu> * parser.c (cp_parser_diagnose_invalid_type_name): Move the q after the %. From-SVN: r89727
2004-10-27name-lookup.c (do_namespace_alias): Use FROB_CONTEXT.Mark Mitchell3-2/+5
* name-lookup.c (do_namespace_alias): Use FROB_CONTEXT. * search.c (current_scope): Fix prototype. From-SVN: r89632
2004-10-27re PR c++/18093 (bogus conflict in namespace aliasing)Mark Mitchell7-47/+86
PR c++/18093 * search.c (current_scope): Return the innermost non-block scope, not the innermost non-block, non-namespace scope. (at_namespace_scope_p): Adjust accordingly. (dfs_accessible_post): Do not pass namespaces to is_friend. (dfs_walk_once_accessible_r): Likewise. * decl.c (grokvardecl): Adjust call to current_scope. (build_enumerator): Likewise. * parser.c (cp_parser_using_declaration): Likewise. (cp_parser_direct_declarator): Use at_namespace_scope_p instead of current_scope. (cp_parser_class_head): Adjust call to current_scope. * name-lookup.c (do_namespace_alias): Set the DECL_CONTEXT for the alias. PR c++/18020 * pt.c (tusbst_copy_and_build): Resolve enumeration constants to their underlying values. PR c++/18161 * typeck.c (build_binary_op): Honor build_type, even when in a template. PR c++/18093 * g++.dg/lookup/ns2.C: New test. PR c++/18020 * g++.dg/template/enum4.C: New test. PR c++/18161 * g++.dg/template/expr1.C: New test. From-SVN: r89627
2004-10-26c-lex.c (get_nonpadding_token): Remove.Nathan Sidwell2-23/+7
* c-lex.c (get_nonpadding_token): Remove. (c_lex_with_flags): Push timevar and eat padding here. Improve stray token diagnostic. (lex_string): Replace logic with switch statement, eat padding token here. * cp/parser.c (cp_lexer_get_preprocessor_token): Remove unneeded padding token checking. testsuite: * gcc.dg/cpp/direct2.c: Adjust expected errors, robustify parser resyncing. * gcc.dg/cpp/direct2s.c: Likewise. From-SVN: r89577
2004-10-25re PR middle-end/17407 (ICE in int_mode_for_mode)Andrew Pinski2-7/+6
2004-10-25 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/17407 * c-decl.c (grokdeclarator) <case cdk_array>: Remove the call layout_type as it is already done by build_array_type. * tree.c (build_array_type): Layout the type even 2004-10-25 Andrew Pinski <pinskia@physics.uc.edu> PR c++/18121 * decl.c (grokdeclarator) <case cdk_array>: Remove the call layout_type as it is already done by create_array_type_for_decl. 2004-10-25 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/17407 * gcc.c-torture/compile/pr17407.c: New test. PR c++/18121 * g++.dg/template/array8.C: New test. From-SVN: r89533
2004-10-22re PR c++/18095 (ICE in cp_lexer_consume_token on missing ";")Nathan Sidwell2-64/+65
cp: PR c++/18095 * parser.c (eof_token): Make const, correctly initialize rid and location fields. (struct cp_lexer): Replace buffer_end pointer with buffer_length count. Adjust. (cp_lexer_new_main): Directly grow lexer's buffer here. Don't zero it out. (cp_lexer_new_from_tokens): Adjust. (cp_lexer_grow_buffer): Remove. (cp_lexer_peek_nth_token, cp_lexer_consume_token, cp_lexer_purge_token): Add const casts. testsuite: PR c++/18095 * g++.dg/parse/crash18.C: New. * g++.dg/parse/crash19.C: New. From-SVN: r89439
2004-10-21re PR c++/18073 (mmintrin.h rejected by C++ frontend)Mark Mitchell6-60/+125
PR c++/18073 PR c++/10841 * cp-tree.h (convert_to_base): Change prototype. (build_ptrmemfunc): Likewise. (convert_ptrmem): New function. * call.c (struct conversion): Adjust documentation for base_p. (standard_conversion): Set base_p for ck_pmem conversions as appropriate. (convert_like_real): Use convert_to_base for ck_pmem and ck_ptr conversions. * class.c (convert_to_base): Handle both pointers and objects. Add nonnull parameter. (build_vfield_ref): Adjust call to convert_to_base. * cvt.c (cp_convert_to_pointer): Adjust call to build_ptrmemfunc. (convert_force): Likewise. * typeck.c (build_unary_op): Likewise. (convert_ptrmem): New function. (build_static_cast_1): Use it. (build_reinterpret_cast): Allow conversions to vector types. (get_delta_difference): Add c_cast_p parameter. (build_ptrmemfunc): Likewise. Adjust calls to get_delta_difference. PR c++/10841 * g++.dg/conversion/cast1.C: New test. * g++.dg/overload/pmf1.C: Adjust error marker. From-SVN: r89403
2004-10-21re PR c++/13560 (wrong file name in error message)Andrew Pinski2-0/+9
2004-10-21 Andrew Pinski <pinskia@physics.uc.edu> PR c++/13560 * error.c (cp_error_at): Output the context as it might be different file as the other location. From-SVN: r89382
2004-10-21* typeck.c: Fix a comment typo.Kazu Hirata2-1/+5
From-SVN: r89373
2004-10-20re PR c++/13495 (Friendship to class nested within a template is broken)Kriang Lerdsuwanakij6-47/+252
PR c++/13495 * decl.c (make_unbound_class_template): Add PARM_LIST parameter. * cp-tree.h (make_unbound_class_template): Adjust prototype. * parser.c (cp_parser_lookup_name): Adjust call to make_unbound_class_template. (cp_parser_single_declaration): Handle member class of class template as template friend parsing correctly. * friend.c (is_friend): Call is_specialization_of_friend for template friend class. (make_friend_class): Handle member class of class template as template friend. * pt.c (is_specialization_of_friend): Likewise. (instantiate_class_template): Likewise. (tsubst): Adjust call to make_unbound_class_template. * g++.dg/template/memfriend9.C: New test. * g++.dg/template/memfriend10.C: Likewise. * g++.dg/template/memfriend11.C: Likewise. * g++.dg/template/memfriend12.C: Likewise. * g++.dg/template/memfriend13.C: Likewise. * g++.dg/template/memfriend14.C: Likewise. * g++.dg/template/memfriend15.C: Likewise. * g++.dg/template/memfriend16.C: Likewise. * g++.dg/template/memfriend17.C: Likewise. * g++.old-deja/g++.pt/friend44.C: Remove bogus error. From-SVN: r89335
2004-10-20typeck.c (composite_pointer_type): Add comment about DR 195Nathan Sidwell2-3/+32
cp: * typeck.c (composite_pointer_type): Add comment about DR 195 (build_reinterpret_cast_1): Add for_reinterpret_cast_p parameter. Allow function pointer conversions that DR195 suggests. (build_reinterpret_cast, build_c_cast): Update build_reinterpret_cast_1 calls. testsuite: * g++.dg/conversion/dr195.C: New. * g++.old-deja/g++.mike/p10148.C: Remove ill-formed cast. From-SVN: r89334
2004-10-20* call.c, typeck.c: Fix comment typos.Kazu Hirata3-2/+6
From-SVN: r89332
2004-10-20parser.c (cp_token_position): New typedef.Nathan Sidwell2-194/+149
* parser.c (cp_token_position): New typedef. Define VEC thereof. (struct cp_lexer): Allow buffer and buffer_end to be NULL. Make next_token and last_token cp_token_position. Make saved_tokens a VEC(cp_token_position). (eof_token): New static variable. (CP_SAVED_TOKENS_SIZE): Rename to ... (CP_SAVED_TOKEN_STACK): ... here. (cp_lexer_new_main): Adjust main lexer creation and buffer filling. (cp_lexer_new_from_tokens): Do not copy the tokens, merely point to the parent buffer. Do not append eof token. (cp_lexer_destroy): Only free buffer if non-NULL. Free token stack. (cp_lexer_next_token, cp_lexer_prev_token): Remove. (cp_lexer_token_position, cp_lexer_token_at): New. (cp_lexer_saving_tokens): Adjust. Make inline. (cp_lexer_advance_token, cp_lexer_token_difference): Remove. (cp_lexer_peek_token_emit_debug_info): Fold into ... (cp_lexer_peek_token): ... here. (cp_lexer_peek_nth_token): Don't peek past EOF. (cp_lexer_consume_token): Set next_token to eof_token, if reaching EOF. (cp_lexer_purge_token): Adjust eof setting. (cp_lexer_purge_tokens_after): Likewise. (cp_lexer_save_tokens): Push next_token directly. (cp_lexer_commit_tokens): Adjust. (cp_lexer_rollback_tokens): Pop next_token directly. (cp_parser_check_for_invalid_template_id): Adjust token purging. (cp_parser_translation_unit): Do not consume the EOF. (cp_parser_nested_name_specifier_opt): Adjust token purging. (cp_parser_template_id, cp_parser_template_name): Likewise. From-SVN: r89320
2004-10-19call.c (struct conversion): Add base_p.Mark Mitchell5-255/+469
* call.c (struct conversion): Add base_p. (convert_like): Add c_cast_p argument. (convert_like_with_conversion): Likewise. (build_conv): Clear base_p. (standard_conversion): Set it, for derived-to-base conversions. (convert_like_real): Add c_cast_p parameter. Handle pointer conversions directly rather than relying on ocp_convert. (perform_direct_initialization_if_possible): Add c_cast_p parameter. * cp-tree.h (perform_direct_initialization_if_possible): Change prototype. (convert_member_func_to_ptr): New function. * typeck.c (check_for_casting_away_constness): Add diag_fn parameter. (build_static_cast_1): New function, split out from ... (build_static_cast): ... here. Use build_static_cast_1. (build_reinterpret_cast_1): New function, split out from ... (build_reinterpret_cast): ... here. Use build_reinterpret_cast_1. (build_const_cast_1): New function, split out from ... (build_const_cast): ... here. Use build_const_cast_1. (build_c_cast): Rewrite to use build_const_cast_1, build_static_cast_1, and build_reinterpret_cast_1. (convert_member_func_to_ptr): New function. * g++.dg/conversion/reinterpret1.C: Adjust error markers. * g++.dg/conversion/const2.C: New test. * g++.dg/expr/reinterpret2.C: New test. * g++.dg/expr/reinterpret3.C: New test. * g++.dg/expr/cast2.C: New test. * g++.dg/expr/copy1.C: New test. * g++.dg/other/conversion1.C: Change error message. * g++.dg/parse/comma1.C: Use __extension__ to allow casts from function pointers to void *. * g++.old-deja/g++.mike/p10148.C: Likewise. From-SVN: r89300
2004-10-19re PR c++/18047 (Wrong precedence between equality (==, !=) and < operators)Paolo Bonzini2-1/+7
2004-10-19 Paolo Bonzini <bonzini@gnu.org> PR c++/18047 * parser.c (enum cp_parser_prec): Give relational expressions a higher precedence than equality expressions. 2004-10-19 Paolo Bonzini <bonzini@gnu.org> PR c++/18047 * g++.dg/parse/expr3.C: New test. From-SVN: r89272
2004-10-18cp-tree.h (UNIQUELY_DERIVED_FROM_P): Adjust lookup_base call.Nathan Sidwell10-70/+95
cp: * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Adjust lookup_base call. (ACCESSIBLY_UNIQUELY_DERIVED_P): Remove. (PUBLICLY_UNIQUELY_DERIVED_P): Adjust lookup_base call. (enum base_access): Reorganize. (accessible_base_p, accessible_p): Add consider_local_p parameter. * call.c (standard_conversion): Update comment about DERIVED_FROM_P. (enforce_access): Adjust accessible_p call. (build_over_call): Adjust accessible_base_p call. * class.c (convert_to_base): Adjust lookup_base call. (build_vtbl_ref_1): Likewise. (warn_about_ambiguous_bases): Likewise. Add early exit. * cvt.c (convert_to_pointer_force) Adjust lookup_base call. * search.c (accessible_base_p): Add consider_local_p parameter. (lookup_base): Pass consider_local_p to accessible_base_p call. (friend_accessible_p): Check whether scope is a class member. Remove unnecessary class template check. (accessible_p): Add consider_local_p parameter. Use it. (adjust_result_of_qualified_name_lookup): Adjust lookup_base call. * tree.c (maybe_dummy_object): Likewise. * typeck.c (comp_except_type): Use PUBLICLY_UNIQUELY_DERIVED_P. (build_class_member_access_expr): Adjust lookup_base call. * typeck2.c (binfo_or_else): Likewise. * rtti.c (build_dynamic_cast_1): Access can consider friendship and current scope. testsuite: * g++.dg/eh/shadow1.C: New. From-SVN: r89232
2004-10-17re PR c++/17743 (dependent expressions in attributes)Giovanni Bajo2-0/+8
PR c++/17743 * decl2.c (grokfield): Apply attributes also to TYPE_DECLs. PR c++/17743 * g++.dg/ext/attrib17.C: New test. From-SVN: r89164
2004-10-16re PR c++/10479 (alignof and sizeof (and other expressions) in attributes ↵Giovanni Bajo2-0/+10
does not compile inside template classes) PR c++/10479 * parser.c (cp_parser_parenthesized_expression_list): Fold non-dependent expressions in attribute lists. PR c++/10479 * g++.dg/ext/attrib16.C: New test. From-SVN: r89135
2004-10-15re PR c++/17042 (Duplicated symbol in assembly output)Mark Mitchell1-1/+1
PR c++/17042 * decl.c (declare_global_var): Use the return value from pushdecl. PR c++/14667 * parser.c (cp_parser_simple_declaration): Do not diagnose invalid type names if we have already found a valid type. (cp_parser_member_declaration): Likewise. PR c++/17852 * parser.c (cp_parser_member_specification_opt): Handle CPP_PRAGMA. PR c++/17042 * g++.dg/init/dso_handle1.C: New test. PR c++/17852 * g++.dg/parse/pragma1.C: New test. PR c++/14667 * g++.dg/parse/typedef6.C: New test. From-SVN: r89119
2004-10-15re PR c++/17042 (Duplicated symbol in assembly output)Mark Mitchell3-3/+30
PR c++/17042 * decl.c (declare_global_var): Use the return value from pushdecl. PR c++/14667 * parser.c (cp_parser_simple_declaration): Do not diagnose invalid type names if we have already found a valid type. (cp_parser_member_declaration): Likewise. PR c++/17852 * parser.c (cp_parser_member_specification_opt): Handle CPP_PRAGMA. PR c++/17042 * g++.dg/init/dso_handle1.C: New test. PR c++/17852 * g++.dg/parse/pragma1.C: New test. PR c++/14667 * g++.dg/parse/typedef6.C: New test. From-SVN: r89118
2004-10-15* dump.c, g++spec.c, repo.c: Update copyright.Kazu Hirata4-3/+7
From-SVN: r89098
2004-10-15* decl.c: Fix a comment typo.Kazu Hirata2-1/+5
From-SVN: r89095
2004-10-15[multiple changes]Andrew Pinski2-1/+8
2004-10-13 Andrew Pinski <pinskia@physics.uc.edu> PR c++/16301 * name-lookup.c (parse_using_directive): If we have a error_mark_node, do not set the decl namespace associations on it. 2004-10-14 Andrew Pinski <pinskia@physics.uc.edu> PR c++/16301 * g++.dg/lookup/strong-using-4.C: New test. From-SVN: r89093
2004-10-15re PR c++/17976 (Calls the dtor twice)Mark Mitchell2-4/+24
PR c++/17976 * decl.c (cp_finish_decl): Do not call expand_static_init more than once for a single variable. PR c++/17976 * g++.dg/init/dtor3.C: New test. From-SVN: r89081
2004-10-14Speed up walk_tree by introducing a special-purpose hash table.Matt Austern5-10/+23
* pointer-set.c: New file, special-purpose hash table. * pointer-set.h: New file. * tree.h (struct pointer_set_t): Declare as opaque type. (tree_walk): Last argument is pointer_set_t* now. * tree-inline.c (WALK_SUBTREE): Convert from htab to pset. (walk_type_fields): (walk_tree): Convert from htab_t to pointer_set_t for keeping track of which nodes have already been visited. (walk_tree_without_duplicates): Convert from htab_t to pointer_set_t. * cgraphunit.c (cgraph_create_edges): Likewise. (cgraph_characterize_statics_local): Likewise. * tree-dfa.c (collect_dfa_stats): Likewise. * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Last arg is pointer_set_t* now. * langhooks.c (lhd_tree_inlining_walk_subtrees): Likewise. * langhooks.h (struct lang_hooks_for_tree_inlining): Last arg type of walk_subtrees is pointer_set_t* now. * Makefile.in (OBJS-common): add pointer-set.o (tree-inline.o): Depends on pointer-set.h (tree-dfa.o): Likewise (cgraphunit.o): Likewise * cp/Make-lang.in (pt.o): depends on pointer-set.h * cp/cp-tree.h (cp_walk_subtrees): Last argument is pointer_set_t* now. * cp/pt.c (struct pair_fn_data): Use pointer_set_t, not htab_t (for_each_template_parm): Convert from htab_t to pointer_set_t. * cp/tree.c (cp_walk_subtrees): Last argument is pointer_set_t* now. * java/lang.c (java_tree_inlining_walk_subtrees): Last arg is struct pointer_set_t* now. From-SVN: r89062
2004-10-13toplev.c (compile_file): Call mudflap_finish_file from here ...Frank Ch. Eigler1-5/+0
2004-10-13 Frank Ch. Eigler <fche@redhat.com> * toplev.c (compile_file): Call mudflap_finish_file from here ... * c-decl.c (c_write_global_declarations): ... instead of here ... * cp/decl.c (cp_finish_file): ... and here. * tree-mudflap.c (mudflap_enqueue_decl): Reword a warning message. From-SVN: r88995
2004-10-13re PR c++/17661 (ICE in create_tmp_var)Andrew Pinski2-0/+14
2004-10-13 Andrew Pinski <pinskia@physics.uc.edu> PR c++/17661 * testsuite/g++.dg/expr/for2.C: New test. 2004-10-13 Andrew Pinski <pinskia@physics.uc.edu> PR c++/17661 * semantics.c (finish_for_expr): Convert expression to void so that we don't create temporaries for a?b:c. From-SVN: r88992
2004-10-13* search.c: Fix a comment typo.Kazu Hirata2-1/+5
From-SVN: r88981
2004-10-12class.c (dfs_modify_vtables): Simplify condition.Nathan Sidwell3-33/+57
* class.c (dfs_modify_vtables): Simplify condition. Return dfs_skip_bases as appropriate. (modify_all_vtables): Walk in pre-order. * search.c (dfs_walk_all, dfs_walk_once_r, dfs_walk_once_accessible_r): Assert post order function never returns dfs_skip_bases. From-SVN: r88939
2004-10-12search.c (struct lookup_base_data_s): New.Nathan Sidwell2-79/+100
* search.c (struct lookup_base_data_s): New. (lookup_base_r): Replace with ... (dfs_lookup_base): ... this. (lookup_base): Use dfs_walk_all. From-SVN: r88934
2004-10-12* search.c: Fix comment typos.Kazu Hirata2-2/+6
From-SVN: r88927
2004-10-12re PR c++/15786 (Bad error message for frequently occuring error.)Mark Mitchell2-18/+51
PR c++/15786 * parser.c (cp_parser_declarator): Add member_p parameter. (cp_parser_condition): Adjust calls to cp_parser_declarator. (cp_parser_explicit_instantiation): Likewise. (cp_parser_init_declarator): Likewise. (cp_parser_direct_declarator): Add member_p parameter. Do not parse tentatively when parsing the parameters to a member. (cp_parser_type_id): Adjust calls to cp_parser_declarator. (cp_parser_parameter_declaration): Likewise. (cp_parser_member_declaration): Likewise. (cp_parser_exception_declaration): Likewise. PR c++/15876 * g++.dg/parse/error22.C: New test. From-SVN: r88914