2016-01-31 Jason Merrill * pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES between template and instantiation. 2016-01-29 Jakub Jelinek PR debug/66869 * decl.c (wrapup_globals_for_namespace): Warn about unused static function declarations. 2016-01-29 Marek Polacek PR c++/69509 PR c++/69516 * constexpr.c (cxx_eval_array_reference): Give the "array subscript out of bound" error earlier. * init.c (build_vec_init): Change NE_EXPR into GT_EXPR. Update the commentary. 2016-01-29 Patrick Palka * name-lookup.c (begin_scope): After reusing a cp_binding_level structure, update free_binding_level before the structure's level_chain field gets cleared, not after. 2016-01-28 Jason Merrill PR c++/67407 * search.c (dfs_walk_once, dfs_walk_once_r) (dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use hash_set instead of BINFO_MARKED. (dfs_unmark_r): Remove. 2016-01-28 Patrick Palka PR c++/24208 * parser.c (LEXER_DEBUGGING_ENABLED_P): New macro. (cp_lexer_debugging_p): Use it. (cp_lexer_start_debugging): Likewise. (cp_lexer_stop_debugging): Likewise. 2016-01-27 Marek Polacek PR c/68062 * typeck.c (cp_build_binary_op): Promote operand to unsigned, if needed. Add -Wsign-compare warning. 2016-01-27 Ryan Burn PR cilkplus/69267 * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed superfluous post_p argument in call to cilk_gimplify_call_params_in_spawned_fn. 2016-01-27 Marek Polacek PR c++/69379 * constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs wrapped in NOP_EXPRs. 2016-01-27 Martin Sebor PR c++/69317 * mangle.c (mangle_decl): Reference the correct (saved) version of the ABI in -Wabi diagnostics. 2016-01-27 Marek Polacek PR c++/69496 * constexpr.c (cxx_eval_array_reference): Evaluate the number of elements of the array. 2016-01-26 Jason Merrill PR c++/68949 * constexpr.c (register_constexpr_fundef): Keep the un-massaged body. (cxx_eval_call_expression): Don't look through clones. * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias. * semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of maybe-in-charge *tor. 2016-01-26 Jason Merrill PR c++/68782 * constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT and TREE_SIDE_EFFECTS. (cxx_eval_constant_expression) [CONSTRUCTOR]: Call verify_constructor_flags. 2016-01-26 Jakub Jelinek PR c++/68357 * cp-gimplify.c (cp_fold): If some operand folds to error_mark_node, return error_mark_node instead of building trees with error_mark_node operands. 2016-01-26 David Malcolm PR other/69006 * error.c (print_instantiation_partial_context_line): Add missing newlines from output for the t == NULL case. (print_instantiation_partial_context): Remove call to pp_newline. 2016-01-24 Patrick Palka Revert: 2016-01-18 Patrick Palka PR c++/11858 PR c++/24663 PR c++/24664 * decl.c (grokdeclarator): Don't decay array parameter type to a pointer type if it's dependent. (grokparms): Invoke strip_top_quals instead of directly invoking cp_build_qualified_type. * pt.c (decay_dependent_array_parm_type): New static function. (type_unification_real): Call decay_dependent_array_parm_type to decay a dependent array parameter type to its corresponding pointer type before unification. (more_specialized_fn): Likewise. (get_bindings): Likewise. * tree.c (cp_build_qualified_type): Trivial typofix in documentation. 2016-01-23 Martin Sebor PR c++/58109 PR c++/69022 * decl2.c (is_late_template_attribute): Handle dependent argument to attribute align and attribute vector_size. 2016-01-21 Jason Merrill PR c++/69392 * lambda.c (lambda_capture_field_type): Handle 'this' specially for init-capture, too. PR c++/65687 * decl.c (type_is_deprecated): Don't look into a typedef. PR c++/40751 PR c++/64987 * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN. PR c++/43407 * decl.c (start_enum): Add attributes parameter. * parser.c (cp_parser_enum_specifier): Pass it. * pt.c (lookup_template_class_1): Pass it. * cp-tree.h: Adjust. 2016-01-19 Jason Merrill PR c++/59759 * pt.c (convert_template_argument): Handle VAR_DECL properly. 2016-01-19 Marek Polacek PR c++/68586 * constexpr.c (clear_cv_cache): New. * cp-gimplify.c (clear_fold_cache): New. * cp-tree.h (clear_cv_cache, clear_fold_cache): Declare. * decl.c (finish_enum_value_list): Call them. PR c++/68965 * pt.c (tsubst_copy): Mark elements in expanded vector as used. 2016-01-18 Patrick Palka PR c++/11858 PR c++/24663 PR c++/24664 * decl.c (grokdeclarator): Don't decay array parameter type to a pointer type if it's dependent. (grokparms): Invoke strip_top_quals instead of directly invoking cp_build_qualified_type. * pt.c (decay_dependent_array_parm_type): New static function. (type_unification_real): Call decay_dependent_array_parm_type to decay a dependent array parameter type to its corresponding pointer type before unification. (more_specialized_fn): Likewise. (get_bindings): Likewise. * tree.c (cp_build_qualified_type): Trivial typofix in documentation. 2016-01-18 Jason Merrill * cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input. * cp-gimplify.c (cp_fold): Remove unnecessary special cases. PR c++/68767 * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify. Do fold COND_EXPR. (contains_label_1, contains_label_p): Remove. 2016-01-16 Patrick Palka PR c++/69091 * pt.c (type_dependent_expression_p): For a function template specialization, a type is dependent iff any of its template arguments are. 2016-01-16 Patrick Palka * cp-array-notation.c (cp_expand_cond_array_notations): Return error_mark_node only if find_rank failed, not if it was successful. 2016-01-16 Patrick Palka PR c++/68936 * tree.c (build_min_non_dep_call_vec): Don't retain the KOENIG_LOOKUP_P flag of the non-dependent expression that's been built. (build_min_non_dep_op_overload): Instead, do it here. 2016-01-15 Jakub Jelinek PR bootstrap/68271 * parser.h (cp_token): Remove pragma_kind field. Add comment with number of unused bits. * parser.c (eof_token): Remove pragma_kind field initializer. (cp_lexer_get_preprocessor_token): Don't set pragma_kind field, don't clear CPP_PRAGMA u.value. (cp_parser_pragma_kind): New function. (cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel, cp_parser_omp_construct, cp_parser_initial_pragma, cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing pragma_kind field. 2016-01-15 Jason Merrill PR c++/68847 * call.c (build_cxx_call): Use fold_non_dependent_expr. * typeck2.c (cxx_incomplete_type_diagnostic): Use the location of value. PR c++/69257 * typeck.c (decay_conversion): Don't call mark_rvalue_use for array/function-to-pointer conversion. Call complete_type_or_maybe_complain for lvalue-to-rvalue conversion. * call.c (convert_like_real): Print call context if decay_conversion errors. 2016-01-14 Tom de Vries PR tree-optimization/68773 * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't set force_output. 2016-01-14 Jason Merrill PR c++/69261 * constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR. 2016-01-12 Marek Polacek PR c++/68979 * constexpr.c (cxx_eval_check_shift_p): Use permerror rather than error_at and adjust the return value. 2016-01-12 Jakub Jelinek PR objc++/68511 PR c++/69213 * cp-gimplify.c (cp_gimplify_expr) : Don't return GS_ERROR whenever seen_error (), only if *expr_p contains cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed. PR c++/66808 PR c++/69000 * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO. 2016-01-11 Jason Merrill PR c++/69131 * method.c (walk_field_subobs): Add dtor_from_ctor parm. (process_subob_fn): Likewise. Don't consider triviality if true. (synthesize_method_walk): Pass it. 2016-01-11 David Malcolm PR c++/68795 * parser.c (cp_parser_postfix_expression): Initialize close_paren_loc to UNKNOWN_LOCATION; only use it if it has been written to by cp_parser_parenthesized_expression_list. (cp_parser_parenthesized_expression_list): Document the behavior with respect to the CLOSE_PAREN_LOC param. 2016-01-11 Jakub Jelinek PR c++/69211 * cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR folded operands have side-effects, but folding changed any of them, build a new tree with the folded operands instead of returning the unfolded tree. 2016-01-09 Marek Polacek PR c++/69113 * decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set. 2016-01-09 Jakub Jelinek PR c++/69164 * class.c (layout_class_type): Use copy_node to copy FIELD_DECLs. 2016-01-08 Jason Merrill PR c++/69158 * constexpr.c (cxx_fold_indirect_ref): Handle array type differing in completion. 2016-01-08 Marek Polacek PR c++/68449 * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer. 2016-01-08 Jason Merrill * constexpr.c (cxx_eval_call_expression): Remove convert_to_void workaround. PR c++/68983 PR c++/67557 * cvt.c (convert_to_void): Don't strip a TARGET_EXPR of TREE_ADDRESSABLE type. PR c++/68983 PR c++/67557 * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR. 2016-01-05 Nathan Sidwell PR c++/58583 * pt.c (build_non_dependent_expr): Don't try a checking fold when parsing an nsdmi. 2016-01-04 Jakub Jelinek Update copyright years. Copyright (C) 2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.