X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fcp%2FChangeLog;h=388b2c002e7ae8ef6b1986485d935e55a01a5cf9;hb=d62c98bc55463ba9acec8610e168a298002d8536;hp=cc99369d18610f98c973a68fce04cf39087fd05f;hpb=799bdf64de6dce47a56ba4144484a1b670bfb0dc;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index cc99369d186..388b2c002e7 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,605 @@ +2008-02-25 Paolo Carlini + + PR c++/35333 + * error.c (dump_expr): Handle CONJ_EXPR. + +2008-02-25 Paolo Carlini + + PR c++/35338 + * error.c (dump_type): Handle FIXED_POINT_TYPE. + (dump_expr): Handle FIXED_CST. + +2008-02-24 Jason Merrill + + * parser.c (cp_parser_declaration): Handle "inline namespace". + (cp_parser_namespace_definition): Likewise. + + PR c++/33486 + * name-lookup.c (arg_assoc_namespace): Look down into inline + namespaces, too. + +2008-02-23 Manuel Lopez-Ibanez + + * typeck.c (check_for_casting_away_constness): Use 1 single + argument, the type of cast, to decide what diagnostics generate. + (build_static_cast_1): Remove unused code. Update call to + check_for_casting_away_constness. + (build_reinterpret_cast_1): Update call to + check_for_casting_away_constness. + (build_const_cast_1): Likewise. + +2008-02-24 Paolo Carlini + + * error.c (dump_expr): Don't deal directly with NEW_EXPR (and + VEC_NEW_EXPR), forward to pp_expression. + * cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME. + +2008-02-24 Danny Smith + + PR c++/34749 + * friend.c (do_friend): Call cplus_decl_attributes earlier. + +2008-02-22 Andrew Pinski + + PR C++/34715 + * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for + template decls' function decl. + +2008-02-22 Paolo Carlini + + PR c++/35282 + Revert: + 2008-02-14 Paolo Carlini + + PR c++/28743 + * pt.c (determine_specialization): In case of function templates, + when the type of DECL does not match FN there is no match. + +2008-02-22 Ralf Wildenhues + + PR c/19999 + * typeck.c (build_binary_op): Warn about floating point + comparisons if FLOAT_TYPE_P, not only for REAL_TYPE. + +2008-02-19 Jason Merrill + + PR c++/34950 + * pt.c (resolve_overloaded_unification): Set processing_template_decl + while we look for possible bindings. + +2008-02-19 Jakub Jelinek + + PR c++/35028 + * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors. + + PR c++/34964 + PR c++/35244 + * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p + vars. Afterwards ensure v is VAR_DECL. + + PR c++/35078 + * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't + call cp_finish_decl. + * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type + early. + +2008-02-15 Douglas Gregor + + PR c++/35023 + PR c++/35024 + PR c++/35026 + * pt.c (finish_member_template_decl): If the type in a TYPE_DECL + is error_mark_node, return an error early. + (find_parameter_packs_r): Pass the pointer set along to recursive + calls of cp_walk_subtrees; don't try to manage the pointer set + ourselves. + (uses_parameter_packs): Pass the pointer set to cp_walk_tree. + (make_pack_expansion): Ditto. + (check_for_bare_parameter_packs): Ditto. Also, don't bother taking + a second pass through the tree with find_parameter_packs_r; that + second pass no longer does anything. + (push_template_decl_real): If we have an erroneous declaration, + set its type to error_mark_node before returning an error. + +2008-02-14 Douglas Gregor + + PR c++/34050 + * pt.c (tsubst_initializer_list): Deal with the use of + VOID_TYPE_NODE to indicate value-initialization of the bases. + +2008-02-14 Manuel Lopez-Ibanez + Jason Merrill + + PR c++/5645 + PR c++/11159 + * class.c (type_has_user_nondefault_constructor): New fn. + * cp-tree.h: Declare it. + * init.c (emit_mem_initializers): Use it for -W warning about + missing base initializer. + +2008-02-14 Paolo Carlini + + PR c++/28743 + * pt.c (determine_specialization): In case of function templates, + when the type of DECL does not match FN there is no match. + +2008-02-13 Jakub Jelinek + Manuel Lopez-Ibanez + + PR c++/35138 + * parser.c (cp_parser_pseudo_destructor_name): If next tokens + are not identifier :: ~, return before calling cp_parser_type_name. + +2008-02-13 Jason Merrill + + PR c++/34962, c++/34937, c++/34939 + * decl2.c (is_late_template_attribute): Always defer attributes + vector_size and weak. + + PR c++/34774 + * pt.c (value_dependent_expression_p): Look into DECL_INITIAL + of enumerators, too. + +2008-02-12 Jason Merrill + + PR c++/34824 + * call.c (convert_like_real): Pass LOOKUP_ONLYCONVERTING to build_temp + if we're doing conversions to call a user-defined conversion function. + +2008-02-12 Steven Bosscher + + PR c++/29048 + * semantics.c (finish_qualified_id_expr): Avoid duplicate access + check here, too. + +2008-02-12 Jakub Jelinek + + PR c++/34862 + * init.c (build_new_1): Don't create placement_expr before + constructing alloc_call. Verify that the pointer is passed by + value to operator new. + +2008-02-11 Jason Merrill + + PR c++/35097 + * pt.c (tsubst): Don't look up a template typedef in an explicit + specialization. + +2008-02-11 Douglas Gregor + + PR c++/35113 + * tree.c (cp_build_qualified_type_real): When building a + cv-qualified array type, build it as a unique type with + build_cplus_array_type_1 and then adopt the unqualified type's + main variant. + +2008-02-11 Paolo Carlini + + PR c++/35077 + * decl.c (groktypename): Check grokdeclarator return. + +2008-02-10 Jason Merrill + + PR c++/34094 + * decl2.c (cp_write_global_declarations): Don't write out static + data members with DECL_IN_AGGR_P set. + +2008-02-08 Jason Merrill + + PR c++/35116 + * tree.c (build_target_expr_with_type): Handle void initializer. + (bot_manip): Remap slot before recursing. + +2008-02-06 Kaveh R. Ghazi + + PR other/35107 + * Make-lang.in (cc1plus-dummy, cc1plus): Add $(GMPLIBS). + +2008-02-06 Alexandre Oliva + + PR c++/35056 + * tree.c: Include tree-flow.h. + (build_target_expr): Check type compatibility. + * Make-lang.in (cp/tree.o): Depend on $(TREE_FLOW_H). + * call.c (convert_like_real): Convert bitfield to expected type. + +2008-02-06 Douglas Gregor + + PR c++/35049 + PR c++/35096 + * typeck.c (structural_comptypes): Call cp_comptypes. + (comptypes): New; called from the C/C++ common bits to perform + strict checks. + (cp_comptypes): Renamed from comptypes, which is already used, + with a different signature, by the C++ front end. + (build_reinterpret_cast_1): Call cp_comptypes. + (ptr_reasonably_similar): Ditto. + * decl.c (decls_match): Ditto. + * cvt.c (convert_to_reference): Ditto. + * cp-tree.h (same_type_p): Ditto. + (same_or_base_type_p): Ditto. + (comptypes): Rename to cp_comptypes. + * pt.c (canonical_type_parameter): Call cp_comptypes. + +2008-02-05 Jakub Jelinek + + PR c++/33553 + * pt.c (tsubst) : Don't issue error if max is + value dependent expression. + +2008-02-05 Douglas Gregor + + PR c++/35074 + * decl2.c (save_template_attributes): When we're modifying the + TYPE_MAIN_VARIANT to add new attributes, be sure to also modify + all of the other variants to add those same attributes. Otherwise, + the main variant will be inconsistent with those other variants. + +2008-02-04 Richard Guenther + + PR java/35035 + * decl.c (record_builtin_java_type): Make jboolean a + integer type again where its mode doesn't match that of bool. + +2008-02-02 Jason Merrill + Mark Mitchell + + PR c++/33916 + * init.c (build_value_init_1): New function. + (build_value_init): New function. + * typeck2.c (build_functional_cast): Call it. + * cp-gimplify.c (cp_gimplify_init_expr): Handle its output. + + * cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from + TYPE_HAS_CONSTRUCTOR. + * class.c (finish_struct_bits, maybe_warn_about_overly_private_class, + add_implicitly_declared_members): Adjust. + (check_field_decls): Adjust. Remove warnings about reference/const + in class without constructor. + (check_bases_and_members): Adjust. Give those warnings here instead. + * decl.c (fixup_anonymous_aggr): Adjust. + (check_initializer): Adjust, clarify logic slightly. + (grok_special_member_properties): Adjust, only set if user-provided. + * rtti.c (create_tinfo_types): Don't set. + * cvt.c (ocp_convert): Remove exception for vtable_entry_type et al. + Use same_type_ignoring_top_level_qualifiers_p. + * pt.c (check_explicit_specialization): Adjust. + (instantiate_class_template): Adjust. + +2008-01-31 Douglas Gregor + Jakub Jelinek + + PR c++/34935 + PR c++/34936 + * typeck.c (structural_comptypes): Handle comparisons of + VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, FIXED_POINT_TYPE, and + REAL_TYPE nodes. + * mangle.c (write_builtin_type): Map down to the canonical type, + which will be one of the predefined type nodes. + +2008-01-29 Michael Meissner + + PR 35004 + * cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16 + bits to allow for expansion of the number of middle end tree + codes. + +2008-01-29 Douglas Gregor + + PR c++/34055 + PR c++/34103 + PR c++/34219 + PR c++/34606 + PR c++/34753 + PR c++/34754 + PR c++/34755 + PR c++/34919 + PR c++/34961 + * typeck.c (check_return_expr): Tweak call to + check_for_bare_parameter_packs. + * class.c (add_method): Be careful with error_mark_nodes. + * cp-tree.h (check_for_bare_parameter_packs): Remove "*" from + signature. + * pt.c (struct find_parameter_pack_data): Remove + SET_PACKS_TO_ERROR. + (find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR. + (uses_parameter_packs): Don't set SET_PACKS_TO_ERROR. + (make_pack_expansion): Ditto. + (check_for_bare_parameter_packs): Parameter is now a tree, not a + tree*. + (process_template_parm): Tweak call to + check_for_bare_parameter_packs. + (push_template_decl_real): Tweak calls to + check_for_bare_parameter_packs. If bare parameter packs are found + in the list of exceptions, clear out that list after giving an + error. + * semantics.c (finish_cond): Tweak call to + check_for_bare_parameter_packs. + (finish_expr_stmt): Ditto. + (finish_for_expr): Ditto. + (finish_switch_cond): Ditto. + (finish_mem_initializers): Ditto. + (finish_member_declaration): Ditto. + (finish_static_assert): Check for bare parameter packs in the + condition. + * decl2.c (cplus_decl_attributes): Check for bare parameter packs in the + attributes of a declaration. + * parser.c (cp_parser_using_declaration): Tweak call to + check_for_bare_parameter_packs. + (cp_parser_base_clause): Ditto. + +2008-01-28 Jason Merrill + + PR c++/35007 + * class.c (build_base_path): Fix !want_pointer case. + +2008-01-27 Jason Merrill + + PR c++/27177 + * class.c (build_base_path): Fix previous change. + +2008-01-26 Jakub Jelinek + + PR c++/34965 + * error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR + and TRUTH_XOR_EXPR. + +2008-01-26 Richard Guenther + + PR c++/34235 + * typeck.c (build_binary_op): Remove code to shorten compares. + +2008-01-25 Richard Guenther + + PR c++/33887 + * decl.c (record_builtin_java_type): Make __java_boolean + a variant of bool. + * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check + after TYPE_MAIN_VARIANT check. + +2008-01-25 Jason Merrill + + PR c++/27177 + * class.c (build_base_path): Don't mess with virtual access if + skip_evaluation. + * call.c (standard_conversion): Don't check whether source type + is complete. + + * decl2.c (is_late_template_attribute): Don't defer attribute + visibility just because the type is dependent. + +2008-01-25 Jason Merrill + Mark Mitchell + + PR c++/31780 + * call.c (standard_conversion): Allow conversion from integer/real + to complex. + (compare_ics): Such a conversion is worse than a normal arithmetic + conversion. + +2008-01-25 Richard Guenther + + PR c++/33887 + * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define + to true. + +2008-01-24 Paolo Carlini + + PR c++/34603 + * pt.c (push_template_decl_real): Return error_mark_node in case + of template definition of non-template. + +2008-01-24 Jason Merrill + + PR c++/34913 + * decl2.c (is_late_template_attribute): Defer any attribute with + dependent args. Also defer type attributes if the type is dependent. + +2008-01-22 Jakub Jelinek + Alexandre Oliva + + PR c++/33984 + * call.c (reference_binding): For bitfields use the declared bitfield + type. + (add_builtin_candidates): Likewise. + * class.c (layout_class_type): For bitfields copy over the + original type quals. + +2008-01-22 Jason Merrill + + PR c++/28560 + * decl.c (groktypename): Also ignore attributes on dependent + possibly-class types. + + PR c++/34912 + * friend.c (do_friend): Check for prior declaration of a friend + function of a local class. + * name-lookup.c (lookup_name_innermost_nonclass_level): + No longer static. + * name-lookup.h: Declare it. + +2008-01-22 Tom Tromey + + PR c++/34829: + * init.c (build_new_1): Only disallow Java aggregates. + +2008-01-22 Jakub Jelinek + + PR c++/34607 + * semantics.c (finish_omp_for): Don't call c_finish_omp_for + if decl or init is error_mark_node. + + PR c++/34918 + * error.c (dump_expr): Handle VECTOR_CST. + +2008-01-21 Jason Merrill + + PR c++/33959 + * pt.c (tsubst_aggr_type): Make sure our context is complete. + + PR c++/34573 + * pt.c (retrieve_local_specialization): Robustify. + (tsubst_pack_expansion, tsubst_decl): Remove redundant checks. + + PR c++/34846 + * pt.c (tsubst): Only call retrieve_local_specialization if the + original typedef was in a function template. + + PR c++/34196 + * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP. + +2008-01-21 Richard Guenther + + PR c++/34850 + * error.c (cp_print_error_function): Deal with recursive + BLOCK trees. + +2008-01-20 Paolo Carlini + + PR c++/34891 + * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR. + +2008-01-20 Paolo Carlini + + PR c++/34776 + PR c++/34486 + * name-lookup.c (do_class_using_decl): Do not call constructor_name_p + on non-IS_AGGR_TYPE scope. + (constructor_name_p): Assert IS_AGGR_TYPE. + +2008-01-18 Ian Lance Taylor + + PR c++/33407 + * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag. + (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set + DECL_IS_OPERATOR_NEW flag. + +2008-01-16 Richard Guenther + + PR c++/33819 + * typeck.c (is_bitfield_expr_with_lowered_type): Recurse + for conversions to type variants. + +2008-01-15 Andreas Tobler + + * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing + declaration and code. Update copyright year. + +2008-01-15 Douglas Gregor + + PR c++/34399 + * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we + know we have a class type. + +2008-01-15 Douglas Gregor + + PR c++/34751 + * pt.c (coerce_template_parameter_pack): When substituting into + the type of a non-type template parameter pack. use the + deduced/substituted arguments. + * parser.c (declarator_can_be_parameter_pack): A pointer-to-member + can be a parameter pack with the ellipsis following it. When we + have an erroneous declaration, allow it to be a parameter pack. + (cp_parser_template_parameter): Complain about default + arguments on non-type template parameter packs, and parse them + using the new cp_parser_default_argument. + (cp_parser_parameter_declaration): Complain about parameter packs + with default arguments. Move parsing of default arguments into a + new function, cp_parser_default_argument. + (cp_parser_default_argument): New; extracted from + cp_parser_parameter_declaration. + +2008-01-15 Douglas Gregor + + PR c++/34051 + PR c++/34055 + PR c++/34102 + PR c++/34103 + * typeck.c (check_return_expr): If there are bare parameter packs + in the return value, set it to error_mark_node. + * tree.c (cp_walk_subtrees): Walk USING_DECL nodes. + * pt.c (find_parameter_packs_r): Look at the type of + IDENTIFIER_NODEs (e.g., for user-defined conversions). + (check_for_bare_parameter_packs): Flip the result: now returns + TRUE when there were bare parameter packs, FALSE otherwise. + (push_template_decl_real): Deal with flipped result of + check_for_bare_parameter_packs. + * semantics.c (finish_cond): If there are bare parameter packs in + the conditional, set it to error_mark_node. + (finish_expr_stmt): If there are bare parameter packs in the + expression, set it to error_mark_node. + (finish_for_expr): Ditto. + (finish_switch_cond): If there are bare parameter packs in + the conditional, set it to error_mark_node. + (finish_mem_initializers): If there are bare parameter packs in + the member initializer, set it to error_mark_node. + (finish_member_declaration): Check the attributes of the + declaration for bare parameter packs, and remove the attributes if + any have bare parameter packs. + * parser.c (cp_parser_using_declaration): Check the using + declaration for bare parameter packs. + (cp_parser_base_clause): If there are bare parameter packs in a + base specifier, don't add it to the chain. + +2008-01-15 Douglas Gregor + + PR c++/34314 + * error.c (dump_simple_decl): Display ellipsis for template + non-type parameter packs. + (dump_decl): Display ellipsis for template type parameter packs. + (dump_template_decl): Display ellipsis for template template + parameter packs. + * pt.c (redeclare_class_template): When redeclaring a class + template, check for collisions between template parameters and + template parameter packs. + +2008-01-15 Douglas Gregor + + PR c++/33964 + * pt.c (process_partial_specialization): Don't mark template + parameters that occur in non-deduced contexts. + (struct pair_fn_data): Add include_nondeduced_p. + (for_each_template_parm_r): Only visit non-deduced contexts if + include_nondeduced_p is set. + (for_each_template_parm): Added parameter include_nondeduced_p, + which states whether template parameters found in non-deduced + contexts should be visited. + (uses_template_parms): Visit all template parameters, even those + in non-deduced contexts. + +2008-01-15 Douglas Gregor + + PR c++/34052 + * pt.c (check_default_tmpl_args): Check for parameter packs that + aren't at the end of a primary template. + (push_template_decl_real): Remove check for parameter packs that + aren't at the end of a primary template; that now happens in + check_default_tmpl_args. + * semantics.c (finish_template_template_parm): Use + check_default_tmpl_args to check for errors in the template + parameter list. + +2008-01-12 Doug Kwan + + * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers + instead of OPT_Wreturn_type in warning due to ignored return type + qualifiers. + * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers + instead of OPT_Wreturn_type in warning due to ignored return type + qualifiers. + +2008-01-08 Jakub Jelinek + + PR c++/33890 + * semantics.c (finish_omp_for): Don't call + fold_build_cleanup_point_expr if processing_template_decl. + +2008-01-04 Paolo Carlini + Jakub Jelinek + + PR c++/34611 + * error.c (dump_template_argument): Deal with TREE_LIST. + 2008-01-01 Douglas Gregor * parser.c (cp_parser_check_decl_spec): Don't warn about "long