-2013-04-11 Release Manager
+2013-05-31 Release Manager
- * GCC 4.7.3 released.
+ * GCC 4.8.1 released.
-2013-04-03 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/56819
- * tree.c (strip_typedefs): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT
- from args to new_args.
- (strip_typedefs_expr): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT from t to
- r instead of doing {S,G}ET_NON_DEFAULT_TEMPLATE_ARGS_COUNT.
-
-2013-04-01 Jason Merrill <jason@redhat.com>
-
- PR c++/56794
- * parser.c (cp_parser_range_for): Don't try to do auto deduction
- in a template if the type of the range is incomplete.
-
-2013-03-29 Jason Merrill <jason@redhat.com>
-
- PR c++/56774
- PR c++/35722
- * pt.c (unify_pack_expansion): Fix indexing.
-
-2013-03-23 Jason Merrill <jason@redhat.com>
-
- PR c++/54277
- * semantics.c (lambda_capture_field_type): Don't build a
- magic decltype for pointer types.
- (lambda_proxy_type): Likewise.
- (finish_non_static_data_member): Get the quals from
- the object.
-
-2013-03-20 Jason Merrill <jason@redhat.com>
-
- PR c++/56646
- * parser.c (cp_parser_late_return_type_opt): Save and restore
- current_class_ptr/ref.
-
-2013-03-14 Jason Merrill <jason@redhat.com>
-
- PR c++/56614
- * decl.c (local_variable_p_walkfn): Check DECL_ARTIFICIAL again.
-
-2013-03-14 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/56403
- * init.c (build_zero_init_1): Use RECORD_OR_UNION_CODE_P instead
- of CLASS_TYPE_P.
-
-2013-03-09 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/56534
- * parser.c (cp_parser_elaborated_type_specifier): Don't call
- check_elaborated_type_specifier when TREE_CODE (decl) != TYPE_DECL.
- * decl.c (check_elaborated_type_specifier): Tidy.
-
-2013-03-06 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/56543
- * tree.c (strip_typedefs): Don't copy args if they are NULL.
-
-2013-02-22 Jason Merrill <jason@redhat.com>
-
- PR c++/40405
- * pt.c (push_template_decl_real): Set DECL_INTERFACE_KNOWN
- if we got the wrong number of template parms.
-
- PR c++/56395
- * tree.c (strip_typedefs): Strip typedefs from TYPENAME_TYPE template
- args.
-
-2013-02-19 Jakub Jelinek <jakub@redhat.com>
-
- Backported from mainline
- 2013-02-07 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/56241
- * init.c (build_vec_init): Don't append NULL values into new_vec.
- (build_zero_init_1): Don't push anything into v if recursive call
- returned NULL_TREE.
- (build_value_init_noctor): Don't push anything into v if
- build_value_init call returned NULL_TREE.
-
- PR c++/56239
- * parser.c (cp_parser_token_starts_cast_expression): Renamed to...
- (cp_parser_tokens_start_cast_expression): ... this. Change parameter
- to cp_parser *, call cp_lexer_peek_token first. For CPP_OPEN_PAREN,
- return true only if 2nd token isn't CPP_CLOSE_PAREN.
- (cp_parser_cast_expression): Adjust caller.
-
- PR c++/56237
- * decl.c (push_local_name): Look at DECL_DISCRIMINATOR (t)
- only if DECL_DISCRIMINATOR_SET_P (t) rather than just
- DECL_LANG_SPECIFIC (t).
-
-2013-02-15 Jason Merrill <jason@redhat.com>
-
- PR c++/54276
- * semantics.c (finish_id_expression): Also return the identifier
- for an outer local static.
-
- PR c++/52026
- * semantics.c (finish_id_expression): In a template, return
- the identifier for a constant variable.
+2013-05-24 Jason Merrill <jason@redhat.com>
- PR c++/55710
- * semantics.c (maybe_add_lambda_conv_op): Mark static thunk
- TREE_USED.
+ PR c++/57388
+ * tree.c (build_ref_qualified_type): Clear
+ FUNCTION_RVALUE_QUALIFIED for lvalue ref-qualifier.
- PR c++/56135
- * pt.c (tsubst_copy_and_build): Don't forget any new
- captures that arose from use of dependent names.
+ PR c++/57016
+ * pt.c (instantiation_dependent_r) [TRAIT_EXPR]: Only check type2
+ if there is one.
-2013-02-12 Jason Merrill <jason@redhat.com>
+2013-05-20 Jason Merrill <jason@redhat.com>
- PR c++/56291
- * semantics.c (sort_constexpr_mem_initializers): Handle
- vptr out of order.
+ PR c++/57325
+ * tree.c (build_cplus_array_type): Copy layout info if element
+ type is complete.
-2013-02-11 Jason Merrill <jason@redhat.com>
+ PR c++/57317
+ * decl2.c (determine_visibility): Use PRIMARY_TEMPLATE_P to decide
+ whether a template has its own args.
- PR c++/56268
- * semantics.c (classtype_has_nothrow_assign_or_copy_p): Call
- maybe_instantiate_noexcept.
+2013-05-16 Jason Merrill <jason@redhat.com>
-2013-02-09 Jason Merrill <jason@redhat.com>
+ PR c++/57279
+ * decl.c (grokdeclarator): Allow member function qualifiers in
+ TYPENAME context in C++11 mode.
- PR c++/56247
- * pt.c (eq_specializations): Set comparing_specializations.
- * tree.c (cp_tree_equal): Check it.
- * cp-tree.h: Declare it.
+2013-05-16 Dodji Seketeli <dodji@redhat.com>
-2013-02-05 Jason Merrill <jason@redhat.com>
+ PR c++/56782 - Regression with empty pack expansions
+ * pt.c (use_pack_expansion_extra_args_p): When at least a
+ parameter pack has an empty argument pack, and another parameter
+ pack has no argument pack at all, use the PACK_EXPANSION_EXTRA
+ mechanism.
- PR c++/54122
- * tree.c (lvalue_kind) [INDIRECT_REF]: Don't check for
- METHOD_TYPE.
+2013-05-14 Jason Merrill <jason@redhat.com>
-2013-02-01 Jakub Jelinek <jakub@redhat.com>
+ PR c++/57243
+ * parser.c (cp_parser_range_for): Call complete_type.
- Backported from mainline
- 2012-12-13 Jakub Jelinek <jakub@redhat.com>
+ PR c++/57041
+ * pt.c (tsubst_copy_and_build): Don't recur into a designator.
- PR c++/55652
- * typeck2.c (merge_exception_specifiers): Don't call operand_equal_p
- if noex is NULL.
+2013-05-13 Jason Merrill <jason@redhat.com>
- 2012-12-06 Jakub Jelinek <jakub@redhat.com>
+ PR c++/56998
+ * semantics.c (potential_constant_expression_1): Make sure the
+ called function is potentially constant.
- PR c++/54207
- * except.c (build_noexcept_spec): Avoid direct comparison
- with boolean_true_node or boolean_false_node, instead use
- operand_equal_p and/or INTEGER_CST check.
- * pt.c (tsubst_exception_specification): Likewise.
- * typeck2.c (merge_exception_specifiers): Likewise.
+ PR c++/57041
+ * decl.c (reshape_init_class): Handle error_mark_node.
- 2012-12-01 Jakub Jelinek <jakub@redhat.com>
+ PR c++/57254
+ * typeck.c (merge_types): Propagate ref-qualifier
+ in METHOD_TYPE case.
- PR c++/55542
- * pt.c (make_ith_pack_parameter_name): Return NULL if
- name is NULL.
- (tsubst_decl): Call make_ith_pack_parameter_name even if
- DECL_NAME is NULL.
+ PR c++/57253
+ * decl.c (grokdeclarator): Apply ref-qualifier
+ in the TYPENAME case.
- 2012-11-23 Jakub Jelinek <jakub@redhat.com>
+ PR c++/57252
+ * decl.c (decls_match): Compare ref-qualifiers.
- PR c++/54046
- * cp-objcp-common.h (LANG_HOOKS_BLOCK_MAY_FALLTHRU): Redefine.
- * cp-objcp-common.c (cxx_block_may_fallthru): New function.
- * cp-tree.h (cxx_block_may_fallthru): New prototype.
+ PR c++/57196
+ * pt.c (convert_template_argument): Use dependent_template_arg_p,
+ not uses_template_parms.
-2013-01-25 Jason Merrill <jason@redhat.com>
+2013-05-10 Jason Merrill <jason@redhat.com>
- PR c++/56104
- * typeck.c (get_member_function_from_ptrfunc): Don't fold
- POINTER_PLUS_EXPR.
+ PR c++/57047
+ * semantics.c (cxx_fold_indirect_ref): Fix thinko.
-2013-01-22 Jason Merrill <jason@redhat.com>
+2013-05-09 Jason Merrill <jason@redhat.com>
- * call.c (type_has_extended_temps): Fix C++ism.
+ PR c++/57222
+ * pt.c (lookup_template_class_1): Handle getting a template
+ template parameter as D1.
- PR c++/53650
- * call.c (type_has_extended_temps): New.
- * cp-tree.h: Declare it.
- * decl.c (check_initializer): Use build_aggr_init for arrays
- if it is false.
- * init.c (build_vec_init): Avoid mixed signed/unsigned arithmetic.
+2013-05-08 Jason Merrill <jason@redhat.com>
- PR c++/56071
- * pt.c (maybe_instantiate_noexcept): Don't defer access checks.
+ PR c++/57068
+ * decl.c (grokdeclarator): Warn about ref-qualifiers here.
+ * parser.c (cp_parser_ref_qualifier_seq_opt): Not here.
+ * error.c (maybe_warn_cpp0x): s/0x/11/.
-2013-01-21 Jason Merrill <jason@redhat.com>
+2013-05-08 Marc Glisse <marc.glisse@inria.fr>
- PR c++/56059
- * tree.c (strip_typedefs_expr) [TREE_VEC]: Preserve non-default
- template args count.
+ * typeck.c (cp_build_binary_op): Call save_expr before
+ build_vector_from_val.
-2013-01-09 Jason Merrill <jason@redhat.com>
+2013-05-06 Paolo Carlini <paolo.carlini@oracle.com>
- PR c++/55893
- * decl.c (cp_finish_decl): Clear TREE_READONLY if the variable
- needs destruction.
+ PR c++/57183
+ * decl.c (cp_finish_decl): After do_auto_deduction copy the
+ qualifers with cp_apply_type_quals_to_decl.
-2013-01-08 Joel Brobecker <brobecker@adacore.com>
+2013-05-01 Paolo Carlini <paolo.carlini@oracle.com>
- * parser.c (cp_parser_initializer_list): Move declaration
- of variable non_const to start of lexical block.
+ PR c++/57092
+ * semantics.c (finish_decltype_type): Handle instantiated template
+ non-type arguments.
-2013-01-04 Jason Merrill <jason@redhat.com>
+2013-04-29 Paolo Carlini <paolo.carlini@oracle.com>
- PR c++/55877
- * decl.c (reset_type_linkage, bt_reset_linkage): New.
- (grokdeclarator): Use reset_type_linkage.
- * name-lookup.c (binding_table_foreach): Handle null table.
- * tree.c (decl_anon_ns_mem_p): Check TYPE_MAIN_DECL, not TYPE_NAME.
+ PR c++/56450
+ * semantics.c (finish_decltype_type): Handle COMPOUND_EXPR.
-2013-01-03 Jason Merrill <jason@redhat.com>
+2013-04-25 Jason Merrill <jason@redhat.com>
- PR c++/55419
- PR c++/55753
- * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Don't touch
- TREE_CONSTANT.
+ PR c++/57064
+ * call.c (add_function_candidate): Strip ref-to-ptr conversion.
- PR c++/55842
- * semantics.c (trait_expr_value): Call maybe_instantiate_noexcept.
+ PR c++/56859
+ * typeck.c (cxx_alignas_expr): Handle value-dependence properly.
- PR c++/55856
- * semantics.c (build_data_member_initialization): Handle DECL_EXPR.
+ PR c++/50261
+ * init.c (perform_member_init): Call reshape_init.
-2013-01-02 Jason Merrill <jason@redhat.com>
+2013-04-24 Paolo Carlini <paolo.carlini@oracle.com>
- PR c++/54325
- * call.c (build_new_method_call_1): Don't use build_value_init for
- user-provided default constructors.
+ PR c++/56970
+ * init.c (build_offset_ref): Add tsubst_flags_t parameter.
+ * semantics.c (finish_qualified_id_expr): Likewise.
+ (finish_id_expression): Update.
+ * typeck.c (cp_build_addr_expr_1): Likewise.
+ * pt.c (tsubst_qualified_id, resolve_nondeduced_context): Likewise.
+ * cp-tree.h: Update declarations.
- PR c++/55032
- PR c++/55245
- * tree.c (build_cplus_array_type): Copy layout information
- to main variant if necessary.
+2013-04-17 Jason Merrill <jason@redhat.com>
-2012-12-19 Jason Merrill <jason@redhat.com>
+ DR 941
+ * decl.c (duplicate_decls): Don't propagate DECL_DELETED_FN to
+ template specializations.
- PR c++/55724
- * pt.c (type_unification_real): Re-combine post-deduction loops.
+2013-04-15 Jason Merrill <jason@redhat.com>
-2012-12-11 Jason Merrill <jason@redhat.com>
+ PR c++/52748
+ * pt.c (tsubst) [DECLTYPE_TYPE]: If ~id is an expression
+ rather than a destructor name, it isn't an unqualified-name.
+ (tsubst_copy_and_build): Pass down decltype_flag to operator
+ handling code, too.
- PR c++/54883
- * decl2.c (min_vis_r): Handle anon visibility for enums.
+ PR c++/56388
+ * semantics.c (insert_capture_proxy): Just use index 1 in the
+ stmt_list_stack.
-2012-12-11 Jakub Jelinek <jakub@redhat.com>
+2013-04-11 Jason Merrill <jason@redhat.com>
- PR c++/55643
- * expr.c (mark_exp_read): Handle FLOAT_EXPR similarly to NOP_EXPR.
+ PR c++/52748
+ * parser.c (complain_flags): New.
+ (cp_parser_postfix_expression): Use it.
+ (cp_parser_unary_expression): Likewise.
+ (cp_parser_binary_expression): Likewise.
+ (cp_parser_assignment_expression): Likewise.
+ (cp_parser_expression): Likewise.
+ (cp_parser_postfix_open_square_expression): Take decltype_p.
+ (cp_parser_builtin_offsetof): Adjust.
+ (cp_convert_range_for): Pass complain to finish_unary_op_expr.
+ * decl2.c (grok_array_decl): Add decltype_p parm.
+ * cp-tree.h: Adjust prototype.
+ * semantics.c (finish_unary_op_expr): Add complain parm.
-2012-12-07 Jason Merrill <jason@redhat.com>
+2013-04-11 Jakub Jelinek <jakub@redhat.com>
- PR c++/55419
- * tree.c (build_target_expr): Don't set TREE_CONSTANT.
+ PR c++/56895
+ * call.c (null_ptr_cst_p): Call fold_non_dependent_expr_sfinae before
+ calling maybe_constant_value for C++98.
-2012-12-07 Matthias Klose <doko@ubuntu.com>
+2013-04-11 Paolo Carlini <paolo.carlini@oracle.com>
- * tree.c (build_aggr_init_expr): Add parameter name, mark as unused.
+ PR c++/56913
+ * typeck2.c (build_m_component_ref): Protect error calls with
+ (complain & tf_error).
-2012-12-06 Jason Merrill <jason@redhat.com>
+2013-04-10 Jakub Jelinek <jakub@redhat.com>
- PR c++/54325
- * tree.c (build_aggr_init_expr): Don't check for abstract class.
- (build_cplus_new): Check here instead.
-
- PR c++/55058
- * pt.c (tsubst): Keep the quals when looking through a typedef.
-
- PR c++/55249
- * tree.c (build_vec_init_elt): Use the type of the initializer.
-
- PR c++/54744
- * pt.c (resolve_typename_type): Check TYPENAME_IS_RESOLVING_P on scope.
-
- PR c++/54947
- * parser.c (cp_parser_initializer_list): Don't require an
- expression in [] to be constant until we know it's a C99
- designator.
-
- PR c++/55015
- PR c++/53821
- * semantics.c (maybe_add_lambda_conv_op): Revert earlier change.
- * decl.c (start_preparsed_function): Make local class methods comdat
- in templates, too.
-
-2012-11-29 Jason Merrill <jason@redhat.com>
-
- PR c++/53137
- * pt.c (tsubst_expr) [DECL_EXPR]: Set LAMBDA_EXPR_THIS_CAPTURE here.
- (tsubst_copy_and_build) [LAMBDA_EXPR]: And clear it here.
- (instantiate_class_template_1): Not here.
-
- PR c++/53862
- * pt.c (tsubst_arg_types): Add "end" parameter.
- (check_undeduced_parms): Use it.
-
- PR c++/53039
- * pt.c (arg_from_parm_pack_p): Go back to using same_type_p or
- cp_tree_equal.
-
- * cp-tree.h (TEMPLATE_PARM_NUM_SIBLINGS): Remove.
- (struct template_parm_index_s): Remove num_siblings.
- * pt.c (fixup_template_parms, fixup_template_parm_index): Remove.
- (fixup_template_type_parm_type): Remove.
- (build_template_parm_index): Remove num_siblings parm.
- (process_template_parm): Likewise.
- * parser.c (cp_parser_template_parameter_list): Adjust.
- * tree.c (cp_tree_equal): Don't compare num_siblings.
- * typeck.c (comp_template_parms_position): Likewise.
-
- PR c++/50852
- PR c++/53039
- * tree.c (strip_typedefs_expr): New.
- * cp-tree.h: Declare it.
- * pt.c (convert_template_argument, unify): Use it.
- * parser.c (cp_parser_template_declaration_after_export): Don't call
- fixup_template_parms.
+ PR c++/56895
+ * typeck.c (cp_build_binary_op): Call fold_non_dependent_expr_sfinae
+ first before calling maybe_constant_value for warn_for_div_by_zero
+ or invalid shift count warning purposes.
-2012-11-29 Kai Tietz <ktietz@redhat.com>
+2013-04-06 Jason Merrill <jason@redhat.com>
- PR target/53912
- * class.c (dump_class_hierarchy_r): Cast from pointer via uintptr_t.
- (dump_vtable): Likewise.
+ * parser.c (cp_parser_std_attribute): Treat [[noreturn]] like GNU
+ noreturn attribute.
-2012-11-24 Paolo Carlini <paolo.carlini@oracle.com>
+2013-04-03 Jason Merrill <jason@redhat.com>
- PR c++/55446
- * init.c (build_vec_init): Do not early return error_mark_mode
- when integer_all_onesp (maxindex).
-
-2012-11-05 Jakub Jelinek <jakub@redhat.com>
-
- Backported from mainline
- 2012-10-23 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/54988
- * decl2.c (cplus_decl_attributes): Don't return early
- if attributes is NULL.
-
-2012-10-26 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/54984
- * init.c (build_new): Don't turn a null *init into a pointer to
- empty vector orig_init.
-
-2012-10-08 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/54858
- * tree.c (cp_tree_equal): Handle FIELD_DECL.
-
-2012-10-03 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/54777
- * semantics.c (cxx_eval_constant_expression) <case COMPOUND_EXPR>: If
- not ignoring the second operand, pass the original second operand
- and not one with stripped nops to cxx_eval_constant_expression.
-
-2012-09-20 Release Manager
-
- * GCC 4.7.2 released.
-
-2012-09-14 Jason Merrill <jason@redhat.com>
-
- PR c++/53661
- * typeck2.c (check_narrowing): Avoid false positives on conversion
- from enumeral type.
-
-2012-09-13 Jason Merrill <jason@redhat.com>
-
- PR c++/53839
- * semantics.c (cxx_eval_indirect_ref): If we aren't looking for an
- address, make sure the value is constant.
-
-2012-09-13 Jason Merrill <jason@redhat.com>
-
- PR c++/54511
- * pt.c (tsubst_decl) [VAR_DECL]: Handle DECL_ANON_UNION_VAR_P.
-
-2012-09-13 Jason Merrill <jason@redhat.com>
-
- PR c++/53836
- * pt.c (value_dependent_expression_p): A TREE_LIST initializer must
- be dependent.
-
-2012-09-10 Jason Merrill <jason@redhat.com>
-
- PR c++/54506
- * decl.c (move_signature_fn_p): Split out from move_fn_p.
- * method.c (process_subob_fn): Use it.
- * cp-tree.h: Declare it.
+ * cp-tree.h (FUNCTION_OR_METHOD_TYPE_CHECK): Remove.
+ (FUNCTION_REF_QUALIFIED): Use FUNC_OR_METHOD_CHECK instead.
+ (FUNCTION_RVALUE_QUALIFIED): Likewise.
- PR c++/54341
- PR c++/54253
- * semantics.c (sort_constexpr_mem_initializers): New.
- (build_constexpr_constructor_member_initializers): Use it.
- (cx_check_missing_mem_inits): Skip artificial fields.
- * init.c (expand_aggr_init_1): Don't zero out a class
- with no data.
-
- PR c++/54086
- * decl.c (grokdeclarator): Allow const and constexpr together.
-
-2012-08-31 Ollie Wild <aaw@google.com>
-
- PR c++/54197
- * call.c (extend_ref_init_temps_1): Handle COMPOUND_EXPR trees.
-
-2012-07-20 Jason Merrill <jason@redhat.com>
-
- PR c++/54038
- * tree.c (build_cplus_array_type): Use build_cplus_array_type to build
- canonical array type rather than mess with its TYPE_*_VARIANT.
-
-2012-07-19 Jason Merrill <jason@redhat.com>
-
- PR c++/54026
- * typeck.c (cp_apply_type_quals_to_decl): Check COMPLETE_TYPE_P.
-
-2012-07-18 Jason Merrill <jason@redhat.com>
-
- * method.c (process_subob_fn): Make sure no_implicit_p is non-null
- before trying to store through it.
-
-2012-07-17 Jason Merrill <jason@redhat.com>
-
- PR c++/53995
- * decl.c (finish_enum_value_list): Only call
- insert_late_enum_def_into_classtype_sorted_fields in class scope.
-
-2012-07-17 Jason Merrill <jason@redhat.com>
-
- PR c++/53989
- * tree.c (build_cplus_array_type): Also add TYPE_CANONICAL
- to the list of variants.
-
-2012-07-17 Jason Merrill <jason@redhat.com>
-
- PR c++/53549
- * parser.c (cp_parser_class_head): Call xref_basetypes here.
- (cp_parser_class_specifier_1): Not here.
- * pt.c (tsubst_decl) [USING_DECL]: Check uses_template_parms
- as well as DECL_DEPENDENT_P.
-
-2012-07-13 Jason Merrill <jason@redhat.com>
-
- PR c++/53953
- * method.c (synthesized_method_walk): Initialize no_implicit_p sooner.
-
-2012-07-10 Jason Merrill <jason@redhat.com>
-
- DR 1402
- PR c++/53733
- * cp-tree.h (FNDECL_SUPPRESS_IMPLICIT_DECL): New.
- (struct lang_decl_fn): Add suppress_implicit_decl field.
- * method.c (implicitly_declare_fn): Check it.
- (process_subob_fn): Add no_implicit_p parm.
- (walk_field_subobs, synthesized_method_walk): Likewise.
- (maybe_explain_implicit_delete): Adjust.
- (explain_implicit_non_constexpr): Adjust.
-
- * method.c (synthesized_method_walk): Cleanups don't affect the EH
- spec either.
-
-2012-07-02 Jason Merrill <jason@redhat.com>
-
- PR c++/53816
- * class.c (resolves_to_fixed_type_p): Check uses_template_parms
- (current_function_decl) instead of processing_template_decl.
-
- PR c++/53821
- * semantics.c (maybe_add_lambda_conv_op): Don't set
- DECL_INTERFACE_KNOWN.
-
-2012-06-27 Fabien ChĂȘne <fabien@gcc.gnu.org>
-
- PR c++/51214
- * cp-tree.h (insert_late_enum_def_into_classtype_sorted_fields):
- Declare.
- * class.c (insert_into_classtype_sorted_fields): New.
- (add_enum_fields_to_record_type): New.
- (count_fields): Adjust the comment.
- (add_fields_to_record_type): Likewise.
- (finish_struct_1): Move the code that inserts the fields for the
- sorted case, into insert_into_classtype_sorted_fields, and call
- it.
- (insert_late_enum_def_into_classtype_sorted_fields): Define.
- * decl.c (finish_enum_value_list): Call
- insert_late_enum_def_into_classtype_sorted_fields if a late enum
- definition is encountered.
-
-2012-06-25 Jason Merrill <jason@redhat.com>
-
- PR c++/53498
- PR c++/53305
- * pt.c (tsubst_pack_expansion): Copy before dummy tsubst.
-
- PR c++/52988
- * typeck.c (decay_conversion): Don't discard side-effects from
- expressions of nullptr_t.
-
- PR c++/53202
- * semantics.c (build_data_member_initialization): Always keep
- initializer for empty base.
- (cxx_eval_bare_aggregate): Discard it here.
-
-2012-06-25 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/53594
- * class.c (check_bases_and_members): Avoid -Wuninitialized
- diagnostics for non-static const members or references if they
- use NSDMI.
-
-2012-06-19 Jason Merrill <jason@redhat.com>
-
- PR c++/53651
- * name-lookup.c (constructor_name_p): Don't try to look at the
- name of a DECLTYPE_TYPE.
-
- Reapply:
- PR c++/53137
- * pt.c (instantiate_class_template_1): Set LAMBDA_EXPR_THIS_CAPTURE.
- (instantiate_decl): Don't push_to_top_level for local class methods.
- (instantiate_class_template_1): Or for local classes.
-
- PR c++/53599
- * pt.c (lookup_template_class_1): Use ts_global.
-
-2012-06-14 Richard Guenther <rguenther@suse.de>
-
- Backport from mainline
- 2012-06-11 Richard Guenther <rguenther@suse.de>
-
- PR c++/53616
- * mangle.c (write_array_type): Use double-ints for array domain
- arithmetic.
-
-2012-06-14 Richard Guenther <rguenther@suse.de>
-
- Backport from mainline
- 2012-06-06 Fabien ChĂȘne <fabien@gcc.gnu.org>
-
- PR c++/52841
- * parser.c (cp_parser_alias_declaration): Return earlier
- if an error occured.
+2013-04-03 Jakub Jelinek <jakub@redhat.com>
-2012-06-14 Release Manager
+ PR debug/56819
+ * tree.c (strip_typedefs): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT
+ from args to new_args.
+ (strip_typedefs_expr): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT from t to
+ r instead of doing {S,G}ET_NON_DEFAULT_TEMPLATE_ARGS_COUNT.
- * GCC 4.7.1 released.
+2013-04-02 Jason Merrill <jason@redhat.com>
-2012-06-12 Jason Merrill <jason@redhat.com>
+ PR c++/56821
+ * mangle.c (write_function_type): Mangle ref-qualifier.
+ (write_nested_name): Likewise.
+ (canonicalize_for_substitution): Preserve ref-qualifier.
+ (write_type): Likewise.
- PR c++/53599
- Revert:
- PR c++/53137
- * pt.c (instantiate_class_template_1): Set LAMBDA_EXPR_THIS_CAPTURE.
- (instantiate_decl): Don't push_to_top_level for local class methods.
- (instantiate_class_template_1): Or for local classes.
+2013-04-01 Paolo Carlini <paolo.carlini@oracle.com>
-2012-06-04 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/55951
+ * decl.c (check_array_designated_initializer): Handle CONST_DECL
+ as ce->index.
- PR c++/53524
- * call.c (build_conditional_expr_1): Use OPT_Wenum_compare
- to control enumeral mismatch in conditional expression too.
+2013-04-01 Jason Merrill <jason@redhat.com>
-2012-06-01 Jason Merrill <jason@redhat.com>
+ PR c++/56772
+ * init.c (build_new): Don't try to process an array initializer
+ at template definition time.
- PR c++/52973
- * parser.c (cp_parser_class_head): Apply attributes here.
- * semantics.c (begin_class_definition): Not here.
- * cp-tree.h: Adjust.
+2013-04-01 Jason Merrill <jason@redhat.com>
- PR c++/52725
- * parser.c (cp_parser_binary_expression): Bail early if we're parsing
- tentatively and the LHS has a parse error.
+ PR c++/56793
+ * typeck.c (finish_class_member_access_expr): Handle enum scope.
-2012-06-01 Jason Merrill <jason@redhat.com>
+2013-04-01 Jason Merrill <jason@redhat.com>
- PR c++/53137
- * pt.c (instantiate_class_template_1): Set LAMBDA_EXPR_THIS_CAPTURE.
- (instantiate_decl): Don't push_to_top_level for local class methods.
- (instantiate_class_template_1): Or for local classes.
+ PR c++/56794
+ * parser.c (cp_parser_range_for): Don't try to do auto deduction
+ in a template if the type of the range is incomplete.
- PR c++/53484
- * pt.c (do_auto_deduction): Don't try to deduce from a
- type-dependent initializer.
+2013-04-01 Bronek Kozicki <b.kozicki@gmail.com>
+ Jason Merrill <jason@redhat.com>
+
+ Implement N2439 (ref-qualifiers for 'this')
+ * cp-tree.h (FUNCTION_REF_QUALIFIED): New.
+ (FUNCTION_RVALUE_QUALIFIED): New.
+ (FUNCTION_OR_METHOD_TYPE_CHECK): New.
+ (cpp0x_warn_str): Add CPP0X_REF_QUALIFIER.
+ (cp_ref_qualifier): New enum.
+ (cp_declarator): Add ref_qualifier.
+ * parser.c (cp_parser_ref_qualifier_seq_opt): New.
+ (cp_parser_direct_declarator): Use it.
+ (make_call_declarator): Adjust.
+ (cp_parser_lambda_declarator_opt): Adjust.
+ * call.c (add_function_candidate): Handle ref-qualifier overload
+ resolution semantics.
+ (standard_conversion): Adjust.
+ * class.c (add_method, same_signature_p): Compare ref-qualifiers.
+ * decl.c (grokdeclarator): Handle ref-qualifiers.
+ (grokfndecl): Check for invalid ref-qualifiers.
+ (static_fn_type, revert_static_member_fn): Adjust.
+ * decl2.c (build_memfn_type): Handle ref-qualifiers.
+ (check_classfn): Check them.
+ (cp_reconstruct_complex_type): Retain them.
+ * error.c (dump_ref_qualifier): New.
+ (dump_type_suffix, dump_function_decl): Use it.
+ (maybe_warn_cpp0x): Handle CPP0X_REF_QUALIFIER.
+ * pt.c (tsubst, tsubst_function_type): Instantiate ref-quals.
+ (unify): Retain them.
+ * tree.c (cp_check_qualified_type): New.
+ (cp_build_qualified_type_real): Keep exception spec and ref-qual.
+ (build_ref_qualified_type): New.
+ (strip_typedefs, build_exception_variant): Keep ref-qualifier.
+ (cp_build_type_attribute_variant): Keep ref-qualifier.
+ * typeck.c (merge_types): Keep ref-qualifier.
+ (structural_comptypes): Compare ref-qualifier.
+ (type_memfn_rqual): New.
+ (apply_memfn_quals): Take ref-qual argument.
+ * typeck2.c (build_m_component_ref): Check ref-qualifier.
-2012-05-31 Jason Merrill <jason@redhat.com>
+2013-03-29 Jason Merrill <jason@redhat.com>
- PR c++/53500
- PR c++/52905
- * call.c (joust): Handle comparing list and non-list ctors.
+ PR c++/56774
+ PR c++/35722
+ * pt.c (unify_pack_expansion): Fix indexing.
-2012-05-30 Jason Merrill <jason@redhat.com>
+2013-03-28 Jason Merrill <jason@redhat.com>
- PR c++/53356
- * tree.c (stabilize_init): Side effects make the init unstable.
+ PR c++/56728
+ * semantics.c (cxx_eval_indirect_ref): Use the folded operand if
+ we still think this might be constant.
-2012-05-30 Jason Merrill <jason@redhat.com>
+2013-03-27 Jason Merrill <jason@redhat.com>
- PR c++/53220
- * call.c (convert_like_real) [ck_list]: Take array address directly.
- * typeck.c (decay_conversion): Reject decay of an array compound
- literal.
+ PR c++/56749
+ * semantics.c (finish_qualified_id_expr): Return early
+ for enum scope.
-2012-05-29 Paolo Carlini <paolo.carlini@oracle.com>
+2013-03-26 Jason Merrill <jason@redhat.com>
- PR c++/53491
- * tree.c (stabilize_expr): Handle exp of void type.
+ PR c++/45282
+ * typeck2.c (build_m_component_ref): Handle prvalue object.
-2012-05-28 Paolo Carlini <paolo.carlini@oracle.com>
+2013-03-25 Jason Merrill <jason@redhat.com>
- PR c++/53503
- * semantics.c (potential_constant_expression_1): Handle LTGT_EXPR.
+ PR c++/56699
+ * semantics.c (maybe_resolve_dummy): Make sure that the enclosing
+ class is derived from the type of the object.
-2012-05-15 Alexandre Oliva <aoliva@redhat.com>
+ PR c++/56692
+ * search.c (lookup_base): Handle NULL_TREE.
- PR c++/53209
- * pt.c (tsubst_decl): Bail out if argvec is error_mark_node.
+2013-03-25 Paolo Carlini <paolo.carlini@oracle.com>
-2012-05-10 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/56722
+ * decl.c (cp_finish_decl): Check DECL_LANG_SPECIFIC before
+ DECL_TEMPLATE_INSTANTIATION.
- PR c++/53301
- * decl.c (check_default_argument): Fix typo (POINTER_TYPE_P
- instead of TYPE_PTR_P) in zero-as-null-pointer-constant warning.
+2013-03-25 Jason Merrill <jason@redhat.com>
-2012-05-03 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/52014
+ * semantics.c (lambda_expr_this_capture): Don't capture 'this' in
+ unevaluated context.
- PR c++/53186
- * call.c (build_over_call): Handle final member functions
- and class types.
- (build_new_method_call_1): Do not handle here.
+2013-03-23 Jason Merrill <jason@redhat.com>
-2012-04-17 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/54359
+ * parser.c (cp_parser_direct_declarator): Fix late return
+ for out-of-class defn of member function.
- PR c++/53003
- * parser.c (cp_parser_member_declaration): Check that
- initializer_token_start is non null before dereferencing it.
+2013-03-22 Paolo Carlini <paolo.carlini@oracle.com>
-2012-04-16 Jason Merrill <jason@redhat.com>
+ PR c++/56582
+ * semantics.c (cxx_eval_array_reference): Check for negative index.
- PR c++/38543
- * pt.c (determine_specialization): Instead of comparing the number
- of parms, check that tsubst gives the right answer.
+2013-03-22 Jason Merrill <jason@redhat.com>
- PR c++/50830
- * pt.c (convert_template_argument): Handle template template
- argument packs.
+ PR c++/56646
+ * parser.c (cp_parser_late_return_type_opt): Save and restore
+ current_class_ptr/ref.
- PR c++/50303
- * pt.c (tsubst_pack_expansion): Use tsubst_expr for template
- template parameters.
+ N3276
+ PR c++/52748
+ * cp-tree.h (tsubst_flags): Add tf_decltype.
+ * call.c (build_cxx_call): Don't build a temporary if it's set.
+ (build_over_call): Make sure it's only passed to build_cxx_call.
+ * parser.c (cp_parser_primary_expression): Add decltype_p parm.
+ (cp_parser_unary_expression): Likewise.
+ (cp_parser_cast_expression): Likewise.
+ (cp_parser_binary_expression): Likewise.
+ (cp_parser_assignment_expression): Likewise.
+ (cp_parser_postfix_expression): Likewise. Pass tf_decltype.
+ (cp_parser_explicit_instantiation): Add decltype_p. Force a
+ temporary for a call on the LHS of a comma.
+ (cp_parser_decltype): Pass true to decltype_p parms.
+ * pt.c (tsubst) [DECLTYPE_TYPE]: Pass tf_decltype.
+ (tsubst_copy_and_build): Pass tf_decltype down only for
+ CALL_EXPR and the RHS of COMPOUND_EXPR.
+ * tree.c (build_cplus_new): Call complete_type_or_maybe_complain.
+
+ DR 657
+ * pt.c (tsubst_function_type): Call abstract_virtuals_error_sfinae.
+ (tsubst_arg_types): Likewise.
-2012-04-15 Jason Merrill <jason@redhat.com>
+ PR c++/54277
+ * semantics.c (lambda_capture_field_type): Don't build a
+ magic decltype for pointer types.
+ (lambda_proxy_type): Likewise.
+ (finish_non_static_data_member): Get the quals from
+ the object.
- PR c++/52292
- PR c++/52380
- * pt.c (coerce_template_parms): Even if we aren't converting we
- want to expand argument packs.
+ PR c++/52374
+ * pt.c (tsubst_qualified_id): Use current_nonlambda_class_type.
-2012-04-15 Fabien ChĂȘne <fabien@gcc.gnu.org>
+ PR c++/54764
+ PR c++/55972
+ * name-lookup.h (tag_scope): Add ts_lambda.
+ * semantics.c (begin_lambda_type): Use it.
+ * decl.c (xref_tag_1): Set CLASSTYPE_LAMBDA_EXPR.
+ * pt.c (check_default_tmpl_args): Ignore lambdas.
+ (push_template_decl_real): Handle lambdas.
+ * tree.c (no_linkage_check): Adjust lambda check.
- PR c++/52465
- * parser.c (cp_parser_class_name): Call strip_using_decl and
- return the target decl.
- * name-lookup.c (strip_using_decl): Returns NULL_TREE if the decl
- to be stripped is NULL_TREE.
- (qualify_lookup): Call strip_using_decl and perform some checks on
- the target decl.
+ PR c++/56039
+ * tree.c (strip_typedefs_expr): Complain about lambda, don't abort.
-2012-04-13 Jason Merrill <jason@redhat.com>
+ PR c++/56447
+ PR c++/55532
+ * pt.c (instantiate_class_template_1): Instantiate lambda capture
+ list here.
+ (tsubst_copy_and_build): Not here.
- PR c++/52824
- * pt.c (any_pack_expanson_args_p): New.
- (coerce_template_parms): Use it.
+2013-03-22 Jakub Jelinek <jakub@redhat.com>
-2012-04-11 Jason Merrill <jason@redhat.com>
+ Backported from mainline
+ 2013-03-16 Jakub Jelinek <jakub@redhat.com>
- PR c++/52906
- * decl.c (check_tag_decl): Don't complain about attributes if we
- don't even have a type.
+ PR c++/56607
+ * typeck.c (cp_build_binary_op): When calling warn_for_div_by_zero,
+ pass op1 through maybe_constant_value first.
-2012-04-05 Jason Merrill <jason@redhat.com>
+ * tree.c (cp_tree_equal): Fix a pasto.
- PR c++/52596
- * tree.c (lvalue_kind): Treat a deferred access control SCOPE_REF
- as an lvalue.
+2013-03-22 Release Manager
-2012-04-03 Jason Merrill <jason@redhat.com>
+ * GCC 4.8.0 released.
- PR c++/52796
- * pt.c (tsubst_initializer_list): A pack expansion with no elements
- means value-initialization.
+2013-03-14 Jason Merrill <jason@redhat.com>
-2012-03-29 Meador Inge <meadori@codesourcery.com>
+ PR c++/56614
+ * decl.c (local_variable_p_walkfn): Check DECL_ARTIFICIAL again.
- PR c++/52672
- * semantics.c (cxx_fold_indirect_ref): Don't attempt to fold
- stripped child trees that are not pointer types.
+ PR c++/56346
+ * decl.c (register_dtor_fn): Pass null to __cxa_thread_atexit
+ dso_handle parm on targets without __cxa_atexit.
-2012-03-29 Paolo Carlini <paolo.carlini@oracle.com>
+2013-03-11 Jason Merrill <jason@redhat.com>
- PR c++/52718
- * decl.c (check_default_argument): With -Wzero-as-null-pointer-constant
- warn for a zero as null pointer constant default argument.
+ PR c++/56567
+ * typeck.c (check_return_expr): Disallow returning init list here.
+ * semantics.c (apply_deduced_return_type): Not here.
-2012-03-29 Jason Merrill <jason@redhat.com>
+2013-03-08 Paolo Carlini <paolo.carlini@oracle.com>
- PR c++/52685
- * tree.c (copy_binfo): Handle BINFO_DEPENDENT_BASE_P.
+ PR c++/51412
+ * cxx-pretty-print.c (pp_cxx_expression): Handle LAMBDA_EXPR.
+ * error.c (dump_expr): Likewise.
-2012-03-29 Jakub Jelinek <jakub@redhat.com>
+2013-03-08 Jason Merrill <jason@redhat.com>
- PR c++/52759
- * decl.c (start_decl): Don't call maybe_apply_pragma_weak
- if processing_template_decl.
+ PR c++/51884
+ * class.c (modify_all_vtables): Mangle the vtable name before
+ entering dfs_walk.
-2012-03-29 Jason Merrill <jason@redhat.com>
+ * semantics.c (lambda_expr_this_capture): In unevaluated context,
+ just return the nearest 'this'.
- PR c++/52743
- * call.c (compare_ics): Handle ck_aggr like ck_list.
+ PR c++/51494
+ PR c++/52183
+ PR c++/56222
+ * tree.c (maybe_dummy_object): Don't capture 'this'.
+ * semantics.c (maybe_resolve_dummy): New.
+ (finish_non_static_data_member): Use it.
+ (finish_qualified_id_expr): Don't test is_dummy_object.
+ * cp-tree.h: Declare maybe_resolve_dummy.
+ * call.c (build_new_method_call_1): Use it.
-2012-03-28 Jason Merrill <jason@redhat.com>
+ PR c++/56567
+ * semantics.c (apply_deduced_return_type): Don't allow returning
+ std::initializer_list.
- PR c++/52746
- * typeck.c (lookup_destructor): Clear BASELINK_QUALIFIED_P if
- we didn't get an explicit scope.
- * pt.c (tsubst_baselink): Likewise.
+2013-03-06 Paolo Carlini <paolo.carlini@oracle.com>
-2012-03-22 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/56534
+ * parser.c (cp_parser_elaborated_type_specifier): Don't call
+ check_elaborated_type_specifier when TREE_CODE (decl) != TYPE_DECL.
+ * decl.c (check_elaborated_type_specifier): Tidy.
- PR c++/52487
- * class.c (check_field_decls): Call literal_type_p only
- on complete types.
+2013-03-06 Jakub Jelinek <jakub@redhat.com>
-2012-03-22 Jakub Jelinek <jakub@redhat.com>
+ PR c++/56543
+ * tree.c (strip_typedefs): Don't copy args if they are NULL.
- PR c++/52671
- * decl.c (check_tag_decl): Only use CLASSTYPE_TEMPLATE_INSTANTIATION
- on CLASS_TYPE_P types.
+2013-03-05 Jakub Jelinek <jakub@redhat.com>
-2012-03-22 Jason Merrill <jason@redhat.com>
+ * parser.c (cp_parser_braced_list): For {} initialize
+ *non_constant_p to false.
- PR c++/52582
- * method.c (implicitly_declare_fn): Set DECL_EXTERNAL.
+2013-03-04 Jason Merrill <jason@redhat.com>
-2012-03-22 Jakub Jelinek <jakub@redhat.com>
+ PR c++/56464
+ PR c++/54383
+ * semantics.c (lambda_expr_this_capture): Handle NSDMI
+ and non-class scopes.
- Backported from mainline
- 2012-03-14 Jakub Jelinek <jakub@redhat.com>
+2013-03-01 Paolo Carlini <paolo.carlini@oracle.com>
- PR c++/52521
- * parser.c (lookup_literal_operator): Return fn only if
- processed all arguments from args vector and argtypes is
- void_list_node.
+ * decl.c (grokdeclarator): Remove dead code.
-2012-03-22 Release Manager
+2013-02-28 Jason Merrill <jason@redhat.com>
- * GCC 4.7.0 released.
+ PR c++/56481
+ * semantics.c (potential_constant_expression_1): Use
+ cxx_eval_outermost_constant_expr rather than maybe_constant_value.
-2012-03-20 Jason Merrill <jason@redhat.com>
+ PR c++/56243
+ * call.c (build_over_call): Avoid virtual lookup in a template.
- * mangle.c (write_type): Handle 'auto'.
- * init.c (build_new): Don't do auto deduction where it might
- affect template mangling.
+2013-02-27 Jason Merrill <jason@redhat.com>
-2012-03-07 Jason Merrill <jason@redhat.com>
+ PR c++/56358
+ PR c++/56323
+ * name-lookup.c (do_class_using_decl): Use ctor_identifier instead
+ of the base name for inheriting ctors.
+ (push_class_level_binding_1): Remove inheriting ctor handling.
+ * pt.c (tsubst_decl) [USING_DECL]: Likewise.
+ * class.c (add_implicitly_declared_members): Adjust.
- PR c++/52521
- * mangle.c (write_literal_operator_name): The length comes after the
- operator prefix.
+2013-02-26 David Binderman <dcb314@hotmail.com>
-2012-02-29 Jason Merrill <jason@redhat.com>
+ PR c++/55632
+ * decl.c (grokdeclarator): Tidy publicp assignment.
- PR c++/51930
- * decl.c (check_tag_decl): Move warning for misplaced attributes here.
- (shadow_tag): From here.
- * parser.c (cp_parser_explicit_instantiation): Don't warn here.
+2013-02-25 Aldy Hernandez <aldyh@redhat.com>
-2012-02-21 Jakub Jelinek <jakub@redhat.com>
+ PR c++/56419
+ * semantics.c (begin_transaction_stmt): Set TREE_SIDE_EFFECTS.
+ (build_transaction_expr): Same.
- PR c++/52312
- * typeck.c (check_literal_operator_args): Initialize *long_double_p
- and *long_long_unsigned_p even if processing_template_decl.
+2013-02-25 Jason Merrill <jason@redhat.com>
-2012-02-16 Jason Merrill <jason@redhat.com>
+ PR c++/56377
+ * pt.c (fn_type_unification): Wait to call push_tinst_level until
+ we know what args we're looking at.
- PR c++/52248
- * decl.c (define_label): Use timevar_cond_start/stop.
+ PR c++/56438
+ * semantics.c (potential_constant_expression_1): In C++98, a cast
+ to non-integral type can't be a constant expression.
-2012-02-16 Fabien ChĂȘne <fabien@gcc.gnu.org>
+2013-02-24 Jakub Jelinek <jakub@redhat.com>
- PR c++/52126
- * decl.c (xref_basetypes): call dependent_scope_p instead of
- dependent_type_p.
+ PR c++/56403
+ * init.c (build_zero_init_1): Use RECORD_OR_UNION_CODE_P instead
+ of CLASS_TYPE_P.
-2012-02-16 Jason Merrill <jason@redhat.com>
+2013-02-22 Jason Merrill <jason@redhat.com>
- PR c++/51415
- * error.c (dump_expr): Handle lambda closures specifically.
+ PR c++/40405
+ * pt.c (push_template_decl_real): Set DECL_INTERFACE_KNOWN
+ if we got the wrong number of template parms.
-2012-02-14 Jason Merrill <jason@redhat.com>
+ PR c++/56377
+ * pt.c (fn_type_unification): Use explicit args in template
+ instantiation context.
- * parser.c (cp_parser_explicit_instantiation): Give a warning
- for ignored attributes on explicit class instantiation.
+ PR c++/56359
+ * call.c (can_convert_arg): Discard access checks.
-2012-02-14 Jakub Jelinek <jakub@redhat.com>
+ PR c++/56395
+ * tree.c (strip_typedefs): Strip typedefs from TYPENAME_TYPE template
+ args.
- PR c++/52247
- * pt.c (tsubst_copy_asm_operands): For LABEL_DECL values call
- lookup_label on label's name and set TREE_USED.
+2013-02-20 Paolo Carlini <paolo.carlini@oracle.com>
-2012-02-14 Jason Merrill <jason@redhat.com>
+ PR c++/56373
+ * tree.c (maybe_warn_zero_as_null_pointer_constant): Add.
+ * cvt.c (ocp_convert): Use the latter.
+ (cp_convert_to_pointer): Likewise.
+ * decl.c (check_default_argument): Likewise.
+ * typeck.c (cp_build_binary_op): Likewise.
+ * cp-tree.h (maybe_warn_zero_as_null_pointer_constant): Declare.
- PR c++/39055
- * decl.c (local_variable_p_walkfn): Don't check DECL_ARTIFICIAL.
+2013-02-15 Jonathan Wakely <jwakely.gcc@gmail.com>
+ Paolo Carlini <paolo.carlini@oracle.com>
-2012-02-14 Jakub Jelinek <jakub@redhat.com>
+ PR c++/51242
+ * decl2.c (grokbitfield): Allow scoped enumeration types.
- PR c/52181
- * decl.c (duplicate_decls): If olddecl has bigger DECL_ALIGN than
- newdecl, copy DECL_ALIGN to newdecl and or DECL_USER_ALIGN bits.
+2013-02-15 Jason Merrill <jason@redhat.com>
-2012-02-07 Jason Merrill <jason@redhat.com>
+ PR c++/54276
+ * semantics.c (finish_id_expression): Also return the identifier
+ for an outer local static.
- PR c++/51675
- * semantics.c (cx_check_missing_mem_inits): Handle unions.
- Fix constexpr default constructor logic.
+ PR c++/56343
+ * class.c (check_bases_and_members): Deduce noexcept after
+ checking bases.
- PR c++/52035
- * pt.c (tsubst): Strip uninstantiated typedef.
+ PR c++/52026
+ * semantics.c (finish_id_expression): In a template, return
+ the identifier for a constant variable.
-2012-02-06 Jason Merrill <jason@redhat.com>
+2013-02-14 Jason Merrill <jason@redhat.com>
- PR c++/52088
- * cvt.c (build_expr_type_conversion): Check for template conversion.
+ PR c++/54922
+ * semantics.c (build_anon_member_initialization): New.
+ (build_data_member_initialization): Use it.
-2012-01-31 Jason Merrill <jason@redhat.com>
+ PR c++/55003
+ * decl.c (cp_finish_decl): Force instantiation of an
+ auto static data member.
- PR c++/52043
- * cp-tree.h (PACK_EXPANSION_LOCAL_P): New.
- * pt.c (make_pack_expansion, tsubst_initializer_list): Set it.
- (tsubst_pack_expansion): Check it.
+ PR c++/55220
+ * pt.c (unify): A pack expansion that is not the last template
+ argument makes the entire template argument list non-deduced.
-2012-01-29 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/56323
+ * name-lookup.c (do_class_using_decl): Handle typedefs with
+ inheriting constructors.
+ (push_class_level_binding_1): Allow inheriting from template
+ template parameter, too.
+ * pt.c (tsubst_decl) [USING_DECL]: Likewise.
- PR c++/51327
- * class.c (explain_non_literal_class): Correctly handle implicitly
- deleted constructors.
+ PR c++/55223
+ * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Fix handling of
+ default argument scope.
+ * mangle.c (write_name): Likewise.
-2012-01-27 Jakub Jelinek <jakub@redhat.com>
+ PR c++/55232
+ * error.c (find_typenames_r): Don't walk into a pack expansion.
- PR c++/51852
- * pt.c (tsubst_pack_expansion): Delete and restore
- local_specialization whenever need_local_specialization, not just
- when saved_local_specializations is non-NULL.
+2013-02-13 Jason Merrill <jason@redhat.com>
-2012-01-26 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/55670
+ * parser.c (cp_parser_member_declaration): Check the declarator
+ form when detecting a function declaration via typedef.
- PR c++/51370
- * error.c (dump_decl, [TEMPLATE_ID_EXPR]): Handle error_mark_node
- as TREE_OPERAND (t, 1).
+ PR c++/55680
+ * pt.c (maybe_process_partial_specialization): A lambda
+ isn't what's being specialized.
-2012-01-24 Jason Merrill <jason@redhat.com>
+ PR c++/55710
+ * semantics.c (maybe_add_lambda_conv_op): Mark static thunk
+ TREE_USED.
- PR c++/51917
- * decl.c (xref_basetypes): Check VEC_length instead of VEC_space.
+ PR c++/55879
+ * semantics.c (cxx_bind_parameters_in_call): Undo DECL_BY_REFERENCE.
- PR c++/51973
- * tree.c (called_fns_equal): Check template args.
- (cp_tree_equal): Call it.
+ PR c++/55993
+ * semantics.c (cxx_fold_indirect_ref): Handle empty bases at
+ non-zero offsets, too.
-2012-01-24 Aldy Hernandez <aldyh@redhat.com>
- Patrick Marlier <patrick.marlier@gmail.com>
+ PR c++/56155
+ * decl.c (build_enumerator): Always convert the value to a
+ fixed underlying type.
- PR c++/51928
- * class.c (set_method_tm_attributes): Use TARGET_THUNK instead of
- thunk for set_one_vmethod_tm_attributes.
+ PR c++/56135
+ * pt.c (tsubst_copy_and_build): Don't forget any new
+ captures that arose from use of dependent names.
-2012-01-24 Paolo Carlini <paolo.carlini@oracle.com>
+2013-02-13 Jakub Jelinek <jakub@redhat.com>
- PR c++/51223
- * call.c (build_over_call): Check for error_mark_node as
- TREE_VALUE when default arguments are processed.
+ PR c++/56302
+ * semantics.c (finish_asm_stmt): If input constraints allow
+ neither register nor memory, try maybe_constant_value to get
+ a constant if possible.
-2012-01-23 Jason Merrill <jason@redhat.com>
+2013-02-12 Jason Merrill <jason@redhat.com>
- PR c++/51930
- * decl2.c (determine_visibility): Check for visibility attribute
- on template specialization.
+ PR c++/56285
+ * method.c (add_one_base_init): Handle base constructor
+ taking rvalue reference parm.
-2012-01-23 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/56291
+ * semantics.c (sort_constexpr_mem_initializers): Handle
+ vptr out of order.
- PR c++/51398
- * pt.c (parameter_of_template_p): Skip error_mark_node parameters.
+2013-02-09 Jason Merrill <jason@redhat.com>
-2012-01-23 Jason Merrill <jason@redhat.com>
+ PR c++/56268
+ * semantics.c (classtype_has_nothrow_assign_or_copy_p): Call
+ maybe_instantiate_noexcept.
- PR c++/51925
- * class.c (add_method): Set OVL_USED for using-decls.
- * tree.c (ovl_scope): New.
+ PR c++/56247
+ * pt.c (eq_specializations): Set comparing_specializations.
+ * tree.c (cp_tree_equal): Check it.
* cp-tree.h: Declare it.
- * parser.c (cp_parser_template_name): Use it.
- * semantics.c (baselink_for_fns): Likewise.
- * name-lookup.c (set_inherited_value_binding_p): Likewise.
-
-2012-01-20 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/51402
- * pt.c (lookup_template_class_1): Check context returned by
- tsubst for error_mark_node.
-
-2012-01-19 Kai Tietz <ktietz@redhat.com>
-
- PR c++/51344
- * decl2.c (save_template_attributes): Use merge_attributes
- instead of chaining up via TREE_CHAIN.
-
-2012-01-19 Jason Merrill <jason@redhat.com>
-
- PR c++/51889
- * class.c (finish_struct): Call add_method here for function usings.
- * semantics.c (finish_member_declaration): Not here.
-2012-01-18 Paolo Carlini <paolo.carlini@oracle.com>
+ * decl.c (decls_match): Check versions later.
- PR c++/51225
- * typeck2.c (store_init_value): Within a template guard
- cxx_constant_value with require_potential_constant_expression.
- * pt.c (convert_nontype_argument): Likewise.
+ PR c++/56238
+ * pt.c (build_non_dependent_expr): Don't try to fold
+ instantiation-dependent expressions.
+ (instantiation_dependent_r) [TRAIT_EXPR]: Split out.
+ [BIND_EXPR]: Treat as dependent.
-2012-01-16 Jakub Jelinek <jakub@redhat.com>
+2013-02-07 Jakub Jelinek <jakub@redhat.com>
- PR c++/51854
- * mangle.c (write_template_arg_literal): Handle complex.
-
-2012-01-16 Jason Merrill <jason@redhat.com>
-
- PR c++/51827
- * mangle.c (mangle_decl): Don't mangle uninstantiated templates.
+ PR c++/56241
+ * init.c (build_vec_init): Don't append NULL values into new_vec.
+ (build_zero_init_1): Don't push anything into v if recursive call
+ returned NULL_TREE.
+ (build_value_init_noctor): Don't push anything into v if
+ build_value_init call returned NULL_TREE.
- PR c++/51868
- * typeck.c (build_static_cast_1): Handle bit-fields properly.
+ PR c++/56239
+ * parser.c (cp_parser_token_starts_cast_expression): Renamed to...
+ (cp_parser_tokens_start_cast_expression): ... this. Change parameter
+ to cp_parser *, call cp_lexer_peek_token first. For CPP_OPEN_PAREN,
+ return true only if 2nd token isn't CPP_CLOSE_PAREN.
+ (cp_parser_cast_expression): Adjust caller.
-2012-01-13 Ian Lance Taylor <iant@google.com>
+ PR c++/56237
+ * decl.c (push_local_name): Look at DECL_DISCRIMINATOR (t)
+ only if DECL_DISCRIMINATOR_SET_P (t) rather than just
+ DECL_LANG_SPECIFIC (t).
- PR c++/50012
- * typeck.c (enum_cast_to_int): New static function.
- (cp_build_binary_op): When handling warn_sign_compare, don't test
- for TREE_NO_WARNING. Do call enum_cast_to_int.
- * call.c (avoid_sign_compare_warnings): Remove static function.
- (build_new_op_1): Don't call avoid_sign_compare_warnings.
+2013-02-07 Jason Merrill <jason@redhat.com>
-2012-01-13 Steven Bosscher <steven@gcc.gnu.org>
+ PR c++/56235
+ * method.c (do_build_copy_constructor): Don't bother turning
+ scalars from lvalues to xvalues.
+ (do_build_copy_assign): Likewise.
- * decl2.c: Do not include tree-mudflap.h
- * semantics.c: Likewise.
+2013-02-06 Jason Merrill <jason@redhat.com>
-2012-01-13 Jason Merrill <jason@redhat.com>
+ * parser.c (cp_parser_enum_specifier): Check for error_mark_node.
- PR c++/20681
- * semantics.c (finish_break_stmt): Avoid adding an unreachable
- BREAK_STMT.
+2013-02-05 Jason Merrill <jason@redhat.com>
- PR c++/51813
- * decl2.c (constrain_visibility): Clear DECL_VISIBILITY_SPECIFIED
- when reducing the visibility.
+ PR c++/54122
+ * tree.c (lvalue_kind) [INDIRECT_REF]: Don't check for
+ METHOD_TYPE.
- PR c++/51620
- * class.c (build_vtbl_initializer): Use __cxa_deleted_virtual.
+ PR c++/56177
+ * decl.c (start_preparsed_function): Update restype if we change
+ decl1.
-2012-01-12 Jason Merrill <jason@redhat.com>
+ PR c++/56208
+ * pt.c (fn_type_unification): Discard any access checks from
+ substituting explicit args.
- PR c++/51714
- * pt.c (value_dependent_expression_p): Treat STMT_EXPR as
- value-dependent.
+2013-01-31 Jason Merrill <jason@redhat.com>
-2012-01-13 Dodji Seketeli <dodji@redhat.com>
+ PR c++/56162
+ PR c++/56104
+ * typeck.c (get_member_function_from_ptrfunc): Fix
+ ptrmemfunc_vbit_in_delta case.
- PR c++/51633
- * semantics.c (cp_parser_ctor_initializer_opt_and_function_body):
- Set the pointer to the last block of the constructor to the
- current statement.
- (build_constexpr_constructor_member_initializers): Get
- build_data_member_initialization a chance to deal with more
- statements before we choke.
+2013-01-29 Jason Merrill <jason@redhat.com>
-2012-01-12 Jason Merrill <jason@redhat.com>
+ PR libstdc++/54314
+ * class.c (build_ctor_vtbl_group): Give construction vtables
+ hidden visibility.
- PR c++/48051
- * mangle.c (write_expression): Mangle BASELINK scope if
- BASELINK_QUALIFIED_P.
- * search.c (adjust_result_of_qualified_name_lookup): Set
- BASELINK_QUALIFIED_P.
- * tree.c (cp_tree_equal) [BASELINK]: Compare BASELINK_QUALIFIED_P.
- * parser.c (cp_parser_postfix_dot_deref_expression): Don't call
- adjust_result_of_qualified_name_lookup for non-qualified names.
+2013-01-25 Jason Merrill <jason@redhat.com>
- PR c++/51403
- * pt.c (unify): Handle error_mark_node.
+ PR c++/56095
+ * pt.c (convert_nontype_argument_function): Handle invalid input.
+ (convert_nontype_argument): Likewise.
-2012-01-11 Jason Merrill <jason@redhat.com>
+ PR c++/56104
+ * typeck.c (get_member_function_from_ptrfunc): Optimize if the
+ dynamic type has no virtual functions.
- PR c++/51565
- * call.c (standard_conversion): For ptrmemfuncs, compare the
- static_fn_types.
+2013-01-22 Paolo Carlini <paolo.carlini@oracle.com>
- PR c++/51818
- * mangle.c (find_substitution): A type is only a substitution
- match if we're looking for a type.
- (write_nested_name): Use decl_mangling_context.
+ PR c++/55944
+ * decl.c (check_initializer): Use TARGET_EXPR_DIRECT_INIT_P only
+ on TARGET_EXPR nodes.
- * decl.c (decls_match): Assert that the arguments are decls.
+2013-01-22 Jason Merrill <jason@redhat.com>
- PR c++/51613
- * pt.c (resolve_overloaded_unification): Compare types with
- same_type_p, not decls_match.
+ PR c++/56071
+ * pt.c (maybe_instantiate_noexcept): Don't defer access checks.
-2012-01-10 Jason Merrill <jason@redhat.com>
+2013-01-22 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/53609
+ * pt.c (argument_pack_element_is_expansion_p)
+ (make_argument_pack_select, use_pack_expansion_extra_args_p)
+ (gen_elem_of_pack_expansion_instantiation): New static functions.
+ (tsubst): When looking through an ARGUMENT_PACK_SELECT tree node,
+ look through the possibly resulting pack expansion as well.
+ (tsubst_pack_expansion): Use use_pack_expansion_extra_p to
+ generalize when to use the PACK_EXPANSION_EXTRA_ARGS mechanism.
+ Use gen_elem_of_pack_expansion_instantiation to build the
+ instantiation piece-wise. Don't use arg_from_parm_pack_p anymore,
+ as gen_elem_of_pack_expansion_instantiation and the change in
+ tsubst above generalize this particular case.
+ (arg_from_parm_pack_p): Remove this for it's not used by
+ tsubst_pack_expansion anymore.
- PR c++/51614
- * class.c (build_base_path): Diagnose ambiguous base.
+2013-01-21 Jason Merrill <jason@redhat.com>
- PR c++/51433
- * semantics.c (cxx_eval_call_expression): Always retry previously
- non-constant expressions.
+ PR c++/56059
+ * tree.c (strip_typedefs_expr) [TREE_VEC]: Preserve non-default
+ template args count.
-2012-01-06 Jason Merrill <jason@redhat.com>
+2013-01-18 Jason Merrill <jason@redhat.com>
- DR 686
- PR c++/47450
- * parser.c (cp_parser_new_expression): Set
- type_definition_forbidden_message.
+ PR target/54908
+ * decl2.c (get_local_tls_init_fn): New.
+ (get_tls_init_fn): Handle flag_extern_tls_init. Don't bother
+ with aliases for internal variables. Don't use weakrefs if
+ the variable needs destruction.
+ (generate_tls_wrapper): Mark the wrapper as const if no
+ initialization is needed.
+ (handle_tls_init): Don't require aliases.
- PR c++/6057
- PR c++/48051
- PR c++/50855
- PR c++/51322
- * mangle.c (write_expression): Support NEW_EXPR, DELETE_EXPR,
- THROW_EXPR, CONSTRUCTOR, OVERLOAD. Fix PREINCREMENT_EXPR and
- PREDECREMENT_EXPR.
- (write_template_arg): Fix mangling of class-scope functions and
- argument packs.
- (mangle_decl): Update suggested -fabi-version argument.
- * operators.def: Add DOTSTAR_EXPR, REINTERPRET_CAST_EXPR,
- DYNAMIC_CAST_EXPR; correct CONST_CAST_EXPR, STATIC_CAST_EXPR.
- * tree.c (dependent_name): No longer static.
- * cp-tree.h: Declare it.
- * pt.c (unify): Defer handling of unconverted functions.
+2013-01-15 Dodji Seketeli <dodji@redhat.com>
- * mangle.c (mangle_decl): Don't generate mangling aliases
- for maybe-in-charge [cd]tors.
+ PR c++/55663
+ * pt.c (coerce_innermost_template_parms): New static function.
+ (instantiate_alias_template): Use it here.
- * error.c (dump_expr): Print type of CONSTRUCTOR.
+2013-01-09 Jason Merrill <jason@redhat.com>
-2012-01-05 Dodji Seketeli <dodji@redhat.com>
+ PR c++/55878
+ * rtti.c (build_typeid, get_typeid): Add complain parm.
+ (get_tinfo_decl_dynamic): Likewise.
+ * cp-tree.h, parser.c, pt.c: Adjust.
- PR c++/51541
- * parser.c (cp_parser_alias_declaration): Get out early upon
- errors in the identifier or the attributes.
+ PR c++/55893
+ * decl.c (cp_finish_decl): Clear TREE_READONLY if the variable
+ needs destruction.
-2012-01-04 Paolo Carlini <paolo.carlini@oracle.com>
+2013-01-09 Jakub Jelinek <jakub@redhat.com>
- PR c++/51064
- * pt.c (tsubst_copy_and_build): Maybe set TREE_NO_WARNING on
- the tree returned by build_x_binary_op.
+ PR c/48418
+ * typeck.c (cp_build_binary_op): For LSHIFT_EXPR and RSHIFT_EXPR,
+ call maybe_constant_value for the negative or too big shift
+ count warnings.
-2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
+2013-01-09 Paolo Carlini <paolo.carlini@oracle.com>
- PR c++/51738
- * parser.c (cp_parser_postfix_open_square_expression): Handle
- postfix-expression [ braced-init-list ].
+ PR c++/55801
+ * decl2.c (var_needs_tls_wrapper): Return false when error_operand_p
+ of the argument is true.
-2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
+2013-01-08 Joel Brobecker <brobecker@adacore.com>
- PR c++/29273
- * rtti.c (build_dynamic_cast_1): In case of T a pointer type,
- call decay_conversion on v.
+ * parser.c (cp_parser_initializer_list): Move declaration
+ of variable non_const to start of lexical block.
-2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
+2013-01-07 Jason Merrill <jason@redhat.com>
- PR c++/15867
- * decl.c (duplicate_decls): With -Wredundant-decls don't warn for
- declaration followed by specialization.
+ PR c++/55753
+ * tree.c (build_aggr_init_expr): Do nothing in a template.
+ * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Strip an ADDR_EXPR off
+ a FUNCTION_DECL before tsubsting.
-2012-01-03 Jakub Jelinek <jakub@redhat.com>
+2013-01-04 Dodji Seketeli <dodji@redhat.com>
- PR c++/51669
- * semantics.c (finish_omp_clauses): Call fold_build_cleanup_point_expr
- on OMP_CLAUSE_{IF,FINAL,NUM_THREADS,SCHEDULE_CHUNK}_EXPR.
+ PR c++/52343
+ * pt.c (check_instantiated_arg): Allow type template arguments.
-2012-01-02 Jason Merrill <jason@redhat.com>
+2013-01-04 Jason Merrill <jason@redhat.com>
- DR 1359
- PR c++/51675
- * method.c (walk_field_subobs): Don't check for uninitialized
- fields in a union.
- (synthesized_method_walk): Check here.
+ PR c++/55877
+ * decl.c (reset_type_linkage, bt_reset_linkage): New.
+ (grokdeclarator): Use reset_type_linkage.
+ * name-lookup.c (binding_table_foreach): Handle null table.
+ * tree.c (decl_anon_ns_mem_p): Check TYPE_MAIN_DECL, not TYPE_NAME.
- DR 325
- PR c++/51666
- * parser.c (cp_parser_cache_defarg): Split out...
- (cp_parser_parameter_declaration): ...from here.
- (cp_parser_save_nsdmi): Use it.
- (cp_parser_cache_group): Remove CPP_COMMA support.
+2013-01-04 Paolo Carlini <paolo.carlini@oracle.com>
-2012-01-02 Dodji Seketeli <dodji@redhat.com>
+ PR c++/54526 (again)
+ * parser.c (cp_parser_template_id): Revert core of previous change
+ (keep adjusted inform message).
- PR c++/51462
- * semantics.c (cx_check_missing_mem_inits): Don't assert in case
- of error.
+2013-01-03 Jason Merrill <jason@redhat.com>
-2012-01-02 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/55419
+ PR c++/55753
+ * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Don't touch
+ TREE_CONSTANT.
- PR c++/20140
- * typeck2.c (digest_init_r): Use copy_init when initializing
- an array of chars.
+ PR c++/55842
+ * semantics.c (trait_expr_value): Call maybe_instantiate_noexcept.
-2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/55856
+ * semantics.c (build_data_member_initialization): Handle DECL_EXPR.
- PR c++/16603
- * decl.c (build_enumerator): Don't call perform_integral_promotions
- on the value.
+ PR c++/53650
+ * call.c (type_has_extended_temps): New.
+ * cp-tree.h: Declare it.
+ * decl.c (check_initializer): Use build_aggr_init for arrays
+ if it is false.
+ * init.c (build_vec_init): Avoid mixed signed/unsigned arithmetic.
-2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
+2013-01-02 Jason Merrill <jason@redhat.com>
- PR c++/51379
- * typeck.c (build_reinterpret_cast_1): Implement resolution of
- DR 799.
+ PR c++/54325
+ * call.c (build_new_method_call_1): Don't use build_value_init for
+ user-provided default constructors.
-2012-01-01 Fabien ChĂȘne <fabien@gcc.gnu.org>
+ * decl.c (check_default_argument): Use LOOKUP_IMPLICIT.
- * parser.c (cp_parser_using_declaration): Add a warning about
- deprecated access declarations when no errors were encountered
- while parsing the access declaration. Save the first token in
- order to emit the warning at the right place.
+ PR c++/55032
+ PR c++/55245
+ * tree.c (build_cplus_array_type): Copy layout information
+ to main variant if necessary.
\f
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2013 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright