OSDN Git Service

* decl2.c (decl_constant_var_p): New fn.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index b72d43d..2646839 100644 (file)
@@ -1,6 +1,326 @@
+2010-11-01  Jason Merrill  <jason@redhat.com>
+
+       * decl2.c (decl_constant_var_p): New fn.
+       (decl_maybe_constant_var_p): New fn.
+       (mark_used): Rework instantiation of things needed for constant
+       expressions.
+       * cp-tree.h: Declare new fns.
+       * pt.c (instantiate_decl): Handle cp_unevaluated_operand.
+       (always_instantiate_p): Use decl_maybe_constant_var_p.
+       (instantiate_decl): Don't defer constexpr functions.
+       * repo.c (repo_emit_p): Use decl_maybe_constant_var_p.
+       * semantics.c (finish_id_expression): Use decl_constant_var_p.
+       Check for valid name in constant expr after mark_used.
+
+2010-10-31  Jason Merrill  <jason@redhat.com>
+
+       * class.c (is_really_empty_class): Work when type is not complete.
+       (synthesized_default_constructor_is_constexpr): New.
+       (add_implicitly_declared_members): Use it.
+       (type_has_constexpr_default_constructor): Likewise.
+       * cp-tree.h: Declare it.
+       * method.c (synthesized_method_walk): Use it.
+
+       * decl.c (pop_switch): Use EXPR_LOC_OR_HERE.
+       * typeck.c (convert_for_assignment): Likewise.
+
+       * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful
+       message about constexpr without -std=c++0x.
+
+       * decl.c (grokdeclarator): Don't ICE on constexpr non-static data
+       member.
+
+2010-10-30  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * class.c (layout_vtable_decl): Call build_array_of_n_type.
+       (build_vtt, build_ctor_vtabl_group): Likewise.
+
+2010-10-30  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       Implemented Objective-C 2.0 @property, @synthesize and @dynamic.
+       * parser.c (cp_parser_objc_at_property_declaration): Removed
+       parsing of RID_COPIES and RID_IVAR.  Updated call to
+       objc_add_property_declaration.
+       * typecheck.c (finish_class_member_access_expr): Call
+       objc_maybe_build_component_ref instead of objc_build_setter_call.
+       (cp_build_modify_expr): Call objc_maybe_build_modify_expr instead
+       of objc_build_getter_call.
+
+2010-10-27  Jason Merrill  <jason@redhat.com>
+
+       * cp-tree.h (cp_trait_kind): Add CPTK_IS_LITERAL_TYPE.
+       * cxx-pretty-print.c (pp_cxx_trait_expression): Handle it.
+       * semantics.c (trait_expr_value, finish_trait_expr): Likewise.
+       * parser.c (cp_parser_primary_expression): Handle RID_IS_LITERAL_TYPE.
+       (cp_parser_trait_expr): Likewise.
+
+2010-10-27  Gabriel Dos Reis  <gdr@cse.tamu.edu>
+           Jason Merrill  <jason@redhat.com>
+
+       * decl.c (finish_case_label): Use decl_constant_value.
+
+       * method.c (synthesized_method_walk): Track constexprness too.
+       (process_subob_fn, walk_field_subobs): Likewise.
+       (implicitly_declare_fn): Set DECL_DECLARED_CONSTEXPR_P.
+       (defaulted_late_check): Handle DECL_DECLARED_CONSTEXPR_P.
+       * class.c (add_implicitly_declared_members): Handle
+       constexpr default ctor.
+
+       * parser.c (cp_parser_ctor_initializer_opt_and_function_body):
+       Make sure a constexpr ctor has an empty body.
+       * class.c (type_has_constexpr_default_constructor): New.
+       * cp-tree.h: Declare it.
+       * init.c (perform_member_init): Complain about uninitialized
+       member in constexpr ctor.
+       (emit_mem_initializers): And uninitialized base.
+       * decl.c (check_tag_decl): Fix typo.
+
+       * semantics.c (valid_type_in_constexpr_fundecl_p): New fn.
+       (is_valid_constexpr_fn): New fn.
+       (validate_constexpr_fundecl): Use it.
+       * decl.c (validate_constexpr_redeclaration): New.
+       (duplicate_decls): Use it.
+       (cp_finish_decl): Call validate_constexpr_fundecl and
+       ensure_literal_type_for_constexpr_object here.
+       (start_decl): Not here.  Don't ICE on constexpr reference.
+       (check_for_uninitialized_const_var): Don't handle constexpr specially.
+       (grokfndecl): Set DECL_DECLARED_CONSTEXPR_P.
+       (check_static_variable_definition): Give friendly message about
+       missing constexpr.
+       (grokdeclarator): Complain about typedef and volatile with constexpr.
+       Reorganize.  Give sorry about non-static data members in C++0x mode.
+       (start_preparsed_function): Check validate_constexpr_fundecl here.
+       (check_function_type): Not here.
+       * decl2.c (finish_static_data_member_decl): Don't complain about
+       in-class init.
+       * parser.c (CP_PARSER_FLAGS_ONLY_TYPE_OR_CONSTEXPR): New.
+       (cp_parser_condition): Pass it to cp_parser_decl_specifier_seq.
+       (cp_parser_decl_specifier_seq): Handle it.
+       (cp_parser_explicit_instantiation): Diagnose inline and constexpr.
+
+       * class.c (check_bases): Propagate non-literality.
+       (check_field_decls): Likewise.
+       (finalize_literal_type_property): New.
+       (check_bases_and_members): Call it.
+       * cp-tree.h (TYPE_HAS_CONSTEXPR_CTOR): New.
+       (lang_type_class): Add has_constexpr_ctor field.
+       (DECL_DECLARED_CONSTEXPR_P): Strip template.
+       * decl.c (grok_special_member_properties): Set
+       TYPE_HAS_CONSTEXPR_CTOR.
+
+2010-10-27  Jason Merrill  <jason@redhat.com>
+
+       * call.c (build_integral_nontype_arg_conv): New.
+       * cp-tree.h: Declare it.
+       * pt.c (convert_nontype_argument): Use it.
+
+       * error.c (dump_simple_decl): Print constexpr.
+
+       * cvt.c (build_up_reference): Use target_type for the temporary var.
+
+       * except.c (build_throw): Set EXPR_LOCATION.
+
+       * tree.c (build_cplus_new): Handle CONSTRUCTOR.
+
+       * semantics.c (finish_compound_stmt): Avoid creating an
+       unnecessary BIND_EXPR.
+
+       * call.c (convert_like_real): Don't check narrowing if the element
+       is also an initializer-list.
+
+2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * parser.c (cp_parser_objc_at_property_declaration): Recognize
+       RID_ASSIGN, RID_COPY, RID_RETAIN, RID_READWRITE and RID_NONATOMIC.
+       Do not use objc_set_property_attr, but use local variables
+       instead.  Detect repeated usage of setter, getter and ivar
+       attributes.  Improved error processing when a setter name does not
+       end in ':'.  Do not check for CPP_CLOSE_PAREN after we determined
+       that the token is a keyword.  Updated call to
+       objc_add_property_declaration.
+
+2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * parser.c (cp_parser_objc_property_decl): Renamed to
+       cp_parser_objc_struct_declaration.  Return the parsed trees
+       instead of calling objc_add_property_variable directly.  Detect
+       missing or invalid declspecs.  Implemented attributes.  Do not eat
+       the ';' at the end.  Exit loop whenever a non-comma is parsed, not
+       just EOF.
+       (cp_parser_objc_at_property): Renamed to
+       cp_parser_objc_at_property_declaration.  Updated calls to
+       objc_add_property_variable, now objc_add_property_declaration, and
+       to cp_parser_objc_property_decl, now
+       cp_parser_objc_struct_declaration.  Rewritten all code to be more
+       robust in dealing with syntax errors, and almost identical to the
+       one in c_parser_objc_at_property_declaration.
+       (cp_parser_objc_property_attrlist): Removed.
+       (cp_parser_objc_method_prototype_list): Updated call to
+       cp_parser_objc_at_property.
+       (cp_parser_objc_method_definition_list): Same change.
+       (cp_parser_objc_class_ivars): Detect a number of invalid
+       declarations of instance variables and produce errors when they
+       are found.
+       
+2010-10-26  Jason Merrill  <jason@redhat.com>
+
+       * tree.c (build_vec_init_expr): Split out from...
+       (build_array_copy): ...here.
+       * init.c (perform_member_init): Use it.
+       * cp-tree.h: Declare it.
+       * cp-gimplify.c (cp_gimplify_init_expr): Don't gimplify the slot for
+       VEC_INIT_EXPR and AGGR_INIT_EXPR here.  Drop pre/post parameters.
+       (cp_gimplify_expr): Handle array default-initialization via
+       VEC_INIT_EXPR.
+
+       * tree.c (stabilize_expr): Handle xvalues properly.
+
+       * call.c (build_over_call): Use argarray[0] for 'this' argument.
+
+       * decl.c (finish_function): Don't look at function_depth.
+
+2010-10-25  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
+
+       Implement opaque-enum-specifiers for C++0x.
+       * cp-tree.h (SET_OPAQUE_ENUM_P): New.
+       (OPAQUE_ENUM_P): New.
+       (ENUM_FIXED_UNDERLYING_TYPE_P): New.
+       (start_enum): Update prototype.
+       (finish_enum_value_list): New prototype.
+       * parser.c (cp_parser_elaborated_type_specifier): Issue a pedwarn if
+       "enum class" is used in an elaborated-type-specifier.
+       (cp_parser_enum_specifier): Rewrite to parse opaque-enum-specifiers.
+       * decl.c (copy_type_enum): New.
+       (finish_enum_value_list): New, with code from finish_enum.
+       (finish_enum): A lot of code removed. Added a gcc_assert.
+       (start_enum): Add parameters enumtype and is_new.
+       Rewrite to work with opaque-enum-specifiers.
+       * pt.c (maybe_process_partial_specialization): Allow for template
+       specialization of enumerations, with a pedwarn.
+       (lookup_template_class): Update call to start_enum. Call to
+       SET_OPAQUE_ENUM_P.
+       (tsubst_enum): Call to begin_scope, finish_scope and
+       finish_enum_value_list.
+
+2010-10-24  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       Removed Objective-C++ specific replacement of cxx_printable_name.
+       * cp-objcp-common.h: Added LANG_HOOKS_DECL_PRINTABLE_NAME, set
+       to cxx_printable_name for both C++ and Objective-C++.
+       * cp-lang.h: Removed LANG_HOOKS_DECL_PRINTABLE_NAME.
+
+       * error.c (dump_decl): For Objective-C++, call
+       objc_maybe_printable_name here ...
+       * tree.c (cxx_printable_name_internal): ... instead of here.
+       
+2010-10-23  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * tree.c (cxx_printable_name_internal): In Objective-C++, call
+       objc_maybe_printable_name.
+
+2010-10-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/46129
+       * pt.c (instantiate_class_template): Don't instantiate default
+       arguments.
+
+       PR c++/46103
+       * init.c (build_vec_init): Handle memberwise move.
+
+2010-10-21  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/46117
+       * call.c (add_function_candidate): Don't use TREE_VALUE on null
+       parmnode.
+
+2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * parser.c (cp_parser_objc_method_type): Mark inline.  Return a
+       bool instead of calling objc_set_method_type.
+       (cp_parser_objc_method_signature): Updated calls to
+       cp_parser_objc_method_type and to objc_build_method_signature.
+       (cp_parser_objc_method_prototype_list): Updated calls to
+       objc_add_method_declaration.  Use token->type to determine if it
+       is a class method or not.
+       (cp_parser_objc_method_definition_list): Same change.
+
+2010-10-20  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
+
+       PR c++/46056
+       * parser.c (cp_convert_range_for): Call cp_finish_decl
+       instead of finish_expr_stmt.
+
+2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * cp-lang.c (finish_file): Removed.
+       * decl2.c (cp_write_global_declarations): Call
+       objc_write_global_declarations when compiling Objective-C++.
+
+2010-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/46046
+       * pt.c (add_to_template_args): Check extra_args for error_mark_node.
+       (coerce_template_parms): Likewise for args.
+
+2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       Implemented parsing @synthesize and @dynamic for Objective-C++.
+       * parser.c (cp_parser_objc_method_definition_list): Recognize
+       RID_AT_SYNTHESIZE and RID_AT_DYNAMIC.
+       (cp_parser_objc_at_dynamic_declaration): New.
+       (cp_parser_objc_at_synthesize_declaration): New.
+
+2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * parser.c (cp_parser_objc_identifier_list): Check the return
+       value of cp_parser_identifier and react if it is error_mark_node.
+
+2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       Merge from apple/trunk branch on FSF servers.
+
+       2005-03-01 Fariborz Jahanian <fjahanian@apple.com>
+
+        Radar 4451818
+       * call.c (standard_conversion, implicit_conversion): Ignore
+       'volatile' attribute of artificially volatized type in objc when
+       evaluating various conversion weights.
+
+       2005-11-08  Fariborz Jahanian <fjahanian@apple.com>
+
+       Radar 4330422
+       * typeck.c (comp_ptr_ttypes_real): Remove the hack. un-volatize the
+       artiificially 'volatized' type before doing pointer comparison.
+
+2010-10-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/46015
+       * semantics.c (finish_goto_stmt): Call mark_rvalue_use on computed
+       goto destination.
+
+2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       Merge from apple/trunk branch on FSF servers.
+
+       2006-04-19 Fariborz Jahanian <fjahanian@apple.com>
+
+        Radar 4516785
+       * parser.c (cp_parser_simple_type_specifier): Don't lookup for
+       objc object types if type is scope qualified.
+
+2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       Merge from apple/trunk branch on FSF servers.
+
+       2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
+
+        Radar 4133425
+       * lex.c (unqualified_name_lookup_error): Issue diagnostic
+       for private 'ivar' access.
+
 2010-10-17  Iain Sandoe  <iains@gcc.gnu.org>
 
-       * parser.c (cp_parser_objc_visibility_spec): Update to use visibility 
+       * parser.c (cp_parser_objc_visibility_spec): Update to use visibility
        enum, and handle @package.
 
 2010-10-15  Jason Merrill  <jason@redhat.com>
 
 2010-10-14  Iain Sandoe  <iains@gcc.gnu.org>
 
-       merge from FSF apple 'trunk' branch. 
+       merge from FSF apple 'trunk' branch.
        2006 Fariborz Jahanian <fjahanian@apple.com>
-       
+
        Radars 4436866, 4505126, 4506903, 4517826
        * typeck.c (finish_class_member_access_expr): Handle CLASS.property
-       syntax. 
+       syntax.
        (cp_build_modify_expr): Likewise.
        * parser.c (cp_parser_objc_method_prototype_list): Handle @property.
        (cp_parser_objc_method_definition_list): Likewise.
        (value_dependent_expression_p): Added case for AT_ENCODE_EXPR.
        (type_dependent_expression_p): Added case for AT_ENCODE_EXPR.
        * parser.c (cp_parser_objc_encode_expression): Updated comment.
-       
+
 2010-10-07  Nicola Pero  <nicola@nicola.brainstorm.co.uk>
 
        Merge from apple/trunk branch on FSF servers.
        Merge from apple/trunk branch on FSF servers.
        * cp-tree.def: Added AT_ENCODE_EXPR here instead of to the no
        longer existing gcc/c-common.def.
-       
+
        2005-12-14  Fariborz Jahanian <fjahanian@apple.com>
 
        Radar 4278774
        * pt.c (tsubst_copy_and_build): Instantiate @endcode(T).
-       * parser.c (cp_parser_objc_encode_expression): Build a templatized 
+       * parser.c (cp_parser_objc_encode_expression): Build a templatized
        parse tree for @encode(T).
 
        2005-12-14  Fariborz Jahanian <fjahanian@apple.com>
 
        Radar 4278774
        * c-common.def: Add new expression code AT_ENCODE_EXPR.
-       
+
 2010-10-06  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR c++/45908
        (cp_parser_objc_method_definition_list): Same change.
 
 2010-10-05  Nicola Pero  <nicola.pero@meta-innovation.com>
-       
+
        Merge from apple/trunk branch on FSF servers:
-       
+
        2005-10-17  Fariborz Jahanian <fjahanian@apple.com>
 
        Radar 4290840
        Radar 4093475
        * parser.c (cp_parser_objc_interstitial_code): Catch stray
        '{' and '}' tokens and issue appropriate errors.
-       
+
        2005-08-02  Ziemowit Laski  <zlaski@apple.com>
 
        Radar 4185810
        (cp_parser_statement_seq_opt): In addition to '}' and
        end-of-file, a statement sequence may also be terminated
        by a stray '@end'.
-       
+
 2010-10-05  Joseph Myers  <joseph@codesourcery.com>
 
        * cp-tree.h (cxx_print_error_function,
        Radar 4386773
        * cp/parser.c (cp_parser_objc_interstitial_code): For
        @optional/@required set the optional/required flag.
-       
+
 2010-09-30  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        * parser.c (cp_lexer_get_preprocessor_token): Tidied up comments
        (cp_build_addr_expr_1): Likewise.
 
 2010-09-28  Iain Sandoe  <iains@gcc.gnu.org>
-       
+
        Partially merged from apple/trunk branch on FSF servers:
        2006-04-26 Fariborz Jahanian <fjahanian@apple.com>
        Radar 3803157 (method attributes)
-       
+
        * parser.c (cp_parser_objc_method_keyword_params): Handle attributes.
        (cp_parser_objc_method_tail_params_opt): Likewise.
        (cp_parser_objc_method_signature): Likewise.
 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        Merge from apple/trunk branch on FSF servers:
-       
+
        2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
 
        Radar 4229905
        Radar 4175534
        * call.c (standard_conversion): Do not issue warnings when
        comparing ObjC pointer types.
-       
+
        2005-06-22  Ziemowit Laski  <zlaski@apple.com>
 
        Radar 4154928
        between any two ObjC pointer types.
        * typeck.c (composite_pointer_type): Determine common type
        for two ObjC pointer types.
-       
+
 2010-09-24  Jan Hubicka  <jh@suse.cz>
 
        * decl.c (finish_function): Use decl_replaceable_p
-       * method.c (make_alias_for_thunk): Update call of cgraph_same_body_alias.
+       * method.c (make_alias_for_thunk): Update call of
+       cgraph_same_body_alias.
 
 2010-09-24  Jason Merrill  <jason@redhat.com>