+2010-12-09 Nathan Froyd <froydnj@codesourcery.com>
+
+ * typeck.c (cp_build_indirect_ref): Call invalid_indirection_error.
+
+2010-12-09 Nathan Froyd <froydnj@codesourcery.com>
+
+ * typeck.c (composite_pointer_error): New function.
+ (composite_pointer_type_r, composite_pointer_type): Call it.
+
+2010-12-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/46348
+ * semantics.c (cxx_eval_vec_init_1): Handle value-init.
+ (cxx_eval_vec_init): Pass value_init arg.
+
+2010-12-08 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR c++/45329
+ * call.c (struct conversion): Document bad_p field.
+ (enum rejection_reason_code): Define.
+ (struct conversion_info): Define.
+ (struct rejection_reason): Define.
+ (struct z_candidate): Add `reason' field.
+ (add_candidate): Add `reason' parameter. Store it in CAND.
+ (alloc_rejection, arity_rejection, arg_conversion_rejection):
+ New functions.
+ (bad_arg_conversion_rejection): New function.
+ (convert_class_to_reference): Add comment.
+ (remaining_arguments): New function.
+ (add_function_candidate): Record rejection reason and pass it to
+ add_candidate.
+ (add_conv_candidate, build_builtin_candidate): Likewise.
+ (add_template_candidate_real): Likewise.
+ (print_conversion_rejection): New function.
+ (print_z_candidate): Print CAND->REASON if it exists. Adjust
+ diagnostic strings.
+ (print_z_candidates): Add location_t argument. Adjust calling
+ sequence for print_z_candidate. Print header line directly.
+ (build_user_type_conversion_1): Add reason for rejection to
+ CAND. Adjust call to print_z_candidates.
+ (print_error_for_call_failure): New function.
+ (build_new_function_call): Call it. Adjust call to
+ print_z_candidates.
+ (build_operator_new_call): Likewise.
+ (build_op_call): Likewise.
+ (build_conditional_expr): Likewise.
+ (build_new_op): Likewise.
+ (build_new_method_call): Likewise.
+
+2010-12-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/45822
+ * cp-tree.h (LOOKUP_DEFAULTED): New.
+ * call.c (add_function_candidate): Check it.
+ * method.c (synthesized_method_walk): Set it.
+ (do_build_copy_assign): Likewise.
+ * init.c (perform_member_init): Likewise.
+ (emit_mem_initializers): Likewise.
+
+ PR c++/46736
+ * decl.c (cp_finish_decl): Complain about an implicitly deleted
+ method defaulted outside the class.
+ * method.c (maybe_explain_implicit_delete): Don't check DECL_INITIAL.
+
+2010-12-07 Joseph Myers <joseph@codesourcery.com>
+
+ * rtti.c: Don't include assert.h.
+
+2010-12-07 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR c++/45330
+ * cp-tree.h (suggest_alternatives_for, location_of): Declare.
+ * error.c (dump_expr): Handle TYPE_DECL.
+ (location_of): Unstaticize.
+ * name-lookup.c (suggest_alternatives_for): New function.
+ * lex.c (unqualified_name_lookup_error): Call it.
+
+2010-12-06 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * call.c: Include c-family/c-objc.h.
+ * decl.c: Same change.
+ * decl2.c: Same change.
+ * error.c: Same change.
+ * lex.c: Same change.
+ * parser.c: Same change.
+ * pt.c: Same change.
+ * semantics.c: Same change.
+ * typeck.c: Same change.
+ * Make-lang.in (cp/decl.o): Depend on c-family/c-objc.h.
+ (cp/decl2.o): Same change.
+ (cp/call.o): Same change.
+ (cp/error.o): Same change.
+ (cp/lex.o): Same change.
+ (cp/parser.o): Same change.
+ (cp/pt.o): Same change.
+ (cp/semantics.o): Same change.
+ (cp/typeck.o): Same change.
+ * config-lang.in (gtfiles): Added c-family/c-objc.h.
+
+2010-12-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/46645
+ * semantics.c (build_data_member_initialization): Remove assert.
+
+ PR c++/46058
+ * tree.c (lvalue_kind) [SCOPE_REF]: Handle non-dependent case.
+
+2010-12-03 Richard Guenther <rguenther@suse.de>
+
+ PR c/46745
+ * error.c (dump_expr): Handle MEM_REF.
+
+2010-12-03 Laurynas Biveinis <laurynas.biveinis@gmail.com>
+
+ * cp-tree.h (struct aggr_init_expr_arg_iterator_d): Remove GTY
+ tag.
+
+2010-12-02 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * parser.c (cp_parser_objc_throw_statement): Use
+ cp_parser_expression, not cp_parser_assignment_expression, to
+ parse the argument of a @throw.
+
+2010-12-01 Joseph Myers <joseph@codesourcery.com>
+
+ * cp-objcp-common.c, lex.c, typeck.c: Don't include toplev.h.
+ * Make-lang.in (cp/lex.o, cp/cp-objcp-common.o, cp/typeck2.o):
+ Update dependencies.
+
+2010-11-30 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * decl.c (finish_function): Call objc_finish_function when
+ compiling Objective-C++.
+ * call.c (standard_conversion): Do not call
+ objc_non_volatilized_type().
+ (implicit_conversion): Same change.
+ * typeck.c (comp_ptr_ttypes_real): Same change.
+
+2010-11-30 Joseph Myers <joseph@codesourcery.com>
+
+ * cp-gimplify.c, cp-lang.c, cvt.c, cxx-pretty-print.c, error.c,
+ except.c, expr.c, friend.c, init.c, mangle.c, name-lookup.c,
+ optimize.c, parser.c, rtti.c, tree.c, typeck2.c: Don't include
+ toplev.h.
+ * Make-lang.in: Dependencies for above files changed to remove
+ toplev.h.
+
+2010-11-29 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/42260
+ * call.c (add_builtin_candidate): At this point the resulting type
+ of an indirection operator should be complete.
+
+2010-11-29 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/45383
+ Reverted patch for PR c++/42260
+ * cp-tree.h (lookup_conversions): Reverted "Add new bool parameter to
+ declarationE."
+ * search.c (lookup_conversion): Reverted "Use new bool parameter in
+ definition".
+ * call.c (add_builtin_candidates): Reverted "Don't lookup template
+ conversion"
+ (convert_class_to_reference, build_user_type_conversion_1,
+ build_op_call): Reverted "Adjust".
+ * cvt.c (build_expr_type_conversion): Reverted "Likewise".
+
+2010-11-29 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * parser.c (cp_parser_objc_try_catch_finally_statement): Parse
+ @catch(...) and pass NULL_TREE to objc_begin_catch_clause() in
+ that case. Improved error recovery. Reorganized code to be
+ almost identical to c_parser_objc_try_catch_finally_statement.
+
+2010-11-27 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR objc++/46222
+ * decl.c (grokdeclarator): Replaced an assert (for a case that can
+ never happen in C++, but could happen in ObjC++ for invalid code)
+ with a check that prints an error message and returns
+ error_mark_node.
+
+2010-11-23 Jeffrey Yasskin <jyasskin@google.com>
+
+ PR c++/46527
+ * pt.c (instantiate_decl): Propagate the template's location to
+ its instance.
+
+2010-11-20 Joseph Myers <joseph@codesourcery.com>
+
+ * name-lookup.c (handle_namespace_attrs): Don't check
+ HANDLE_PRAGMA_VISIBILITY.
+ * parser.c (cp_parser_namespace_definition): Don't check
+ HANDLE_PRAGMA_VISIBILITY.
+
+2010-11-20 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR c++/16189
+ PR c++/36888
+ PR c++/45331
+ * parser.c (cp_lexer_set_token_position): New function.
+ (cp_lexer_previous_token_position): New function.
+ (cp_lexer_previous_token): Call it.
+ (cp_parser_class_specifier): Try to gracefully handle a missing
+ semicolon.
+
+2010-11-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/46538
+ * decl.c (cp_make_fname_decl): Return error_mark_node if
+ current_binding_level has already sk_function_parms kind.
+
+ PR c++/46526
+ * semantics.c (cxx_eval_call_expression): Unshare the result.
+
+2010-11-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * parser.c (cp_parser_objc_protocol_declaration): Pass attributes
+ to objc_declare_protocols.
+
+2010-11-18 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR c/33193
+ * typeck.c (cp_build_unary_op): Call build_real_imag_expr for
+ REALPART_EXPR and IMAGPART_EXPR.
+
+2010-11-16 Jason Merrill <jason@redhat.com>
+
+ * call.c (convert_like_real): Don't make a temp for copy-list-init.
+ (build_over_call): Don't handle that here.
+ (build_new_method_call): Use COMPLETE_OR_OPEN_TYPE_P for error.
+
+ PR c++/46497
+ * call.c (build_over_call): Check for =delete even when trivial.
+
+ DR 1004
+ * decl.c (make_unbound_class_template): Handle using
+ injected-type-name as template.
+
+2010-11-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * typeck.c (cp_build_unary_op): Use
+ objc_build_incr_expr_for_property_ref to build the pre/post
+ increment/decrement of an Objective-C property ref.
+
+2010-11-13 Jason Merrill <jason@redhat.com>
+
+ * decl.c (cp_finish_decl): Use resolve_nondeduced_context for auto.
+ * init.c (build_new): Likewise.
+ * pt.c (tsubst_decl): Likewise.
+ (do_auto_deduction): Likewise.
+ (resolve_nondeduced_context): Use build_offset_ref and
+ cp_build_addr_expr.
+
+2010-11-12 Joseph Myers <joseph@codesourcery.com>
+
+ * Make-lang.in (g++spec.o): Use $(OPTS_H).
+
+2010-11-13 Ville Voutilainen <ville.voutilainen@gmail.com> <ville.voutilainen@symbio.com>
+
+ Core 1135, 1136, 1145, 1149
+ * method.c (defaultable_fn_check): Do not disallow defaulting a
+ non-public or explicit special member function on its first
+ declaration.
+
+2010-11-12 James Dennett <jdennett@google.com>
+
+ PR/39415
+ * typeck.c (build_static_cast_1): Convert to the target type
+ when doing static_cast<cv Derived*>(Base*).
+
+2010-11-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/46420
+ * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: New case.
+ [CONSTRUCTOR]: Use the tsubsted type.
+
+ PR c++/46369
+ * semantics.c (cxx_eval_bit_field_ref): New.
+ (cxx_eval_constant_expression): Call it.
+
+2010-11-10 Joseph Myers <joseph@codesourcery.com>
+
+ * cvt.c (cp_convert_to_pointer): Use %' in diagnostic.
+ * decl.c (layout_var_decl, maybe_commonize_var, grokdeclarator):
+ Use %' in diagnostics.
+ * decl2.c (check_classfn): Use %' in diagnostic.
+ * init.c (build_java_class_ref): Use %' in diagnostic.
+ (build_delete): Remove trailing '.' from diagnostic.
+ * method.c (do_build_copy_assign, walk_field_subobs): Use %' in
+ diagnostics.
+ * name-lookup.c (pushdecl_maybe_friend): Use %' in diagnostic.
+ * parser.c (cp_parser_exception_specification_opt): Remove
+ trailing '.' from diagnostic.
+ (cp_parser_objc_interstitial_code): Use %qs for quoting in
+ diagnostic.
+ * pt.c (check_valid_ptrmem_cst_expr): Use %< and %> for quoting in
+ diagnostic.
+ * repo.c (reopen_repo_file_for_write): Use %' in diagnostic.
+
+2010-11-10 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR c++/46065
+ * decl.c (poplevel_named_label_1): Use TREE_CHAIN if necessary.
+
+2010-11-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/45894
+ * tree.c (lvalue_kind): Don't crash if ref has NULL type.
+
+2010-11-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/46382
+ * semantics.c (check_constexpr_ctor_body): New fn.
+ * parser.c (cp_parser_ctor_initializer_opt_and_function_body): Call it.
+ * cp-tree.h: Declare it.
+
+ PR c++/46335
+ * tree.c (bot_manip): Check TREE_SIDE_EFFECTS as well.
+
+ Correct conversion/overflow behavior.
+ * cvt.c (ignore_overflows): Move here from typeck.c.
+ (ocp_convert): Use it.
+ (cp_fold_convert): Use it. Don't call rvalue.
+ * typeck.c (build_static_cast_1): Don't use it. Do call rvalue.
+ * error.c (location_of): Handle expressions, too.
+ * class.c (check_bitfield_decl): Set input_location around call to
+ cxx_constant_value.
+ * semantics.c (cxx_eval_outermost_constant_expr): Don't
+ print the expression if it already had TREE_OVERFLOW set.
+ (reduced_constant_expression_p): Check TREE_OVERFLOW_P for C++98, too.
+ (verify_constant): Allow overflow with a permerror if we're
+ enforcing.
+ (cxx_eval_outermost_constant_expr): Use verify_constant.
+ (adjust_temp_type): Use cp_fold_convert.
+ * decl.c (build_enumerator): Don't call constant_expression_warning.
+ * decl2.c (grokbitfield): Likewise.
+
+2010-11-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/46348
+ * init.c (perform_member_init): Use build_vec_init_expr for
+ value-init of arrays, too.
+ * cp-gimplify.c (cp_gimplify_expr): Use VEC_INIT_EXPR_VALUE_INIT.
+ * cp-tree.h (VEC_INIT_EXPR_IS_CONSTEXPR): New macro.
+ (VEC_INIT_EXPR_VALUE_INIT): New macro.
+ * semantics.c (potential_constant_expression): No longer static.
+ Check VEC_INIT_EXPR_IS_CONSTEXPR.
+ * tree.c (build_vec_init_expr): Handle value-init. Set
+ VEC_INIT_EXPR_IS_CONSTEXPR and VEC_INIT_EXPR_VALUE_INIT.
+
+2010-11-06 Nathan Froyd <froydnj@codesourcery.com>
+
+ PR c++/45332
+ * parser.c (cp_lexer_previous_token): New function.
+ (cp_parser_member_declaration): Use previous token for error
+ messages. Assume semicolon presence rather than grovelling for
+ the next one.
+
+2010-11-06 Joern Rennecke <amylaar@spamcop.net>
+
+ PR middle-end/46314
+ * method.c (make_alias_for_thunk):
+ Use targetm.asm_out.generate_internal_label.
+
+2010-11-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/45473
+ * search.c (look_for_overrides): A constructor is never virtual.
+
+2010-11-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/46160
+ * cp-gimplify.c (cp_gimplify_expr): Drop volatile MEM_REFs
+ on the RHS to avoid infinite recursion with gimplify_expr.
+
+2010-11-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/46304
+ * pt.c (tsubst_copy): Handle COMPLEX_CST.
+
+2010-11-04 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Fixed using the Objective-C 2.0 dot-syntax with class names.
+ * parser.c (cp_parser_primary_expression): Recognize Objective-C
+ 2.0 dot-syntax with class names and process it.
+ (cp_parser_nonclass_name): Recognize Objective-C 2.0 dot-syntax
+ with class names.
+ (cp_parser_class_name): Same change.
+ (cp_parser_simple_type_specifier): Tidied comments.
+
+2010-11-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/46298
+ * semantics.c (build_constexpr_constructor_member_initializers):
+ Handle an enclosing STATEMENT_LIST.
+
+ * semantics.c (speculative_access_check): New.
+ * cp-tree.h: Declare it.
+ * call.c (build_over_call): Use it.
+ * class.c (type_has_constexpr_default_constructor): Use locate_ctor.
+ * method.c (locate_ctor): Use push/pop_deferring_access_checks.
+
+2010-11-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/46293
+ * semantics.c (build_data_member_initialization): Handle
+ value-init of aggregate empty base.
+
+ PR c++/46289
+ * call.c (can_convert_array): New fn.
+ (build_aggr_conv): Use it.
+
+ PR c++/46289
+ * semantics.c (build_constexpr_constructor_member_initializers):
+ Avoid ICE on error.
+
+2010-11-02 Dodji Seketeli <dodji@redhat.com>
+
+ * cp-tree.h (enum tsubst_flags)<tf_no_class_instantiations>:
+ Remove.
+ * pt.c (tsubst): Remove the use of tf_no_class_instantiations.
+
+2010-11-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/46277
+ * init.c (expand_default_init): Avoid ICE if we can't figure out
+ which function is being called.
+
+2010-11-02 Nathan Froyd <froydnj@codesourcery.com>
+
+ * class.c (build_base_path, add_vcall_offset): Use build_zero_cst
+ instead of fold_convert.
+ * init.c (build_zero_init): Likewise.
+ * typeck.c (cp_build_binary_op): Likewise.
+
+2010-11-02 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/46170
+ PR c++/46162
+ * pt.c (check_valid_ptrmem_cst_expr): Add a complain parameter to
+ control diagnostic.
+ (convert_nontype_argument, convert_nontype_argument): Pass the
+ complain parameter down to check_valid_ptrmem_cst_expr.
+
+2010-11-02 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/45606
+ * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): Remove.
+ (struct template_parm_index_s)<num_siblings>: New field.
+ (TEMPLATE_PARM_NUM_SIBLINGS): New accessor.
+ (process_template_parm): Extend the API to accept the number of
+ template parms in argument.
+ (cp_set_underlying_type): Remove this.
+ * class.c (build_self_reference): Require canonical type equality
+ back on the self reference of class.
+ * decl2.c (grokfield): Require canonical type equality back on
+ typedef class fields.
+ * name-lookup.c (pushdecl_maybe_friend): Require canonical type
+ equality back on typedefs.
+ * parser.c (cp_parser_template_parameter_list): Do not require
+ canonical type equality on dependent types created during template
+ parameters parsing.
+ * pt.c (fixup_template_type_parm_type, fixup_template_parm_index)
+ (fixup_template_parm, fixup_template_parms): New private
+ functions.
+ (current_template_args): Declare this.
+ (process_template_parm): Pass the total number of template parms
+ to canonical_type_parameter.
+ (build_template_parm_index): Add a new argument to carry the total
+ number of template parms.
+ (reduce_template_parm_level, process_template_parm, make_auto):
+ Adjust.
+ (current_template_args): Fix this for template template
+ parameters.
+ (tsubst_template_parm): Split out of ...
+ (tsubst_template_parms): ... this.
+ (reduce_template_parm_level): Don't loose
+ TEMPLATE_PARM_NUM_SIBLINGS when cloning a TEMPLATE_PARM_INDEX.
+ (template_parm_to_arg): Extracted this function from
+ current_template_args. Make it represent invalid template parms
+ with an error_mark_node instead of a LIST_TREE containing an
+ error_mark_node.
+ (current_template_args): Use template_parm_to_arg.
+ (dependent_template_arg_p): Consider an invalid template argument
+ as dependent.
+ (end_template_parm_list): Do not update template sibling parms
+ here anymore. Use fixup_template_parms instead.
+ (process_template_parm): Pass the number of template parms to
+ canonical_type_parameter.
+ (make_auto): Require structural equality on auto
+ TEMPLATE_TYPE_PARM for now.
+ (unify)<BOUND_TEMPLATE_TEMPLATE_PARM>: Coerce template parameters
+ using all the arguments deduced so far.
+ (tsubst)<TEMPLATE_TYPE_PARM>: Pass the number of sibling parms to
+ canonical_type_parameter.
+ * tree.c (cp_set_underlying_type): Remove.
+ * typeck.c (get_template_parms_of_dependent_type)
+ (incompatible_dependent_types_p): Remove.
+ (structural_comptypes): Do not call incompatible_dependent_types_p
+ anymore.
+ (comp_template_parms_position): Re-organized. Take the length of
+ template parms list in account.
+
+2010-11-01 Jason Merrill <jason@redhat.com>
+
+ * semantics.c (call_stack, call_stack_tick, cx_error_context): New.
+ (last_cx_error_tick, push_cx_call_context, pop_cx_call_context): New.
+ (cxx_eval_call_expression): Call push/pop_cx_call_context instead
+ of giving follow-on errors.
+ * error.c (maybe_print_constexpr_context): New.
+ (cp_diagnostic_starter): Call it.
+ * cp-tree.h: Declare cx_error_context.
+
+ * semantics.c (cxx_eval_constant_expression): Explain
+ unacceptable use of variable better.
+
+2010-11-01 Gabriel Dos Reis <gdr@cse.tamu.edu>
+ Jason Merrill <jason@redhat.com>
+
+ * call.c (null_ptr_cst_p): Use maybe_constant_value.
+ (set_up_extended_ref_temp): Support constant initialization.
+ (initialize_reference): Adjust.
+ * class.c (check_bitfield_decl): Use cxx_constant_value.
+ * cvt.c (ocp_convert): Don't use integral_constant_value when
+ converting to class type.
+ * decl.c (finish_case_label): Use maybe_constant_value.
+ (build_init_list_var_init): Support constant initialization.
+ (check_initializer): Likewise. Reorganize.
+ (cp_finish_decl): Likewise.
+ (expand_static_init): Likewise.
+ (compute_array_index_type): Use maybe_constant_value.
+ Add complain parm.
+ (create_array_type_for_decl, grokdeclarator): Pass it.
+ (build_enumerator): Use cxx_constant_value.
+ * decl2.c (grokfield): Use maybe_constant_init.
+ * except.c (check_noexcept_r): Handle constexpr.
+ (build_noexcept_spec): Use maybe_constant_value.
+ * init.c (expand_default_init): Support constant initialization.
+ (build_vec_init): Likewise.
+ (constant_value_1): Adjust.
+ (build_new_1): Adjust.
+ * parser.c (cp_parser_constant_expression): Allow non-integral
+ in C++0x mode.
+ (cp_parser_direct_declarator): Don't fold yet in C++0x mode.
+ (cp_parser_initializer_clause): Toss folded result if non-constant.
+ * pt.c (fold_decl_constant_value): Remove.
+ (convert_nontype_argument): Use maybe_constant_value. Give clearer
+ error about overflow.
+ (tsubst): Move array bounds handling into compute_array_index_type.
+ (value_dependent_expression_p): Handle constant CALL_EXPR.
+ (tsubst_decl): Don't set
+ DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P yet.
+ (tsubst_expr) [DECL_EXPR]: Pass it into cp_finish_decl.
+ (instantiate_decl): Here too.
+ * semantics.c (finish_static_assert): Use maybe_constant_value.
+ (ensure_literal_type_for_constexpr_object): Make sure type is complete.
+ (potential_constant_expression): Use maybe_constant_value.
+ * tree.c (cast_valid_in_integral_constant_expression_p): Any cast
+ is potentially valid in C++0x.
+ * typeck2.c (store_init_value): Handle constant init.
+ (check_narrowing): Use maybe_constant_value.
+ (build_functional_cast): Set TREE_CONSTANT on literal T().
+ * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): Remove.
+ (LOOKUP_ALREADY_DIGESTED): New.
+ (compute_array_index_type): Adjust prototype.
+
+ * semantics.c (constexpr_call): New datatype.
+ (constexpr_call_table): New global table.
+ (constexpr_call_hash): New.
+ (constexpr_call_equal): Likewise.
+ (maybe_initialize_constexpr_call_table): Likewise.
+ (lookup_parameter_binding): Likewise.
+ (cxx_eval_builtin_function_call): Likewise.
+ (cxx_bind_parameters_in_call): Likewise.
+ (cxx_eval_call_expression): Likewise.
+ (cxx_eval_unary_expression): Likewise.
+ (cxx_eval_binary_expression): Likewise.
+ (cxx_eval_conditional_expression): Likewise.
+ (cxx_eval_array_reference): Likewise.
+ (cxx_eval_component_reference): Likewise.
+ (cxx_eval_logical_expression): Likewise.
+ (cxx_eval_object_construction): Likewise.
+ (cxx_eval_constant_expression): Likewise.
+ (cxx_eval_indirect_ref): Likewise.
+ (cxx_constant_value): Likewise.
+ (cxx_eval_bare_aggregate): Likewise.
+ (adjust_temp_type): New.
+ (reduced_constant_expression_p): New.
+ (verify_constant): New.
+ (cxx_eval_vec_init, cxx_eval_vec_init_1): New.
+ (cxx_eval_outermost_constant_expr): New.
+ (maybe_constant_value, maybe_constant_init): New.
+ (cxx_eval_constant_expression): Use them.
+ * pt.c (iterative_hash_template_arg): No longer static.
+ * cp-tree.h: Declare fns.
+
+ * cp-tree.h (register_constexpr_fundef): Declare.
+ * decl.c (maybe_save_function_definition): New.
+ (finish_function): Use it.
+ * semantics.c (constexpr_fundef): New datatype.
+ (constexpr_fundef_table): New global table.
+ (constexpr_fundef_equal): New.
+ (constexpr_fundef_hash): Likewise.
+ (retrieve_constexpr_fundef): Likewise.
+ (validate_constexpr_fundecl): Store in the table.
+ (build_data_member_initialization): New fn.
+ (build_constexpr_constructor_member_initializers): New.
+ (register_constexpr_fundef): Define.
+ (is_this_parameter): New.
+ (get_function_named_in_call): Likewise.
+ (get_nth_callarg): Likewise.
+ (check_automatic_or_tls): New.
+ (morally_constexpr_builtin_function_p): New.
+ (potential_constant_expression): New.
+
+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.
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.
(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>
+2010-10-07 Nicola Pero <nicola.pero@meta-innovation.com>
Merge from apple/trunk branch on FSF servers.