OSDN Git Service

2006-08-21 Andrew Pinski <pinskia@physics.uc.edu>
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index d1eb30f..f50554c 100644 (file)
@@ -1,3 +1,370 @@
+2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR C++/28450
+       * cp/init.c (build_zero_init): Handle VECTOR_TYPE and
+       COMPLEX_TYPEs.
+
+2006-08-22  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/28420
+       * parser.c (cp_parser_postfix_expression): Make sure that the
+       saved value for parser->type_definition_forbidden_message is
+       restored before returning to avoid an invalid free().
+
+2006-08-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/28659
+       * typeck.c (merge_types): If either of the types have the right 
+       attributes, return that one.
+
+       * tree.c (cp_build_type_attribute_variant): Make sure we aren't
+       doing this to class types.
+       * typeck.c (original_type): Deal with type quals properly.
+
+2006-08-21  Jason Merrill  <jason@redhat.com>
+
+       PR c++/27115
+       * semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
+       just leave the expression as it is.
+       (finish_stmt_expr): If the statement-expression has class type,
+       wrap it in a TARGET_EXPR.
+       * cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
+       CLEANUP_POINT_EXPR.
+       * except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.
+
+2006-08-21  Lee Millward  <lee.millward@codesourcery.com>
+
+       PR c++/26269
+       * decl.c (duplicate_decls): Return early if either
+       newdecl or olddecl is error_mark_node.
+
+        PR c++/28505
+       * decl.c (grokdeclarator): Return early after
+       issuing diagnostic about an incomplete type.
+
+       PR c++/28741
+       * tree.c (decl_anon_ns_mem_p): Robustify.
+       * decl2.c (determine_visibility): Likewise.
+       
+2006-08-20  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/28341
+       * tree.c (cast_valid_in_integral_constant_expression_p): New
+       function.
+       * cp-tree.h (tsubst_copy_and_build): Adjust prototype.
+       * pt.c (tsubst_expr): Add integral_constant_expression_p
+       parameter.
+       (fold_non_dependent_expr): Adjust callers of
+       tsubst_{expr,copy_and_build}.
+       (tsubst_friend_function): Likewise.
+       (tsubst_template_arg): Likewise.
+       (tsubst_default_argument): Likewise.
+       (tsubst_decl): Likewise.
+       (tsubst): Likewise.
+       (tsubst_omp_clasuses): Likewise.
+       (regenerate_decl_fromp_template): Likewise.
+       (instantiate_decl): Likewise.
+       (tsubst_initializer_list): Likewise.
+       (tsubst_enum): Likewise.
+       (tsubst_expr): Use RECUR throughout.
+       (tsubst_copy_and_build): Change definition of RECUR.  Do not allow
+       invalid casts in integral constant expressions.
+       * parser.c (cp_parser_postfix_expression): Use
+       cast_valid_in_integral_constant_expression_p.
+       (cp_parser_cast_expression): Likewise.
+       (cp_parser_functional_cast): Likewise.
+
+       PR c++/28346
+       * pt.c (tsubst_qualified_id): Do not strip references from
+       OFFSET_REFs. 
+
+2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/28606
+       * parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
+       Fix formatting.
+       (cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
+       for valid type-names.
+       (cp_parser_unqualified_id): Fix error handling for destructors.
+
+       PR c++/28710
+       * decl.c (xref_tag): Improve error message.  Return early on error.
+
+       PR c++/28711
+       * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.
+
+2006-08-17  Paolo Bonzini  <bonzini@gnu.org>
+
+       PR c++/28573
+       * semantics.c (finish_offsetof): Add new argument to fold_offsetof.
+
+2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR c++/28302
+       * typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
+       perform_integral_promotions for non integral type.
+
+2006-08-16  Jason Merrill  <jason@redhat.com>
+
+       PR c++/28385
+       * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
+       if arg is a function.
+
+2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/28593
+       * init.c (build_new): Return early on invalid placement.
+
+2006-08-15  Lee Millward  <lee.millward@codesourcery.com>
+
+       PR c++/28594
+       * pt.c (process_template_parm): Robustify.
+       
+2006-08-14  Steve Ellcey  <sje@cup.hp.com>
+
+       PR c++/28288
+       PR c++/14556
+       * operators.def: Remove <?, ?>, <?=, and >?= operators.
+       * parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
+       (cp_parser_warn_min_max): Remove.
+
+2006-08-11  Jason Merrill  <jason@redhat.com>
+
+       PR c++/28559
+       * parser.c (cp_parser_elaborated_type_specifier): Also ignore
+       attributes applied to a TYPENAME_TYPE.
+
+2006-08-09  Lee Millward  <lee.millward@codesourcery.com>
+
+       PR c++/28637
+       * pt.c (coerce_template_parms): Copy across the
+       invalid template arguments to the new template inner arguments.
+       (retrieve_specialization): Robustify.
+
+       PR c++/28638
+       * pt.c (coerce_template_template_parms): Robustify.
+
+       PR c++/28639
+       * error.c (dump_template_parms): Robustify.
+
+       PR c++/28640
+       * pt.c (redeclare_class_template): Robustify.
+
+       PR c++/28641
+       * pt.c (type_unification_real): Robustify.
+       
+2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
+
+       PR c++/28347
+       * decl.c (start_decl): Return error_mark_node if a
+       diagnostic was issed for an invalid typedef initialization.
+       
+2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/27508
+       * parser.c (cp_parser_unqualified_id): Check for invalid scopes
+       when parsing destructor names.
+
+       PR c++/28274
+       * decl.c (duplicate_decls): Call check_default_args here.
+       (start_preparsed_function): Do not call check_default_args.
+       * name-lookup.c (pushdecl_maybe_friend): Only call
+       check_default_args if duplicate_decls got bypassed.
+
+2006-08-02  Richard Guenther  <rguenther@suse.de>
+
+       PR c++/28479
+       Revert
+       2006-07-05  Richard Guenther  <rguenther@suse.de>
+       Andrew Pinski  <pinskia@gcc.gnu.org>
+
+       PR c++/27084
+       * cp-objcp-common.c (cxx_types_compatible_p): Ignore
+       top level qualifiers for pointer type comparisons.
+
+2006-08-02  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/28557
+       * pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.
+
+2006-07-31  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/28523
+       * tree.c (stabilize_expr): Tweak documentation.  Add assertion.
+       (stabilize_call): Tweak documentation.
+       (stabilize_init): Only call stabilize_call for calls.
+
+2006-08-01  Steve Ellcey  <sje@cup.hp.com>
+
+       PR c++/28432
+       * decl2.c (check_classfn): Remove early return.
+       * search.c (lookup_member): Return NULL with bad type.
+
+2006-08-01  Steve Ellcey  <sje@cup.hp.com>
+
+       PR c++/28256
+       * decl.c (check_initializer): Check for 1 initializer on scalar types.
+
+2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       PR debug/23336
+       * pt.c (tsubst_copy_and_build): Mark used enum types.
+       * semantics.c (finish_id_expression): Likewise.
+
+2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/6634
+       * decl.c (grokdeclarator): Check whether "long" or "short" was
+       specified for non-integral types.
+
+2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
+
+2006-07-28  Lee Millward  <lee.millward@codesourcery.com>
+
+       PR c++/27668
+       PR c++/27962
+       * pt.c (process_template_parm) Store invalid template
+       parameters as error_mark_node in the paramater list.
+       (push_inline_template_parms_recursive): Handle invalid
+       template parameters.
+       (comp_template_parms): Likewise.
+       (check_default_tmpl_arg): Likewise.
+       (coerce_template_template_parms): Likewise.
+       (mangle_class_name_for_template): Likewise.
+       (tsubst_template_parms): Likewise.
+       * error.c (dump_template_argument_list): Likewise.
+       
+2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
+
+       * cp-tree.h: Fix a comment typo.
+
+2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/27572
+       * decl.c (grokdeclarator): Return error_mark_node after invalid
+       typedef.
+
+2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       PR c++/28460
+       * decl.c (grokvardecl): Use FROB_CONTEXT.
+       * pt.c (register_specialization): Likewise.
+
+2006-07-23  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/28025
+       * cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
+       * name-lookup.c (unqualified_namespace_lookup): There is no way to
+       have a hidden name in non-namespace scopes.
+       * pt.c (tsubst_friend_class): Look for hidden names.
+       * decl.c (lookup_and_check_tag): Fix typo in comment.
+
+       * semantics.c (finish_compound_literal): Fix typo in comment.
+
+2006-07-21  Jason Merrill  <jason@redhat.com>
+
+       * decl2.c (determine_visibility): Don't propagate visibility from
+       type to decl.
+       (constrain_class_visibility): Don't warn in system headers.
+       Don't warn about pointer fields.
+
+2006-07-20  Mike Stump  <mrs@apple.com>
+
+       * decl2.c (determine_visibility_from_class): Don't use hidden
+       visibility for explicit instantiations.
+
+2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/28250
+       * pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
+       valid decls.  Cleanup.
+
+       PR c++/28363
+       * semantics.c (check_template_template_default_arg): Simplify
+       error handling.
+
+2006-07-20  Jason Merrill  <jason@redhat.com>
+
+       PR c++/28407
+       * decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
+       const variables with implicit internal linkage.
+       * tree.c (decl_linkage): Only return lk_external if it's set.
+
+       PR c++/28409
+       * decl2.c (constrain_visibility): Ignore the anonymous namespace 
+       for extern "C" decls.
+       (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
+
+       * decl2.c (constrain_visibility): Remove specified and reason 
+       parameters.  Don't touch decls that already have explicit visibility.
+       (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from 
+       template.
+       (determine_visibility_from_class): Reverse sense of 
+       DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
+       (constrain_class_visibility): Only complain about member visibility
+       if the member type is another class.  Don't change visibility of the
+       current class.
+
+2006-07-19  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/28338
+       * decl.c (layout_var_decl): Don't call push_local_name here.
+       (initialize_artificial_var): Assert artificiality.
+       (cp_finish_decl): Call push_local_name here.
+
+2006-07-18  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/28337
+       * typeck.c (build_binary_op): Short-circuit pointer arithmetic in
+       templates.
+
+2006-07-18  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/28048
+       * semantics.c (check_accessibility_of_qualified_id): Robustify.
+
+       PR c++/28235
+       * pt.c (tsubst_decl): Handling substitutions into a static data
+       member from within the scope of the tempalte itself.
+
+2006-07-18  Lee Millward  <lee.millward@gmail.com>
+
+       PR c++/28258
+       * method.c (locate_copy): Check for non_reference
+       returning error_mark_node.
+
+        PR c++/28260
+       * decl.c (duplicate_decls): Return error_mark_node
+       on ambiguous declaration.
+       
+2006-07-18  Steve Ellcey  <sje@cup.hp.com>
+
+       PR c++/27495
+       * search.c (adjust_result_of_qualified_name_lookup): Change
+       assert to part of if statement.
+
+2006-07-17  Steve Ellcey  <sje@cup.hp.com>
+
+       PR c++/28291
+       * decl.c (reshape_init_class): Return error_mark_node on error.
+
+2006-07-17  Steve Ellcey  <sje@cup.hp.com>
+
+       PR c++/28304
+       * decl2.c (check_classfn): Return NULL_TREE on error.
+
+2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/28250
+       * name-lookup.c (pushdecl_maybe_friend): Return early on
+       error_mark_node.
+       * except.c (expand_start_catch_block): Use error_mark_node instead
+       of NULL_TREE for invalid decls.
+       * parser.c (cp_parser_exception_declaration): Return error_mark_node
+       on invalid catch parameter. Simplify.
+
 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/28370