2015-12-24 Jason Merrill PR c++/69005 * call.c (add_template_candidate_real): Don't try to deduce X(X). 2015-12-22 Jason Merrill PR c++/66921 * decl.c (cp_complete_array_type): Allow an initializer that already has array type. PR c++/67257 * parser.c (cp_parser_single_declaration): Reject a class template that also declares a variable. PR c++/67339 * parser.c (cp_parser_elaborated_type_specifier): Use CLASS_TYPE_P rather than check for RECORD_TYPE. 2015-12-22 Patrick Palka * pt.c (make_pack_expansion): Make sure to initialize ppd.type_pack_expansion_p. 2015-12-21 David Malcolm * typeck.c (cp_build_binary_op): Update for change in signature of build_binary_op. Use error_at to replace an implicit use of input_location with param "location" in "invalid operands" error. (cp_build_binary_op): Replace an error with an error_at, using "location", rather than implicitly using input_location. 2015-12-20 Jason Merrill PR c++/67411 * decl2.c (decl_maybe_constant_var_p): Use DECL_HAS_VALUE_EXPR_P. PR c++/67411 * lambda.c (generic_lambda_fn_p): Split out from... (maybe_add_lambda_conv_op): ...here. * semantics.c (process_outer_var_ref): Don't defer maybe-constant variables in a generic lambda. * pt.c (instantiate_non_dependent_or_null): New. * init.c (constant_value_1): Use it. * cp-tree.h: Declare it and generic_lambda_fn_p. PR c++/67411 * decl2.c (decl_maybe_constant_var_p): A proxy isn't constant. 2015-12-18 Patrick Palka PR c++/68978 * tree.c (lvalue_kind) [MODOP_EXPR]: New case. 2015-12-18 Paolo Carlini PR c++/67592 * decl.c (grokdeclarator): Reject constexpr virtual member functions; in error messages, prefer % and % to virtual and constexpr, respectively. 2015-12-18 Patrick Palka PR c++/68831 * init.c (build_delete): Use a warning sentinel to disable -Waddress warnings when building the conditional that tests if the operand is NULL. 2015-12-17 Jason Merrill PR c++/67550 * init.c (constant_value_1): Don't return a CONSTRUCTOR missing non-constant elements. PR c++/67576 PR c++/25466 * rtti.c (build_typeid): Use save_expr, not stabilize_reference. 2015-12-16 Patrick Palka PR c++/16333 PR c++/41426 PR c++/59879 PR c++/66895 * typeck.c (convert_for_initialization): Don't perform an early decaying conversion if converting to a class type. 2015-12-16 Patrick Palka * tree.c (cp_tree_operand_length): Define in terms of cp_tree_code_length. 2015-12-16 Martin Sebor PR objc++/68932 * decl.c (grokdeclarator): Avoid assuming ctype is non-null when checking the validity of a flexible array member. 2015-12-16 Paolo Carlini * pt.c (comp_template_args): Remove. (comp_template_args_with_info): Rename to comp_template_args; not static. (add_pending_template): Adjust call. * cp-tree.h (comp_template_args): Add default arguments. 2015-12-16 Jason Merrill PR c++/68309 * pt.c (instantiate_decl): Revert earlier change. PR c++/63628 * pt.c (tsubst_pack_expansion): Also make dummy decls if retrieve_local_specialization fails. 2015-12-16 David Malcolm * parser.c (cp_lexer_peek_conflict_marker): New function. (cp_parser_error): Detect conflict markers and report them as such. 2015-12-15 Martin Sebor PR c++/42121 PR c++/68478 PR c++/68613 PR c++/68689 PR c++/68710 * class.c (walk_subobject_offsets): Avoid assuming type domain is non-null or has an upper bound. (layout_class_type): Include type size in error message. (flexmems_t): New type. (field_nonempty_p, find_flexarrays, diagnose_flexarrays) (check_flexarrays): New functions. (finish_struct_1): Call check_flexarrays. * decl.c (compute_array_index_type): Distinguish flexible array members from zero-length arrays. (grokdeclarator): Reject flexible array members in unions. Avoid rejecting members of incomplete types that are flexible array members. * error.c (dump_type_suffix): Handle flexible array members with null upper bound. * init.c (perform_member_init): Same. * pt.c (instantiate_class_template_1): Allow flexible array members. (tsubst): Handle flexible array members with null upper bound. * typeck2.c (digest_init_r): Warn for initialization of flexible array members. (process_init_constructor_record): Handle flexible array members. 2015-12-15 Patrick Palka PR c++/21802 PR c++/53223 * cp-tree.h (cp_tree_code_length): Declare. (build_min_non_dep_op_overload): Declare. * tree.c (cp_tree_code_length): Define. (build_min_non_dep_op_overload): Define. (build_win_non_dep_call_vec): Copy the KOENIG_LOOKUP_P flag. * typeck.c (build_x_indirect_ref): Use build_min_non_dep_op_overload when the given expression has been resolved to an operator overload. (build_x_binary_op): Likewise. (build_x_array_ref): Likewise. (build_x_unary_op): Likewise. (build_x_compound_expr): Likewise. (build_x_modify_expr): Likewise. * decl2.c (grok_array_decl): Likewise. * call.c (build_new_op_1): If during template processing we chose an operator overload that is a hidden friend function, set the call's KOENIG_LOOKUP_P flag to 1. 2015-12-14 Jason Merrill PR c++/68309 * pt.c (instantiate_decl): Copy local_specializations for nested function. 2015-12-09 Paolo Carlini PR c++/60218 * semantics.c (calculate_bases_helper): Don't call dfs_walk_all when TYPE_BINFO (type) is null. (calculate_bases): Handle gracefully a null vector->length (). 2015-12-08 Martin Sebor PR c++/68711 * typeck.c (build_class_member_access_expr): Strip NOPs before testing a potentially null operand for equality to zero. 2015-12-07 Jakub Jelinek PR c++/68760 * error.c (dump_global_iord): Use DECL_SOURCE_FILE (t) instead of LOCATION_FILE (input_location). 2015-12-07 Ryan Burn PR c++/68683 * constraint.cc (satisfy_argument_deduction_constraint): Set TYPE_CANONICAL to NULL_TREE if PLACEHOLDER_TYPE_CONSTRAINTS are changed. 2015-12-07 Jason Merrill PR c++/68464 * cp-gimplify.c (cp_fold): Don't assume X has TREE_TYPE. (cp_genericize): Don't do cp_fold_r here. (cp_fold_function): New. * cp-tree.h: Declare it. * decl.c (finish_function): Call it and the pre-genericize plugin before NRV processing. PR c++/68170 * pt.c (maybe_new_partial_specialization): The injected-class-name is not a new partial specialization. * Make-lang.in (check-c++1z, check-c++-all): Use GXX_TESTSUITE_STDS. 2015-12-06 Jason Merrill * parser.c (struct tentative_firewall): New. (cp_parser_template_id, cp_parser_decltype_expr): Use it. * parser.h (struct cp_token): Tell GTY that CPP_DECLTYPE uses tree_check_value. * parser.c (cp_parser_decltype): Use tree_check_value. (saved_checks_value): New. (cp_parser_nested_name_specifier_opt): Use it. (cp_parser_template_id): Use it. (cp_parser_simple_type_specifier): Use it. (cp_parser_pre_parsed_nested_name_specifier): Use it. * semantics.c (finish_qualified_id_expr): Handle UNBOUND_CLASS_TEMPLATE. * parser.c (cp_parser_template_argument): Handle references in C++1z mode. * constexpr.c (potential_constant_expression_1): Don't error about TREE_THIS_VOLATILE on declarations. [COMPONENT_REF]: Don't consider the object if we're dealing with an overloaded function. * constraint.cc (strictly_subsumes): New. * cp-tree.h: Declare it. * pt.c (process_partial_specialization): Use it instead of subsumes_constraints. (maybe_new_partial_specialization): Do compare null constraints. * search.c (lookup_member): Handle currently_open_class returning null. PR c++/68597, fix auto9.C and auto-neg1.C with -std=c++1z. * decl.c (check_tag_decl): Use ds_type_spec in auto diagnostic. * typeck.c (check_return_expr): Check for inconsistent deduction. * parser.c (class type_id_in_expr_sentinel): New. (cp_parser_primary_expression) [RID_VA_ARG]: Use it. (cp_parser_new_expression): Use it. (cp_parser_trait_expr): Use it. (cp_parser_type_id_1): Complain about auto if in_type_id_in_expr_p. (cp_parser_default_type_template_argument): Check for auto. (cp_parser_type_id_list): Likewise. (cp_parser_simple_type_specifier): Allow auto parms if flag_concepts. * pt.c (do_auto_deduction): Handle erroneous type. 2015-12-04 Jason Merrill PR c++/68645 * parser.c (cp_parser_direct_declarator) (cp_parser_late_return_type_opt): Put Cilk+ attributes on declarator->attributes, not std_attributes. 2015-12-04 David Malcolm * cp-tree.h (class cp_expr): New class. (finish_parenthesized_expr): Convert return type and param to cp_expr. (perform_koenig_lookup): Convert return type and param from tree to cp_expr. (finish_increment_expr): Likewise. (finish_unary_op_expr): Likewise. (finish_id_expression): Likewise for return type. (build_class_member_access_expr): Likewise for param. (finish_class_member_access_expr): Likewise. (build_x_unary_op): Likewise. (build_c_cast): New decl. (build_x_modify_expr): Convert return type from tree to cp_expr. * cvt.c (cp_convert_and_check): When warning about conversions, attempt to use the location of "expr" if available, otherwise falling back to the old behavior of using input_location. * name-lookup.c (lookup_arg_dependent_1): Convert return type from tree to cp_expr. (lookup_arg_dependent): Likewise; also for local "ret". * name-lookup.h (lookup_arg_dependent): Likewise for return type. * parser.c (cp_lexer_previous_token): Skip past purged tokens. (struct cp_parser_expression_stack_entry): Convert field "lhs" to cp_expr. (cp_parser_identifier): Likewise for return type. Use cp_expr ctor to preserve the token's location. (cp_parser_string_literal): Likewise, building up a meaningful location for the case where a compound string literal is built by concatentation. (cp_parser_userdef_char_literal): Likewise for return type. (cp_parser_userdef_numeric_literal): Likewise. (cp_parser_statement_expr): Convert return type to cp_expr. Generate a suitable location for the expr and return it via the cp_expr ctor. (cp_parser_fold_expression): Convert return type to cp_expr. (cp_parser_primary_expression): Likewise, and for locals "expr", "lam", "id_expression", "decl". Use cp_expr ctor when parsing literals, to preserve the spelling location of the token. Preserve the locations of parentheses. Preserve location when calling objc_lookup_ivar. Preserve the location for "this" tokens. Generate suitable locations for "__builtin_va_arg" constructs and for Objective C 2.0 dot-syntax. Set the location for the result of finish_id_expression. (cp_parser_primary_expression): Convert return type from tree to cp_expr. (cp_parser_id_expression): Likewise. (cp_parser_unqualified_id): Likewise. Also for local "id". (cp_parser_postfix_expression): Likewise, also for local "postfix_expression". Generate suitable locations for C++-style casts, "_Cilk_spawn" constructs. Convert local "initializer" to cp_expr and use it to preserve the location of compound literals. Capture the location of the closing parenthesis of a call site via cp_parser_parenthesized_expression_list, and use it to build a source range for a call. Use cp_expr in ternary expression. (cp_parser_postfix_dot_deref_expression): Convert param from tree to cp_expr. Generate and set a location. (cp_parser_parenthesized_expression_list): Add "close_paren_loc" out-param, and write back to it. (cp_parser_unary_expression): Convert return type from tree to cp_expr. Also for locals "cast_expression" and "expression". Generate and use suitable locations for addresses of labels and for cast expressions. Call cp_expr::set_location where necessary. Preserve the locations of negated numeric literals. (cp_parser_new_expression): Generate meaningful locations/ranges. (cp_parser_cast_expression): Convert return type from tree to cp_expr; also for local "expr". Use the paren location to generate a meaningful range for the expression. (cp_parser_binary_expression): Convert return type from tree to cp_expr; also for local "rhs". Generate a meaningful location for the expression, and use it. Replace call to protected_set_expr_location by converting a build2 to a build2_loc and using the location in the call to build_x_binary_op, adding a cp_expr::set_location to the latter case. (cp_parser_question_colon_clause): Convert param from tree to cp_expr; also for local "assignment_expr". Set the spelling range of the expression. (cp_parser_assignment_expression): Likewise for return type and locals "expr" and "rhs". Build a meaningful spelling range for the expression. Remove saving of input_location in favor of a call to cp_expr::set_location. (cp_parser_expression): Convert return type and locals "expression" and "assignment_expression" to cp_expr. Build a meaningful spelling range for assignment expressions. (cp_parser_constant_expression): Likewise for return type and local "expression". (cp_parser_builtin_offsetof): Convert return type and local "expr" to cp_expr. Generate suitable locations. (cp_parser_lambda_expression): Convert return return type to cp_expr. (cp_parser_operator_function_id): Likewise. (cp_parser_operator): Likewise. Generate a meaningful range, using cp_expr's ctor to return it. (cp_parser_template_id): When converting a token to CPP_TEMPLATE_ID, update the location. (cp_parser_initializer_clause): Convert return type and local "initializer" to cp_expr. (cp_parser_braced_list): Likewise for return type. Generate suitable locations. (cp_parser_lookup_name): Likewise for return type. Use cp_expr's ctor to preserve the location_t of the name. (cp_parser_simple_cast_expression): Likewise for return type. (cp_parser_functional_cast): Convert return type and local "cast" to cp_expr. Generate suitable locations. (cp_parser_objc_expression): Convert return type to cp_expr.k Generate (cp_parser_objc_message_expression): Generate suitable locations. (cp_parser_objc_encode_expression): Convert return type to cp_expr. Generate suitable locations. (cp_parser_objc_protocol_expression): Generate suitable locations. (cp_parser_objc_selector_expression): Generate suitable locations. (cp_parser_omp_for_cond): Attempt to use the location of "cond" for the binary op. (cp_parser_transaction_expression): Issue the tm-not-enabled error at the location of the __transaction_foo token, rather than at input_location. * semantics.c (finish_parenthesized_expr): Convert return type and param to cp_expr. Preserve location. (perform_koenig_lookup): Likewise for return type and param. (finish_increment_expr): Likewise. Generate suitable locations. (finish_unary_op_expr): Likewise for return type and local "result". Generate suitable locations. (finish_id_expression): Convert return type to cp_expr and use cp_expr ctor to preserve location information. * typeck.c (build_class_member_access_expr): Convert param to cp_expr. (finish_class_member_access_expr): Likewise. (cp_build_binary_op): Convert a build2 to a build2_loc. (build_x_unary_op): Convert param from tree to cp_expr. (build_nop): Preserve the location of EXPR. (build_c_cast): Provide an overloaded variant that takes a cp_expr and returns a cp_expr. (build_x_modify_expr): Convert return type from tree to cp_expr. 2015-12-03 Cesar Philippidis * parser.c (cp_ensure_no_oacc_routine): Update error message. (cp_parser_oacc_routine): Likewise. (cp_parser_late_parsing_oacc_routine): Likewise. Update comment describing this function. (cp_finalize_oacc_routine): Update error message. 2015-12-02 Jason Merrill * Make-lang.in (check-c++1z, check-c++-all): New. 2015-12-02 Markus Trippelsdorf PR c++/67337 * mangle.c (write_template_prefix): Guard against context==NULL. 2015-12-02 Jason Merrill * call.c (build_new_op_1): Don't fold arguments to warn_logical_operator or maybe_warn_bool_compare. * cp-gimplify.c (cp_fold_maybe_rvalue, cp_fold_rvalue): New. (c_fully_fold): Use cp_fold_rvalue. (cp_fold): Use them for rvalue operands. * cp-gimplify.c (c_fully_fold): Define. * cp-gimplify.c (cp_fold): Use fold_build*. 2015-12-02 Joseph Myers PR c/68162 * tree.c (c_build_qualified_type): Add extra arguments. 2015-12-02 Eric Botcazou PR c++/68290 * constraint.cc (make_constrained_auto): Move to... * pt.c (make_auto_1): Add set_canonical parameter and set TYPE_CANONICAL on the type only if it is true. (make_decltype_auto): Adjust call to make_auto_1. (make_auto): Likewise. (splice_late_return_type): Likewise. (make_constrained_auto): ...here. Call make_auto_1 instead of make_auto and pass false. Set TYPE_CANONICAL directly. 2015-12-02 Thomas Schwinge * parser.c (cp_parser_omp_clause_name) (cp_parser_oacc_all_clauses): Alphabetical sorting. * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_USE_DEVICE. 2015-12-02 Andreas Arnez PR gcov-profile/68603 * cp-gimplify.c (genericize_cp_loop): For the back-jump's location use the start of the loop body only if the loop is unconditional. 2015-11-26 Andreas Arnez * cp-gimplify.c (genericize_cp_loop): Change LOOP_EXPR's location to start of loop body instead of start of loop. 2015-12-01 Julian Brown Cesar Philippidis James Norris * cp-tree.h (finish_oacc_host_data): Add prototype. * parser.c (cp_parser_omp_clause_name): Add use_device support. (cp_parser_oacc_all_clauses): Add use_device support. (OACC_HOST_DATA_CLAUSE_MASK): New macro. (cp_parser_oacc_host_data): New function. (cp_parser_omp_construct): Add host_data support. (cp_parser_pragma): Add host_data support. * semantics.c (finish_omp_clauses): Add use_device support. (finish_oacc_host_data): New function. 2015-11-27 Martin Liska PR c++/68312 * cp-array-notation.c (expand_sec_reduce_builtin): Likewise. (create_array_refs): Replace argument with const reference. (expand_an_in_modify_expr): Likewise. (cp_expand_cond_array_notations): Likewise. (expand_unary_array_notation_exprs): Likewise. 2015-11-27 Jakub Jelinek PR c/63326 * parser.c (cp_parser_statement): Clear in_compound after labels. 2015-11-27 Martin Liska * parser.c (cp_parser_late_parsing_cilk_simd_fn_info): Release tokens. 2015-11-26 Andreas Arnez * cp-gimplify.c (genericize_cp_loop): Change LOOP_EXPR's location to start of loop body instead of start of loop. 2015-11-26 Jakub Jelinek PR c++/68508 * cp-tree.h (cp_ubsan_maybe_instrument_downcast): Add INTYPE argument. * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise. Use it instead of or in addition to TREE_TYPE (op). Use is_properly_derived_from, return NULL_TREE if TREE_TYPE (intype) and TREE_TYPE (type) are the same type minus qualifiers. * typeck.c (build_static_cast_1): Adjust callers. 2015-11-25 Martin Sebor PR c++/67876 * pt.c (convert_template_argument): Make sure number of tree operands is greater than zero before attempting to extract one. 2015-11-25 Ryan Burn PR c++/68434 * pt.c (tsubst): Set PLACEHOLDER_TYPE_CONSTRAINTS before calling canonical_type_parameter. 2015-11-25 Jason Merrill * lambda.c (maybe_add_lambda_conv_op): Only set no_sanitize_undefined if SANITIZE_NULL. PR c++/67941 * lambda.c (maybe_add_lambda_conv_op): Mark _FUN as no_sanitize_undefined. * cp-ubsan.c (cp_ubsan_instrument_vptr_p): Use do_ubsan_in_current_function. 2015-11-25 Markus Trippelsdorf Paolo Carlini PR c++/68087 * constexpr.c (cxx_eval_array_reference): Use tree_fits_shwi_p before tree_to_shwi to avoid ICEs. 2015-11-24 Ilya Verbin * parser.c (cp_parser_oacc_declare): Replace "ifdef ENABLE_OFFLOADING" with "if (ENABLE_OFFLOADING)". 2015-11-23 Igor Zamyatin PR c++/68001 * cp-gimplify.c (cp_gimplify_expr): Stop the process if see an error. 2015-11-20 Jakub Jelinek PR c++/67354 * cp-tree.h (defer_mangling_aliases): Declare. (generate_mangling_aliases): New prototype. * decl2.c (defer_mangling_aliases): New variable. (note_mangling_alias): Use !defer_mangling_aliases instead of at_eof. (generate_mangling_aliases): No longer static. Clear defer_mangling_aliases. * optimize.c (maybe_thunk_body): Defer emitting mangling aliases if !defer_mangling_aliases until the fns are put into the same comdat group. 2015-11-19 David Malcolm * cp-tree.h (lookup_member_fuzzy): New decl. * search.c: Include spellcheck.h. (class lookup_field_fuzzy_info): New class. (lookup_field_fuzzy_info::fuzzy_lookup_fnfields): New. (lookup_field_fuzzy_info::fuzzy_lookup_field): New. (lookup_field_fuzzy_r): New. (lookup_member_fuzzy): New. * typeck.c (finish_class_member_access_expr): When issuing a "has no member named" error, call lookup_member_fuzzy, and offer any result as a suggestion. 2015-11-19 Torvald Riegel * except.c (do_free_exception): Use transactional wrapper. 2015-11-19 Jason Merrill PR c++/68422 * cp-tree.h (PACK_EXPANSION_SIZEOF_P): New. * parser.c (cp_parser_sizeof_pack): Set it. * pt.c (tsubst_copy) [SIZEOF_EXPR]: Likewise. (tsubst_pack_expansion): Improve T... shortcut for expression packs. 2015-11-19 Ryan Burn PR c++/68396 * pt.c (find_parameter_packs_r) [DECLTYPE_TYPE]: When traversing the DECLTYPE_TYPE_EXPR, set type_pack_expansion_p to false. 2015-11-19 Jakub Jelinek Manuel López-Ibáñez PR c++/67409 * decl.c (identify_goto): Add LOC and DIAG_KIND arguments, call emit_diagnostic instead of permerror. (check_previous_goto_1): Adjust identify_goto callers, treat all cases but crossing initialization and entering scope of decl with non-trivial dtor as unconditional hard errors. (check_goto): Use identify_goto. Treat all cases but crossing initialization and entering scope of decl with non-trivial dtor as unconditional hard errors. 2015-11-19 Cesar Philippidis * parser.h (struct cp_omp_declare_simd_data): Add clauses member. (struct cp_parser): Change type the of oacc_routine to cp_omp_declare_simd_data. * parser.c (cp_ensure_no_oacc_routine): Rework to use cp_omp_declare_simd_data. (cp_parser_simple_declaration): Remove boolean first. Update call to cp_parser_init_declarator. Don't NULL out oacc_routine. (cp_parser_init_declarator): Remove boolean first parameter. Update calls to cp_finalize_oacc_routine. (cp_parser_late_return_type_opt): Handle acc routines. (cp_parser_member_declaration): Remove first variable. Handle acc routines like omp declare simd. (cp_parser_function_definition_from_specifiers_and_declarator): Update call to cp_finalize_oacc_routine. (cp_parser_single_declaration): Update call to cp_parser_init_declarator. (cp_parser_save_member_function_body): Remove first_decl parameter. Update call to cp_finalize_oacc_routine. (cp_parser_finish_oacc_routine): Delete. (cp_parser_oacc_routine): Rework to use cp_omp_declare_simd_data. (cp_parser_late_parsing_oacc_routine): New function. (cp_finalize_oacc_routine): Remove first argument. Add more error handling and set the acc routine and 'omp declare target' attributes. (cp_parser_pragma): Remove unnecessary call to cp_ensure_no_oacc_routine. 2015-11-17 Cesar Philippidis * cp-gimplify.c (cp_fold_r): Add support for OACC_LOOP. 2015-11-17 Jason Merrill PR bootstrap/68346 * typeck.c (build_static_cast_1): Force a NOP when converting to the same type. * cp-tree.h (LITERAL_ZERO_P): Remove. * parser.c (cp_parser_postfix_expression, literal_zeros) (cp_parser_parenthesized_expression_list): Don't mess with it. * parser.c (cp_parser_unary_expression): Fold -constant here. * typeck.c (cp_build_unary_op): Not here. PR bootstrap/68361 * cvt.c (cp_convert_and_check): Use warning_sentinel to suppress -Wparentheses. 2015-11-16 Jason Merrill * constexpr.c (cxx_eval_builtin_function_call): Use cp_fully_fold to fold arguments to __builtin_constant_p. 2015-11-16 Kirill Yukhin * parser.c (cp_parser_late_parsing_cilk_simd_fn_info): Look for "simd" attribute as well. Update error message. 2015-11-14 Trevor Saunders * parser.c (cp_parser_omp_declare_target): Adjust. 2015-11-14 Trevor Saunders * vtable-class-hierarchy.c (vtv_generate_init_routine): Adjust. 2015-11-14 Jason Merrill PR bootstrap/68346 * call.c (build_new_op_1): Don't fold arguments to warn_tautological_cmp. 2015-11-14 Jakub Jelinek * semantics.c (finish_omp_clauses): Don't mark GOMP_MAP_FIRSTPRIVATE_POINTER decls addressable. 2015-11-13 Kai Tietz Marek Polacek Jason Merrill * call.c (build_conditional_expr_1, convert_like_real) (convert_arg_to_ellipsis, convert_for_arg_passing): Don't fold. (build_new_op_1, build_over_call, build_cxx_call): Fold for warnings. * class.c (build_base_path, determine_primary_bases) (update_vtable_entry_for_fn, check_bitfield_decl) (layout_nonempty_base_or_field, layout_empty_base) (propagate_binfo_offsets, include_empty_classes) (layout_class_type, build_vbase_offset_vtbl_entries): Use fold_convert. * constexpr.c (cxx_eval_builtin_function_call): Fold away the NOP_EXPR. (cxx_eval_call_expression): Handle MEM_REF. (cxx_eval_pointer_plus_expression): Fold the second operand. (cxx_eval_constant_expression): Handle MEM_REF, UNARY_PLUS_EXPR. (fold_simple_1, fold_simple): New. (maybe_constant_value_1): Factor out from maybe_constant_value. (cv_cache, maybe_constant_value): Cache results. (maybe_constant_init): Handle null input. (potential_constant_expression_1): Handle RESULT_DECL, EMPTY_CLASS_EXPR. * cp-array-notation.c (build_array_notation_ref): Fold operands. * cp-gimplify.c (cp_fold_r, cp_fold): New. (cp_genericize_r): Use fold_convert. Don't fold SIZEOF_EXPR. (cp_genericize): Fold everything. (contains_label_1, contains_label_p): New. (cp_fold, cp_fully_fold): New. * cp-tree.h (class cache_map): New. * cvt.c (cp_convert_to_pointer, ocp_convert): Use convert_to_*_nofold. (cp_convert_and_check): Use cp_fully_fold. (convert, convert_force): Don't fold. * decl.c (fold_sizeof_expr): Change from fold_sizeof_expr_r. (compute_array_index_type): Use cp_fully_fold. (build_enumerator): Use fold_convert. * decl2.c (get_guard_cond, set_guard): Use fold_convert. * init.c (build_zero_init_1): Fold zero-initializers. (build_new_1): Fold nelts calculations. (build_vec_delete_1): Fold conversions. (build_vec_init): Fold maxindex. * parser.c (cp_parser_binary_expression): Fold LHS of || and &&. (cp_parser_question_colon_clause): Fold LHS. * pt.c (convert_nontype_argument): Fold nullptr conversion. * semantics.c (finish_unary_op_expr): Fold for warnings. (handle_omp_array_sections_1): Fold length and low bound. (handle_omp_for_class_iterator): Fold various things. * tree.c (builtin_valid_in_constant_expr_p): Add BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE. (convert_bitfield_to_declared_type): Don't fold. (handle_init_priority_attribute): Fold. (fold_if_not_in_template): Remove. * typeck.c (decay_conversion, build_class_member_access_expr) (build_simple_component_ref, cp_build_array_ref, build_vec_cmp) (cp_pointer_int_sum, pointer_diff): Don't fold. (cp_build_binary_op): Fold for warnings and PMF ops. (cp_build_unary_op): Fold negation of a constant, nothing else. (expand_ptrmemfunc_cst): Fold operations. * typeck2.c (split_nonconstant_init): Fold initializer. (store_init_value): Likewise. (check_narrowing): Try folding. * config-lang.in (gtfiles): Add cp-gimplify.c. 2015-11-13 David Malcolm * error.c (pedwarn_cxx98): Pass line_table to rich_location ctor. 2015-11-12 James Norris * parser.c (cp_parser_oacc_declare): Remove unused. 2015-11-12 James Norris Joseph Myers * parser.c (cp_parser_omp_clause_name): Handle 'device_resident' clause. (cp_parser_oacc_data_clause): Handle PRAGMA_OACC_CLAUSE_DEVICE_RESIDENT and PRAGMA_OMP_CLAUSE_LINK. (cp_paser_oacc_all_clauses): Handle PRAGMA_OACC_CLAUSE_DEVICE_RESIDENT and PRAGMA_OMP_CLAUSE_LINK. (OACC_DECLARE_CLAUSE_MASK): New definition. (cp_parser_oacc_declare): New function. (cp_parser_pragma): Handle PRAGMA_OACC_DECLARE. * pt.c (tsubst_expr): Handle OACC_DECLARE. 2015-11-12 Jason Merrill * pt.c (check_explicit_specialization): Check the namespace after we choose a template. 2015-11-11 Jason Merrill * decl.c (duplicate_decls): When combining typedefs, remove the new type from the variants list. 2015-11-11 Jason Merrill * pt.c (instantiate_class_template_1): Set function_depth around instantiation of lambda op(). 2015-11-11 Marek Polacek PR c/68107 PR c++/68266 * decl.c (grokdeclarator): Call valid_array_size_p. Remove code checking the size of an array. 2015-11-11 Dominique d'Humieres PR bootstrap/68271 * parser.h (cp_token): Update pragma_kind to 8. 2015-11-11 Andrew MacLeod * call.c: Remove unused header files. * class.c: Likewise. * constexpr.c: Likewise. * cp-array-notation.c: Likewise. * cp-cilkplus.c: Likewise. * cp-gimplify.c: Likewise. * cp-lang.c: Likewise. * cp-objcp-common.c: Likewise. * cp-ubsan.c: Likewise. * cvt.c: Likewise. * cxx-pretty-print.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * dump.c: Likewise. * error.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * friend.c: Likewise. * g++spec.c: Likewise. * init.c: Likewise. * lambda.c: Likewise. * lex.c: Likewise. * mangle.c: Likewise. * method.c: Likewise. * name-lookup.c: Likewise. * optimize.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * ptree.c: Likewise. * repo.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. * vtable-class-hierarchy.c: Likewise. 2015-11-09 Cesar Philippidis * parser.c (cp_finalize_oacc_routine): New boolean first argument. (cp_ensure_no_oacc_routine): Update call to cp_finalize_oacc_routine. (cp_parser_simple_declaration): Maintain a boolean first to keep track of each new declarator. Propagate it to cp_parser_init_declarator. (cp_parser_init_declarator): New boolean first argument. Propagate it to cp_parser_save_member_function_body and cp_finalize_oacc_routine. (cp_parser_member_declaration): Likewise. (cp_parser_single_declaration): Update call to cp_parser_init_declarator. (cp_parser_save_member_function_body): New boolean first_decl argument. Propagate it to cp_finalize_oacc_routine. (cp_parser_finish_oacc_routine): New boolean first argument. Use it to determine if multiple declarators follow a routine construct. (cp_parser_oacc_routine): Update call to cp_parser_finish_oacc_routine. 2015-10-19 Martin Sebor PR c++/67913 PR c++/67927 * call.c (build_operator_new_call): Do not assume size_check is non-null, analogously to the top half of the function. * init.c (build_new_1): Detect and diagnose array sizes in excess of the maximum of roughly SIZE_MAX / 2. Insert a runtime check only for arrays with a non-constant size. (build_new): Detect and diagnose negative array sizes. 2015-11-09 Thomas Schwinge Cesar Philippidis James Norris Julian Brown Nathan Sidwell * parser.h (struct cp_parser): Add oacc_routine field. * parser.c (cp_ensure_no_oacc_routine): New. (cp_parser_new): Initialize oacc_routine field. (cp_parser_linkage_specification): Call cp_ensure_no_oacc_routine. (cp_parser_namespace_definition, cp_parser_class_specifier_1): Likewise. (cp_parser_init_declarator): Call cp_finalize_oacc_routine. (cp_parser_function_definition, cp_parser_save_member_function_body): Likewise. (OACC_ROUTINE_CLAUSE_MASK): New. (cp_parser_finish_oacc_routine, cp_parser_oacc_routine, cp_finalize_oacc_routine): New. (cp_parser_pragma): Adjust omp_declare_simd checking. Call cp_ensure_no_oacc_routine. (cp_parser_pragma): Add OpenACC routine handling. 2015-11-08 Martin Sebor PR c++/67942 * cp/init.c (warn_placement_new_too_small): Convert integer operand of POINTER_PLUS_EXPR to ssize_t to determine its signed value. 2015-11-06 David Malcolm * error.c (cp_printer): Update for new "caret_p" param for textinfo::set_location. (pedwarn_cxx98): Update for change in signature of diagnostic_set_info. 2015-11-06 Jason Merrill Support non-type constrained-type-specifiers. * parser.c (check_type_concept): Remove. (cp_parser_maybe_constrained_type_specifier): Don't call it. (synthesize_implicit_template_parm): Handle non-type and template template parameters. Also compare extra args. Return the decl. (cp_parser_template_argument): Handle constrained-type-specifiers for non-type template parameters. (finish_constrained_template_template_parm): Split out from cp_parser_constrained_template_template_parm. (cp_parser_nonclass_name): Move some logic into cp_parser_maybe_concept_name. (cp_parser_init_declarator): Fix error recovery. (get_concept_from_constraint): Remove. (cp_parser_simple_type_specifier): Adjust for synthesize_implicit_template_parm returning the decl. * constraint.cc (placeholder_extract_concept_and_args) (equivalent_placeholder_constraints): Also handle TYPE_DECL constrained parms. * pt.c (push_inline_template_parms_recursive): Don't recreate the CONST_DECL. 2015-11-06 Kyrylo Tkachov * init.c (warn_placement_new_too_small): Use %wu format rather than %lu when printing bytes_avail. 2015-11-05 Cesar Philippidis Thomas Schwinge James Norris * parser.c (cp_parser_omp_clause_name): Add support for PRAGMA_OACC_CLAUSE_INDEPENDENT and PRAGMA_OACC_CLAUSE_TILE. (cp_parser_oacc_shape_clause): Allow pointer variables as gang static arguments. (cp_parser_oacc_clause_tile): New function. (cp_parser_omp_clause_default): Add is_oacc argument. Handle default(none) in OpenACC. (cp_parser_oacc_all_clauses): Add support for (cp_parser_omp_all_clauses): Update call to cp_parser_omp_clause_default. PRAGMA_OACC_CLAUSE_{DEFAULT,INDEPENDENT,TILE,PRIVATE,FIRSTPRIVATE}. (OACC_LOOP_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_{PRIVATE,INDEPENDENT, TILE}. (OACC_KERNELS_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT. (OACC_PARALLEL_MASK): Add PRAGMA_OACC_CLAUSE_{DEFAULT,PRIVATE, FIRSTPRIVATE}. (cp_parser_oacc_update): Update the error message for missing clauses. * semantics.c (finish_omp_clauses): Add support for OMP_CLAUSE_INDEPENDENT and OMP_CLAUSE_TILE. 2015-11-05 Martin Sebor PR c++/67942 * cp/init.c (warn_placement_new_too_small): Avoid assuming the size of the first operand of placement new or its type is known. 2015-11-05 Martin Sebor PR c++/67942 * cp/init.c (warn_placement_new_too_small): New function. (build_new_1): Call it. 2015-11-05 Paolo Carlini PR c++/67846 * parser.c (cp_parser_lambda_body): Check lambda_return_type return value. * typeck2.c (cxx_incomplete_type_diagnostic): Print member or member function used invalidly. 2015-11-05 Jakub Jelinek Ilya Verbin * cp-tree.h (finish_omp_for): Add ORIG_INITS argument. (omp_privatize_field): Add SHARED argument. * parser.c: Include context.h. (cp_parser_omp_clause_schedule): Parse schedule modifiers, diagnose monotonic together with nonmonotonic. (cp_parser_omp_clause_linear): Add DECLARE_SIMD argument. Parse parameter name as linear step as id-expression rather than expression. (cp_parser_omp_all_clauses): Adjust caller. (cp_parser_omp_for_loop_init): Add ORIG_INIT argument, initialize it. Adjust omp_privatize_field caller. (cp_parser_omp_for_loop): Compute orig_inits, pass it's address to finish_omp_for. (OMP_DISTRIBUTE_CLAUSE_MASK): Add lastprivate clause. (cp_parser_omp_target_data, cp_parser_omp_target_enter_data, cp_parser_omp_target_exit_data): Allow GOMP_MAP_ALWAYS_POINTER and GOMP_MAP_FIRSTPRIVATE_REFERENCE. (cp_parser_omp_target): Likewise. Evaluate num_teams and thread_limit expressions on combined target teams before the target. (cp_parser_omp_declare_target): If decl has "omp declare target" or "omp declare target link" attribute, and cgraph or varpool node already exists, then set corresponding flags. Call finish_omp_clauses in the parenthesized extended-list syntax case. Call cp_parser_require_pragma_eol instead of cp_parser_skip_to_pragma_eol. (cp_parser_omp_end_declare_target): Call cp_parser_require_pragma_eol instead of cp_parser_skip_to_pragma_eol. * decl2.c (cplus_decl_attributes): Don't diagnose block scope vars inside declare target. * pt.c (tsubst_omp_clauses): If OMP_CLAUSE_LINEAR_VARIABLE_STRIDE, use tsubst_omp_clause_decl instead of tsubst_expr on OMP_CLAUSE_LINEAR_STEP. Handle non-static data members in shared clauses. (tsubst_omp_for_iterator): Adjust omp_privatize_field caller. (tsubst_find_omp_teams): New function. (tsubst_expr): Evaluate num_teams and thread_limit expressions on combined target teams before the target. Use OMP_FOR_ORIG_DECLS for all OpenMP/OpenACC/Cilk+ looping constructs. Adjust finish_omp_for caller. * semantics.c (omp_privatize_field): Add SHARED argument, if true, always create artificial var and never put it into the hash table or vector. (handle_omp_array_sections_1): Adjust omp_privatize_field caller. Allow non-zero low-bound on OMP_CLAUSE_REDUCTION array sections. (handle_omp_array_sections): For structure element based array sections use GOMP_MAP_ALWAYS_POINTER instead of GOMP_MAP_FIRSTPRIVATE_POINTER. Encode low-bound into the MEM_REF, either into the constant offset, or for variable low-bound using POINTER_PLUS_EXPR. (finish_omp_clauses): Adjust omp_privatize_field caller. Drop generic_field_head, structure elements are now always mapped even as array section bases, diagnose same var in data sharing and mapping clauses. For references map what they refer to using GOMP_MAP_ALWAYS_POINTER for structure elements and GOMP_MAP_FIRSTPRIVATE_REFERENCE otherwise. Diagnose if linear step on declare simd is neither a constant nor a uniform parameter. Allow non-static data members on shared clauses. Look through POINTER_PLUS_EXPR for array section reductions. Diagnose nonmonotonic modifier on kinds other than dynamic or guided or nonmonotonic modifier together with ordered clause. Diagnose the same var or function appearing multiple times on the same directive. Fix up wording for the to clause if t is neither a FUNCTION_DECL nor a VAR_DECL, use special wording for OVERLOADs and TEMPLATE_ID_EXPR. (handle_omp_for_class_iterator): Add ORIG_DECLS argument. Call c_omp_check_loop_iv_exprs on cond. (finish_omp_for): Add ORIG_INITS argument. Call c_omp_check_loop_iv_exprs on ORIG_INITS elements. Adjust handle_omp_for_class_iterator caller. Call c_omp_check_loop_iv. Call add_stmt. (finish_omp_atomic): Adjust c_finish_omp_atomic caller. 2015-11-04 Cesar Philippidis * (cp_parser_oacc_single_int_clause): New function. (cp_parser_oacc_clause_vector_length): Delete. (cp_parser_omp_clause_num_gangs): Delete. (cp_parser_omp_clause_num_workers): Delete. (cp_parser_oacc_all_clauses): Use cp_parser_oacc_single_int_clause for num_gangs, num_workers and vector_length. 2015-11-04 Mikhail Maltsev * call.c (validate_conversion_obstack): Define unconditionally. * constexpr.c (maybe_constant_value, fold_non_dependent_expr): Use gcc_checking_assert. * cp-tree.h: Use CHECKING_P instead of ENABLE_CHECKING. * decl2.c (cxx_post_compilation_parsing_cleanups): Use flag_checking. * mangle.c (add_substitution): Likewise. * method.c (maybe_explain_implicit_delete): Likewise. * parser.c (cp_parser_template_argument_list): Remove conditional compilation. * pt.c (check_unstripped_args): Rename to... (verify_unstripped_args): ... this and remove conditional compilation. (retrieve_specialization): Guard call of verify_unstripped_args with flag_checking. (template_parm_to_arg): Remove conditional compilation. (template_parms_to_args, coerce_template_parameter_pack, coerce_template_parms): Likewise. (tsubst_copy): Use flag_checking. (type_unification_real): Remove conditional compilation. (build_non_dependent_expr): Use flag_checking. * tree.c (build_target_expr): Remove conditional compilation, use gcc_checking_assert. * typeck.c (comptypes): Likewise. * typeck2.c (digest_init_r): Likewise. 2015-11-03 Jason Merrill * pt.c (struct find_parameter_pack_data): Add type_pack_expansion_p field. (find_parameter_packs_r): Use it to turn 'auto' into a parameter pack. (uses_parameter_packs, make_pack_expansion) (check_for_bare_parameter_packs, fixed_parameter_pack_p): Set it. 2015-11-03 Thomas Schwinge Chung-Lin Tang * parser.c (cp_parser_omp_construct, cp_parser_pragma): Handle PRAGMA_OACC_ATOMIC. 2015-10-31 Ville Voutilainen Remove the implementation of N3994, terse range-for loops. * parser.c (cp_parser_for_init_statement): Remove the parsing of a terse range-for. 2015-10-31 Jason Merrill Implement multiple 'auto' feature from Concepts TS. * parser.c (cp_parser_type_id_1): Allow 'auto' if -fconcepts. (cp_parser_template_type_arg): Likewise. (get_concept_from_constraint): Split out most logic to... * constraint.cc (placeholder_extract_concept_and_args): ...here. (equivalent_placeholder_constraints, hash_placeholder_constraint): New. * cxx-pretty-print.c (pp_cxx_constrained_type_spec): New. * cxx-pretty-print.h: Declare it. * error.c (dump_type) [TEMPLATE_TYPE_PARM]: Call it. * pt.c (is_auto_r, extract_autos_r, extract_autos, auto_hash): New. (type_uses_auto): Use is_auto_r. (do_auto_deduction): Handle multiple 'auto's if -fconcepts. * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Compare constraints. * pt.c (for_each_template_parm_r): Use WALK_SUBTREE. Return a meaningful value rather than error_mark_node. (for_each_template_parm): Return a tree. (uses_template_parms_level): Return bool. * cp-tree.h: Adjust. * pt.c (unify): Don't diagnose no common base if we already have the same template. (do_auto_deduction): Explain deduction failure. * pt.c (hash_tmpl_and_args): Use iterative_hash_object on template uid. * parser.c (synthesize_implicit_template_parm) (finish_fully_implicit_template): Make static. 2015-10-29 Andrew MacLeod * call.c: Reorder #include's and remove duplicates. * class.c: Likewise. * constexpr.c: Likewise. * cp-array-notation.c: Likewise. * cp-cilkplus.c: Likewise. * cp-gimplify.c: Likewise. * cp-lang.c: Likewise. * cp-objcp-common.c: Likewise. * cp-ubsan.c: Likewise. * cvt.c: Likewise. * cxx-pretty-print.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * dump.c: Likewise. * error.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * friend.c: Likewise. * init.c: Likewise. * lambda.c: Likewise. * lex.c: Likewise. * mangle.c: Likewise. * method.c: Likewise. * name-lookup.c: Likewise. * optimize.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * ptree.c: Likewise. * repo.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. * vtable-class-hierarchy.c: Likewise. 2015-10-29 Paolo Carlini PR c++/67845 * decl.c (grokfndecl): In case of erroneous cv-qualified non-member functions consistently reset TREE_TYPE (decl) too. 2015-10-28 Jason Merrill DR 1518 * class.c (type_has_user_provided_or_explicit_constructor): New. (check_bases_and_members): Use it. * cp-tree.h: Declare it. 2015-10-27 Cesar Philippidis Thomas Schwinge James Norris Joseph Myers Julian Brown Nathan Sidwell Bernd Schmidt * parser.c (cp_parser_omp_clause_name): Add auto, gang, seq, vector, worker. (cp_parser_oacc_simple_clause): New. (cp_parser_oacc_shape_clause): New. (cp_parser_oacc_all_clauses): Add auto, gang, seq, vector, worker. (OACC_LOOP_CLAUSE_MASK): Likewise. * semantics.c (finish_omp_clauses): Add auto, gang, seq, vector, worker. Unify the handling of teams, tasks and vector_length with the other loop shape clauses. 2015-10-27 Thomas Schwinge James Norris Cesar Philippidis PR c/64765 PR c/64880 * cp-tree.h (finish_oacc_kernels, finish_oacc_parallel): Don't declare functions. (finish_omp_construct): Declare function. * parser.c (cp_parser_oacc_loop): Add p_name, mask, cclauses formal parameters, and handle these. Adjust all users. (cp_parser_oacc_kernels, cp_parser_oacc_parallel): Merge functions into... (cp_parser_oacc_kernels_parallel): ... this new function. Adjust all users. * semantics.c (finish_oacc_kernels, finish_oacc_parallel): Merge functions into... (finish_omp_construct): ... this new function. 2015-10-25 Jason Merrill DR 2179 * pt.c (process_partial_specialization): Handle error_mark_node from most_specialized_partial_spec. 2015-10-23 Jason Merrill DR 1518 DR 1630 PR c++/54835 PR c++/60417 * call.c (convert_like_real): Value-initialization can't use explicit constructors in C++11 and up. PR c++/67813 * constexpr.c (cxx_eval_store_expression): Always use *valp if set. 2015-10-22 Jason Merrill * call.c (add_template_conv_candidate): Pass DEDUCE_CALL. (add_template_candidate_real): Handle it. * pt.c (fn_type_unification): Handle it. * call.c (add_conv_candidate): Remove first_arg parm. (add_template_conv_candidate): Likewise. (add_template_candidate_real): Don't pass it. (build_op_call_1): Likewise. 2015-10-22 Richard Biener * semantics.c (cp_finish_omp_clause_depend_sink): Properly convert before folding a MINUS_EXPR. (finish_omp_clauses): Likewise. 2015-10-21 Paolo Carlini PR c++/66781 * parser.c (cp_parser_enum_specifier): Upon error_at set nested_name_specifier to error_mark_node; improve error message. 2015-10-21 Paolo Carlini PR c++/67847 * parser.c (cp_parser_enum_specifier): Reject a nested_name_specifier which doesn't name a class or namespace. 2015-10-21 Ilya Enkovich * call.c (build_conditional_expr_1): Use boolean vector type for vector comparison. * typeck.c (build_vec_cmp): New. (cp_build_binary_op): Use build_vec_cmp for comparison. 2015-10-20 Jason Merrill PR c++/66583 * init.c (innermost_aggr_scope): New. (build_field_list): Change uses_unions_p to uses_unions_or_anon_p. (sort_mem_initializers): Handle initializers for entire anonymous aggregates. 2015-10-20 Marek Polacek * parser.c (is_cilkplus_vector_p): Don't define here. 2015-10-19 Jason Merrill PR c++/67064 * semantics.c (force_paren_expr): Don't mess with hard register vars. Implement N4268, Do constant evaluation of all non-type template args. * parser.c (cp_parser_template_argument): For C++1z just parse a constant-expression. * pt.c (convert_nontype_argument): For C++1z always call maybe_constant_value. * constexpr.c (cxx_eval_constant_expression): Expand PTRMEM_CST only when necessary. (cxx_eval_component_reference): Like here. * decl2.c (lower_var_init): And here. (c_parse_final_cleanups): Call it. * typeck2.c (digest_init_r): Not here. * decl.c (complete_vars): Or here. (cp_finish_decl): Add local statics to symbol table. 2015-10-17 Jason Merrill PR c++/68006 * decl.c (implicit_default_ctor_p): New. (start_preparsed_function): Don't clobber on entry to one. 2015-10-16 Paolo Carlini PR c++/67926 * constexpr.c (potential_constant_expression_1): Handle UNARY_LEFT_FOLD_EXPR, UNARY_RIGHT_FOLD_EXPR, BINARY_LEFT_FOLD_EXPR, BINARY_RIGHT_FOLD_EXPR. 2015-10-13 Jakub Jelinek Aldy Hernandez * class.c (finish_struct_1): Call finish_omp_declare_simd_methods. * cp-gimplify.c (cp_gimplify_expr): Handle OMP_TASKLOOP. (cp_genericize_r): Likewise. (cxx_omp_finish_clause): Don't diagnose references. (cxx_omp_disregard_value_expr): New function. * cp-objcp-common.h (LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR): Redefine. * cp-tree.h (OMP_FOR_GIMPLIFYING_P): Document for OMP_TASKLOOP. (DECL_OMP_PRIVATIZED_MEMBER): Define. (finish_omp_declare_simd_methods, push_omp_privatization_clauses, pop_omp_privatization_clauses, save_omp_privatization_clauses, restore_omp_privatization_clauses, omp_privatize_field, cxx_omp_disregard_value_expr): New prototypes. (finish_omp_clauses): Add two new arguments. (finish_omp_for): Add ORIG_DECLV argument. * parser.c (cp_parser_lambda_body): Call save_omp_privatization_clauses and restore_omp_privatization_clauses. (cp_parser_omp_clause_name): Handle OpenMP 4.5 clauses. (cp_parser_omp_var_list_no_open): Handle structure elements for map, to and from clauses. Handle array sections in reduction clause. Parse this keyword. Formatting fixes. (cp_parser_omp_clause_if): Add IS_OMP argument, handle parsing of if clause modifiers. (cp_parser_omp_clause_num_tasks, cp_parser_omp_clause_grainsize, cp_parser_omp_clause_priority, cp_parser_omp_clause_hint, cp_parser_omp_clause_defaultmap): New functions. (cp_parser_omp_clause_ordered): Parse optional parameter. (cp_parser_omp_clause_reduction): Handle array reductions. (cp_parser_omp_clause_schedule): Parse optional simd modifier. (cp_parser_omp_clause_nogroup, cp_parser_omp_clause_orderedkind): New functions. (cp_parser_omp_clause_linear): Parse linear clause modifiers. (cp_parser_omp_clause_depend_sink): New function. (cp_parser_omp_clause_depend): Parse source/sink depend kinds. (cp_parser_omp_clause_map): Parse release/delete map kinds and optional always modifier. (cp_parser_oacc_all_clauses): Adjust cp_parser_omp_clause_if and finish_omp_clauses callers. (cp_parser_omp_all_clauses): Likewise. Parse OpenMP 4.5 clauses. Parse "to" as OMP_CLAUSE_TO_DECLARE if on declare target directive. (OMP_CRITICAL_CLAUSE_MASK): Define. (cp_parser_omp_critical): Parse critical clauses. (cp_parser_omp_for_incr): Use cp_tree_equal if processing_template_decl. (cp_parser_omp_for_loop_init): Return tree instead of bool. Handle non-static data member iterators. (cp_parser_omp_for_loop): Handle doacross loops, adjust finish_omp_for and finish_omp_clauses callers. (cp_omp_split_clauses): Adjust finish_omp_clauses caller. (OMP_SIMD_CLAUSE_MASK): Add simdlen clause. (cp_parser_omp_simd): Allow ordered clause if it has no parameter. (OMP_FOR_CLAUSE_MASK): Add linear clause. (cp_parser_omp_for): Disallow ordered clause when combined with distribute. Disallow linear clause when combined with distribute and not combined with simd. (OMP_ORDERED_CLAUSE_MASK, OMP_ORDERED_DEPEND_CLAUSE_MASK): Define. (cp_parser_omp_ordered): Add CONTEXT argument, return bool instead of tree, parse clauses and if depend clause is found, don't parse a body. (cp_parser_omp_parallel): Disallow copyin clause on target parallel. Allow target parallel without for after it. (OMP_TASK_CLAUSE_MASK): Add priority clause. (OMP_TARGET_DATA_CLAUSE_MASK): Add use_device_ptr clause. (cp_parser_omp_target_data): Diagnose no map clauses or clauses with invalid kinds. (OMP_TARGET_UPDATE_CLAUSE_MASK): Add depend and nowait clauses. (OMP_TARGET_ENTER_DATA_CLAUSE_MASK, OMP_TARGET_EXIT_DATA_CLAUSE_MASK): Define. (cp_parser_omp_target_enter_data, cp_parser_omp_target_exit_data): New functions. (OMP_TARGET_CLAUSE_MASK): Add depend, nowait, private, firstprivate, defaultmap and is_device_ptr clauses. (cp_parser_omp_target): Parse target parallel and target simd. Set OMP_TARGET_COMBINED on combined constructs. Parse target enter data and target exit data. Diagnose invalid map kinds. (cp_parser_oacc_cache): Adjust finish_omp_clauses caller. (OMP_DECLARE_TARGET_CLAUSE_MASK): Define. (cp_parser_omp_declare_target): Parse OpenMP 4.5 forms of this construct. (OMP_TASKLOOP_CLAUSE_MASK): Define. (cp_parser_omp_taskloop): New function. (cp_parser_omp_construct): Don't handle PRAGMA_OMP_ORDERED here, handle PRAGMA_OMP_TASKLOOP. (cp_parser_pragma): Handle PRAGMA_OMP_ORDERED here directly, handle PRAGMA_OMP_TASKLOOP, call push_omp_privatization_clauses and pop_omp_privatization_clauses around parsing calls. (cp_parser_cilk_for): Adjust finish_omp_clauses caller. * pt.c (apply_late_template_attributes): Adjust tsubst_omp_clauses and finish_omp_clauses callers. (tsubst_omp_clause_decl): Return NULL if decl is NULL. For TREE_LIST, copy over OMP_CLAUSE_DEPEND_SINK_NEGATIVE bit. Use tsubst_expr instead of tsubst_copy, undo convert_from_reference effects. (tsubst_omp_clauses): Add ALLOW_FIELDS argument. Handle new OpenMP 4.5 clauses. Use tsubst_omp_clause_decl for more clauses. If ALLOW_FIELDS, handle non-static data members in the clauses. Clear OMP_CLAUSE_LINEAR_STEP if it has been cleared before. (omp_parallel_combined_clauses): New variable. (tsubst_omp_for_iterator): Add ORIG_DECLV argument, recur on OMP_FOR_ORIG_DECLS, handle non-static data member iterators. Improve handling of clauses on combined constructs. (tsubst_expr): Call push_omp_privatization_clauses and pop_omp_privatization_clauses around instantiation of certain OpenMP constructs, improve handling of clauses on combined constructs, handle OMP_TASKLOOP, adjust tsubst_omp_for_iterator, tsubst_omp_clauses and finish_omp_for callers, handle clauses on critical and ordered, handle OMP_TARGET_{ENTER,EXIT}_DATA. (instantiate_decl): Call save_omp_privatization_clauses and restore_omp_privatization_clauses around instantiation. (dependent_omp_for_p): Fix up comment typo. Handle SCOPE_REF. * semantics.c (omp_private_member_map, omp_private_member_vec, omp_private_member_ignore_next): New variables. (finish_non_static_data_member): Return dummy decl for privatized non-static data members. (omp_clause_decl_field, omp_clause_printable_decl, omp_note_field_privatization, omp_privatize_field): New functions. (handle_omp_array_sections_1): Fix comment typo. Add IS_OMP argument, handle structure element bases, diagnose bitfields, pass IS_OMP recursively, diagnose known zero length array sections in depend clauses, handle array sections in reduction clause, diagnose negative length even for pointers. (handle_omp_array_sections): Add IS_OMP argument, use auto_vec for types, pass IS_OMP down to handle_omp_array_sections_1, handle array sections in reduction clause, set OMP_CLAUSE_MAP_MAYBE_ZERO_LENGTH_ARRAY_SECTION if map could be zero length array section, use GOMP_MAP_FIRSTPRIVATE_POINTER for IS_OMP. (finish_omp_reduction_clause): Handle array sections and arrays. Use omp_clause_printable_decl. (finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink): New functions. (finish_omp_clauses): Add ALLOW_FIELDS and DECLARE_SIMD arguments. Handle new OpenMP 4.5 clauses and new restrictions for the old ones, handle non-static data members, reject this keyword when not allowed. (push_omp_privatization_clauses, pop_omp_privatization_clauses, save_omp_privatization_clauses, restore_omp_privatization_clauses): New functions. (handle_omp_for_class_iterator): Handle OMP_TASKLOOP class iterators. Add collapse and ordered arguments. Fix handling of lastprivate iterators in doacross loops. (finish_omp_for): Add ORIG_DECLV argument, handle doacross loops, adjust c_finish_omp_for, handle_omp_for_class_iterator and finish_omp_clauses callers. Fill in OMP_CLAUSE_LINEAR_STEP on simd loops with non-static data member iterators. 2015-10-12 Ville Voutilainen PR c++/58566 * lambda.c (lambda_return_type): Return error_mark_node instead of void_type_node for the error cases. 2015-10-08 Jason Merrill * cp-tree.h (SIMPLE_TARGET_EXPR_P): New. * init.c (get_nsdmi): Use it. * typeck2.c (massage_init_elt): Use it. 2015-10-07 Jason Merrill PR c++/67557 * call.c (is_base_field_ref): New. (unsafe_copy_elision_p): New. (build_over_call): Use it. 2015-10-07 Marek Polacek PR sanitizer/67867 * search.c (accessible_p): Initialize OTYPE to NULL_TREE. 2015-10-07 Marek Polacek * cp-gimplify.c (genericize_if_stmt): Use protected_set_expr_location. (genericize_cp_loop): Likewise. * decl.c (cxx_maybe_build_cleanup): Likewise. * parser.c (cp_parser_binary_expression): Likewise. (cp_parser_omp_for_loop): Likewise. (cp_parser_omp_construct): Likewise. * semantics.c (finish_transaction_stmt): Likewise. (build_transaction_expr): Likewise. 2015-10-06 Jason Merrill PR c++/67810 * parser.c (cp_parser_fold_expr_p): Remove. (is_binary_op): New. (cp_parser_fold_expression): Take LHS as parameter. (cp_parser_primary_expression): Call it after parsing an expression. (cp_parser_binary_expression, cp_parser_assignment_operator_opt) (cp_parser_expression): Ignore an operator followed by '...'. (is_binary_op): New. * pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold) (tsubst_unary_right_fold, tsubst_binary_right_fold): Handle errors. 2015-10-06 Marek Polacek PR c++/67863 * call.c (build_conditional_expr_1): Build the COND_EXPR with a location. 2015-10-05 Paolo Carlini PR c++/53856 * pt.c (check_default_tmpl_args): Per [temp.param]/9, do not reject default template arguments in out of class definitions of members of non-template classes. 2015-10-05 Richard Sandiford * tree.c (cp_tree_equal): Use real_equal instead of REAL_VALUES_EQUAL. 2015-10-04 Jason Merrill Implement N4514, C++ Extensions for Transactional Memory. * cp-tree.h (struct cp_declarator): Add tx_qualifier field. (BCS_NORMAL, BCS_TRANSACTION): New enumerators. * lex.c (init_reswords): Limit TM kewords to -fgnu-tm. * parser.c (cp_lexer_get_preprocessor_token): Fix @synchronized. (make_call_declarator): Take tx_qualifier. (cp_parser_tx_qualifier_opt): New. (cp_parser_lambda_declarator_opt): Use it. (cp_parser_direct_declarator): Likewise. (cp_parser_statement): Handle atomic_noexcept, atomic_cancel. (cp_parser_compound_statement): Change in_try parameter to bcs_flags. (cp_parser_std_attribute): Map optimize_for_synchronized to transaction_callable. (cp_parser_transaction): Take the token. Handle atomic_noexcept. * lambda.c (maybe_add_lambda_conv_op): Handle transaction-safety. * call.c (enum conversion_kind): Add ck_tsafe. (standard_conversion): Handle transaction-safety conversion. (convert_like_real, resolve_address_of_overloaded_function): Likewise. (check_methods): Diagnose transaction_safe_dynamic on non-virtual function. (look_for_tm_attr_overrides): Don't inherit transaction_safe_dynamic. * cvt.c (tx_safe_fn_type_p, tx_unsafe_fn_variant) (can_convert_tx_safety): New. * typeck.c (composite_pointer_type): Handle transaction-safety. * name-lookup.h (enum scope_kind): Add sk_transaction. * name-lookup.c (begin_scope): Handle it. * semantics.c (begin_compound_stmt): Pass it. * decl.c (check_previous_goto_1): Check it. (struct named_label_entry): Add in_transaction_scope. (poplevel_named_label_1): Set it. (check_goto): Check it. (duplicate_decls): A specialization can be transaction_safe independently of its template. (grokdeclarator): Handle tx-qualifier. * rtti.c (ptr_initializer): Handle transaction-safe. * search.c (check_final_overrider): Check transaction_safe_dynamic. Don't check transaction_safe. * mangle.c (write_function_type): Mangle transaction_safe here. (write_CV_qualifiers_for_type): Not here. (write_type): Preserve transaction_safe when stripping attributes. * error.c (dump_type_suffix): Print transaction_safe. 2015-10-02 Marek Polacek PR c/64249 * parser.c (cp_parser_statement): Add CHAIN parameter and pass it down to cp_parser_selection_statement. (cp_parser_selection_statement): Add CHAIN parameter. Add code to warn about duplicated if-else-if conditions. (cp_parser_implicitly_scoped_statement): Add CHAIN parameter and pass it down to cp_parser_statement. 2015-10-01 Ville Voutilainen PR c++/54430 * name-lookup.c (push_binding): Make non-static. * name-lookup.h (push_binding): Declare it. * parser.c (cp_parser_range_for): Use it, get the range declaration away from the scope until the range expression has been parsed, then restore the declaration. 2015-09-23 Ville Voutilainen Fix small typos in the coding rule enforcement warnings. * parser.c (cp_parser_namespace_definition): Replace 'namepace' with 'namespace'. 2015-09-22 Nathan Sidwell * decl.c (xref_basetypes): Check virtual and/or multiple inheritance warning. * parser.c (cp_parser_namespace_definition): Check namespaces warning. * pt.c (push_template_decl_real): Check templates warning. 2015-09-22 Jason Merrill * mangle.c (abi_warn_or_compat_version_crosses): New. Use it instead of abi_version_crosses. (mangle_decl): Deal with -fabi-compat-version and -Wabi separately. 2015-09-21 Ville Voutilainen Complete the implementation of N4230, Nested namespace definition. * parser.c (cp_parser_namespace_definition): Support namespace attributes both before and after the namespace identifier. 2015-09-19 Trevor Saunders * cp-gimplify.c (gimplify_must_not_throw_expr): Adjust. 2015-09-18 Ville Voutilainen Implement nested namespace definitions. * parser.c (cp_parser_namespace_definition): Grok nested namespace definitions. 2015-09-18 Manuel López-Ibáñez * parser.c (pragma_lex): Add loc argument. Rearrange the code to make it more similar to the C version. 2015-09-17 Andrew Sutton Jason Merrill Implement N4295 fold-expressions. * cp-tree.def: Add UNARY_LEFT_FOLD_EXPR, UNARY_RIGHT_FOLD_EXPR, BINARY_LEFT_FOLD_EXPR, BINARY_RIGHT_FOLD_EXPR. * cp-objcp-common.c (cp_common_init_ts): Handle them. * cp-tree.h (FOLD_EXPR_CHECK, BINARY_FOLD_EXPR_CHECK, FOLD_EXPR_P) (FOLD_EXPR_MODIFY_P, FOLD_EXPR_OP, FOLD_EXPR_PACK, FOLD_EXPR_INIT): New. * parser.c (cp_parser_skip_to_closing_parenthesis): Split out... (cp_parser_skip_to_closing_parenthesis_1): This function. Change or_comma parameter to or_ttype. (cp_parser_fold_operator, cp_parser_fold_expr_p) (cp_parser_fold_expression): New. (cp_parser_primary_expression): Use them. * pt.c (expand_empty_fold, fold_expression, tsubst_fold_expr_pack) (tsubst_fold_expr_init, expand_left_fold, tsubst_unary_left_fold) (tsubst_binary_left_fold, expand_right_fold) (tsubst_unary_right_fold, tsubst_binary_right_fold): New. (tsubst_copy): Use them. (type_dependent_expression_p): Handle fold-expressions. * semantics.c (finish_unary_fold_expr) (finish_left_unary_fold_expr, finish_right_unary_fold_expr) (finish_binary_fold_expr): New. 2015-09-17 Richard Biener * cp-tree.h (note_decl_for_pch): Remove. * class.c (build_clone): Do not call note_decl_for_pch. * semantics.c (finish_member_declaration): Likewise. (note_decl_for_pch): Remove. * decl2.c (c_parse_final_cleanups): Mangle all globals before writing the PCH. 2015-09-14 Jason Merrill PR c++/44282 * mangle.c (write_CV_qualifiers_for_type): Also warn about regparm mangling with lower -fabi-version. 2015-09-14 Paolo Carlini PR c++/51911 * parser.c (cp_parser_new_expression): Enforce 5.3.4/2 (as amended per the spirit of DR 1467). 2015-09-11 Mark Wielaard PR c/28901 * cp-objcp-common.c (cxx_warn_unused_global_decl): Remove hard-coded VAR_P TREE_READONLY override. 2015-09-10 Paolo Carlini PR c++/67318 * parser.c (cp_parser_parameter_declaration): Consume the ellipsis and set template_parameter_pack_p also when the type is null. 2015-09-09 Mark Wielaard * typeck.c (cp_build_binary_op): Check and warn when nonnull arg parm against NULL. 2015-09-10 Jakub Jelinek PR c++/67522 * semantics.c (handle_omp_array_sections_1): Only run type_dependent_expression_p on VAR_DECL/PARM_DECLs. (finish_omp_clauses) : Likewise. Don't adjust OMP_CLAUSE_LINEAR_STEP if OMP_CLAUSE_DECL is not a VAR_DECL/PARM_DECL. PR c++/67511 * semantics.c (handle_omp_for_class_iterator): Don't wrap error_mark_node into a NOP_EXPR to void_type_node. 2015-09-09 Paolo Carlini PR c++/53184 * decl2.c (constrain_class_visibility): Use Wsubobject-linkage. 2015-09-09 Jakub Jelinek PR c++/67504 * parser.c (cp_parser_omp_clause_collapse): Test tree_fits_shwi_p before INTEGRAL_TYPE_P test. 2015-09-08 Jason Merrill PR c++/67041 * pt.c (tsubst_copy_and_build): Handle variables like functions. 2015-09-08 Paolo Carlini PR c++/67369 * pt.c (tsubst_copy, [case FUNCTION_DECL]): Do not call tsubst if the first argument isn't a template. 2015-09-03 Martin Sebor PR c/66516 * cp-tree.h (mark_rvalue_use, decay_conversion): Add new argument(s). * expr.c (mark_rvalue_use): Use new argument. * call.c (build_addr_func): Call decay_conversion with new argument. * pt.c (convert_template_argument): Call reject_gcc_builtin. * typeck.c (decay_conversion): Use new argument. (c_decl_implicit): Define. 2015-09-02 Balaji V. Iyer PR middle-end/60586 * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): New function. (cp_gimplify_expr): Added a call to the function cilk_cp_gimplify_call_params_in_spawned_fn. 2015-09-01 Paolo Carlini PR c++/61753 * decl.c (smallest_type_quals_location): New. (check_special_function_return_type): Use the latter; add int and const location_t* parameters. (grokdeclarator): Adjust check_special_function_return_type call. 2015-08-29 Markus Trippelsdorf PR c++/67371 * constexpr.c (potential_constant_expression_1): Remove IF_STMT case. Move label to COND_EXPR case. Remove checking of SWITCH_STMT_BODY. 2015-08-22 Paolo Carlini PR c++/63693 * pt.c (resolve_typename_type): Use CLASSTYPE_PRIMARY_TEMPLATE_TYPE only on class types. 2015-08-21 Jason Merrill PR c++/67240 * constraint.cc (satisfy_implicit_conversion_constraint): Also check for NULL_TREE. 2015-08-21 Paolo Carlini * decl.c (grokvardecl): Simplify the latter. 2015-08-21 Paolo Carlini * decl.c (grokvardecl): Complete check added for c++/67065. 2015-08-20 Jason Merrill * name-lookup.c (hidden_name_p): Handle OVERLOAD. 2015-08-20 Paolo Carlini PR c++/67065 * decl.c (grokvardecl): Reject 'main' as global variable. 2015-08-19 Jason Merrill PR c++/66957 * search.c (protected_accessible_p): Remove redundant access_in_type. Add otype parm instead of walking binfo. (friend_accessible_p): Check SCOPE itself. Handle class templates. Pass through otype. (dfs_accessible_post): Handle all accessibility cases. (dfs_accessible_pre): New. (accessible_p): Use it. Don't check protected access here. Pass decl and otype to dfs_walk. (member_declared_in_type, dfs_access_in_type_pre): New. (access_in_type): Use dfs_access_in_type_pre. * friend.c (add_friend): Fix multiple friends with the same name. * lambda.c (current_nonlambda_scope): New. 2015-08-18 Trevor Saunders * call.c, class.c, cp-tree.h, decl.c, except.c, mangle.c, method.c, name-lookup.h, parser.c, parser.h, rtti.c, semantics.c, typeck2.c: Remove useless typedefs. 2015-08-18 Jason Merrill DR 1155 * pt.c (convert_nontype_argument): Allow internal linkage in C++11 and up. 2015-08-17 Paolo Carlini PR c++/67216 * call.c (null_ptr_cst_p): In C++11 return 'false' for 'false'. 2015-08-17 Jason Merrill PR c++/67244 * pt.c (tsubst_copy_and_build): Call insert_pending_capture_proxies. PR c++/67104 * constexpr.c (array_index_cmp, find_array_ctor_elt): New. (cxx_eval_array_reference, cxx_eval_store_expression): Use them. * constexpr.c (cxx_eval_store_expression): Don't set CONSTRUCTOR_NO_IMPLICIT_ZERO if we have an enclosing CONSTRUCTOR without it. (cxx_eval_array_reference): Check it. * except.c (check_noexcept_r): Assert that fn is POINTER_TYPE_P. 2015-08-14 Jason Merrill PR c++/65974 * decl2.c (mark_vtable_entries): Suppress -Wdeprecated. 2015-08-12 Jason Merrill PR c++/67104 * constexpr.c (cxx_eval_array_reference): Fix typo. PR c++/67104 * constexpr.c (cxx_eval_array_reference): Handle sparse CONSTRUCTORs. PR c++/67108 * decl2.c (c_parse_final_cleanups): Set at_eof to 2 at end. * error.c (dump_template_bindings): Don't tsubst in that case. PR c++/67161 * error.c (dump_decl) [TEMPLATE_ID_EXPR]: Pass TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS. 2015-08-08 Jason Merrill PR c++/67152 * pt.c (process_partial_specialization): Call associate_classtype_constraints. PR c++/67159 * constraint.cc (finish_template_introduction): SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT. PR c++/67142 * pt.c (equal): Make sure tmpl is actually a template. PR c++/67144 * call.c (joust): Only call more_constrained on decls. 2015-08-06 Andrew Sutton Braden Obrzut Jason Merrill Ville Voutilainen Add C++ Concepts TS support. * constraint.cc, logic.cc: New files. * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add constraint.o and logic.o. (c++.tags): Also process .cc files. * call.c (enum rejection_reason_code): Add rr_constraint_failure. (print_z_candidate): Handle it. (constraint_failure): New. (add_function_candidate): Check constraints. (build_new_function_call): Handle evaluating concepts. (joust): Check more_constrained. * class.c (add_method): Check equivalently_constrained. (build_clone): Copy constraints. (currently_open_class): Return tree. (resolve_address_of_overloaded_function): Check constraints. * constexpr.c (cxx_eval_constant_expression): Handle REQUIRES_EXPR. (potential_constant_expression_1): Likewise. * cp-objcp-common.c (cp_tree_size): Handle CONSTRAINT_INFO. (cp_common_init_ts): Handle WILDCARD_DECL and REQUIRES_EXPR. * cp-tree.def: Add CONSTRAINT_INFO, WILDCARD_DECL, REQUIRES_EXPR, SIMPLE_REQ, TYPE_REQ, COMPOUND_REQ, NESTED_REQ, PRED_CONSTR, EXPR_CONSTR, TYPE_CONSTR, ICONV_CONSTR, DEDUCT_CONSTR, EXCEPT_CONSTR, PARM_CONSTR, CONJ_CONSTR, DISJ_CONSTR. * cp-tree.h (struct tree_constraint_info, check_nonnull) (check_constraint_info, CI_TEMPLATE_REQS, CI_DECLARATOR_REQS) (CI_ASSOCIATED_CONSTRAINTS, CI_NORMALIZED_CONSTRAINTS) (CI_ASSUMPTIONS, TEMPLATE_PARMS_CONSTRAINTS) (TEMPLATE_PARM_CONSTRAINTS, COMPOUND_REQ_NOEXCEPT_P) (PLACEHOLDER_TYPE_CONSTRAINTS, PRED_CONSTR_EXPR, EXPR_CONSTR_EXPR) (TYPE_CONSTR_TYPE, ICONV_CONSTR_EXPR, ICONV_CONSTR_TYPE) (DEDUCT_CONSTR_EXPR, DEDUCT_CONSTR_PATTERN) (DEDUCT_CONSTR_PLACEHOLDER, EXCEPT_CONSTR_EXPR, PARM_CONSTR_PARMS) (PARM_CONSTR_OPERAND, CONSTRAINT_VAR_P, CONSTRAINED_PARM_CONCEPT) (CONSTRAINED_PARM_EXTRA_ARGS, CONSTRAINED_PARM_PROTOTYPE) (DECL_DECLARED_CONCEPT_P, WILDCARD_PACK_P, struct cp_unevaluated) (struct local_specialization_stack, enum auto_deduction_context) (variable_concept_p, concept_template_p) (struct deferring_access_check_sentinel): New. (enum cp_tree_node_structure_enum): Add TS_CP_CONSTRAINT_INFO. (union lang_tree_node): Add constraint_info field. (struct lang_decl_base): Add concept_p flag. (enum cp_decl_spec): Add ds_concept. (struct cp_declarator): Add requires_clause. * cxx-pretty-print.c (cxx_pretty_printer::primary_expression) (cxx_pretty_printer::expression): Handle REQUIRES_EXPR, TRAIT_EXPR, *_CONSTR. (pp_cxx_parameter_declaration_clause): Accept a chain of PARM_DECLs. (cxx_pretty_printer::declarator): Print requires-clause. (pp_cxx_template_declaration): Likewise. (pp_cxx_trait_expression): Handle CPTK_IS_SAME_AS. (pp_cxx_requires_clause, pp_cxx_requirement) (pp_cxx_requirement_list, pp_cxx_requirement_body) (pp_cxx_requires_expr, pp_cxx_simple_requirement) (pp_cxx_type_requirement, pp_cxx_compound_requirement) (pp_cxx_nested_requirement, pp_cxx_predicate_constraint) (pp_cxx_expression_constraint, pp_cxx_type_constraint) (pp_cxx_implicit_conversion_constraint) (pp_cxx_argument_deduction_constraint) (pp_cxx_exception_constraint, pp_cxx_parameterized_constraint) (pp_cxx_conjunction, pp_cxx_disjunction, pp_cxx_constraint): New. * cxx-pretty-print.h: Declare them. * decl.c (decls_match): Compare constraints. (duplicate_decls): Likewise. Remove constraints before freeing. (cxx_init_decl_processing): Call init_constraint_processing. (cp_finish_decl): Diagnose concept without initializer. (grokfndecl, grokvardecl): Handle concepts and constraints. (grokdeclarator): Handle concept, requires-clause. (grokparms): No longer static. (xref_tag_1): Check constraints. (finish_function): Call check_function_concept. (cp_tree_node_structure): Handle CONSTRAINT_INFO. (check_concept_refinement, is_concept_var, check_concept_fn): New. * decl2.c (check_classfn): Compare constraints. (mark_used): Don't instantiate concepts. * error.c (dump_template_decl): Print constraints. (dump_function_decl): Likewise. (dump_expr): Handle REQUIRES_EXPR, *_REQ, *_CONSTR. * lex.c (init_reswords): Set D_CXX_CONCEPTS. * method.c (implicitly_declare_fn): Copy constraints from inherited ctor. * parser.h (struct cp_parser): Add in_result_type_constraint_p and prevent_constrained_type_specifiers fields. * parser.c (make_call_declarator): Add requires_clause parm. (cp_parser_new): Clear prevent_constrained_type_specifiers. (cp_parser_primary_expression): Handle RID_IS_SAME_AS, RID_REQUIRES. (cp_parser_postfix_expression): Set prevent_constrained_type_specifiers. (cp_parser_trait_expr): Handle RID_IS_SAME_AS. (cp_parser_declaration): Handle concept introduction. (cp_parser_member_declaration): Likewise. (cp_parser_template_parameter): Handle constrained parameter. (cp_parser_type_parameter): Handle constraints. (cp_parser_decl_specifier_seq): Handle RID_CONCEPT. (cp_parser_template_id): Handle partial concept id. (cp_parser_type_name): Add overload that takes typename_keyword_p. Handle constrained parameter. (cp_parser_nonclass_name): Handle concept names. (cp_parser_alias_declaration): Handle constraints. (cp_parser_late_return_type_opt): Also handle requires-clause. (cp_parser_type_id_1): Handle deduction constraint. (cp_parser_parameter_declaration): Handle constrained parameters. (cp_parser_class_specifier_1): Handle constraints. (cp_parser_template_declaration_after_parameters): Split out from cp_parser_template_declaration_after_export. (cp_parser_single_declaration): Handle constraints. (synthesize_implicit_template_parm): Handle constraints. (cp_parser_maybe_concept_name, cp_parser_maybe_partial_concept_id) (cp_parser_introduction_list, get_id_declarator) (get_unqualified_id, is_constrained_parameter) (cp_parser_check_constrained_type_parm) (cp_parser_constrained_type_template_parm) (cp_parser_constrained_template_template_parm) (constrained_non_type_template_parm, finish_constrained_parameter) (declares_constrained_type_template_parameter) (declares_constrained_template_template_parameter) (check_type_concept, cp_parser_maybe_constrained_type_specifier) (cp_parser_maybe_concept_name, cp_parser_maybe_partial_concept_id) (cp_parser_requires_clause, cp_parser_requires_clause_opt) (cp_parser_requires_expression) (cp_parser_requirement_parameter_list, cp_parser_requirement_body) (cp_parser_requirement_list, cp_parser_requirement) (cp_parser_simple_requirement, cp_parser_type_requirement) (cp_parser_compound_requirement, cp_parser_nested_requirement) (cp_parser_template_introduction) (cp_parser_explicit_template_declaration) (get_concept_from_constraint): New. * pt.c (local_specialization_stack): Implement. (maybe_new_partial_specialization): New. (maybe_process_partial_specialization): Use it. (retrieve_local_specialization, register_local_specialization) (template_parm_to_arg, build_template_decl, extract_fnparm_pack) (tsubst_expr): No longer static. (spec_hasher::equal): Compare constraints. (determine_specialization): Handle constraints. (check_explicit_specialization): Handle concepts. (process_template_parm): Handle constraints. (end_template_parm_list): Add overload taking no arguments. (process_partial_specialization): Handle concepts and constraints. Register partial specializations of variable templates. (redeclare_class_template): Handle constraints. (convert_template_argument): Handle WILDCARD_DECL. Check is_compatible_template_arg. (coerce_template_parameter_pack): Handle wildcard packs. (coerce_template_parms): DR 1430 also applies to concepts. Add overloads taking fewer parameters. (lookup_template_class_1): Handle constraints. (lookup_template_variable): Concepts are always bool. (finish_template_variable): Handle concepts and constraints. (tsubst_friend_class): Handle constraints. (gen_elem_of_pack_expansion_instantiation): Handle constraints. (tsubst_pack_expansion): Handle local parameters. (tsubst_decl) [FUNCTION_DECL]: Handle constraints. (tsubst) [TEMPLATE_TYPE_PARM]: Handle deduction constraints. (tsubst_copy_and_build): Handle REQUIRES_EXPR. (more_specialized_fn, more_specialized_partial_spec): Check constraints. (more_specialized_inst): Split out from most_specialized_instantiation. (most_specialized_partial_spec): Check constraints. (instantiate_decl): Never instantiate a concept. (value_dependent_expression_p): Handle REQUIRES_EXPR, TYPE_REQ, variable concepts. (type_dependent_expression_p): Handle WILDCARD_DECL, REQUIRES_EXPR. (instantiation_dependent_r): Handle REQUIRES_EXPR and concepts. (do_auto_deduction): Add overload taking tsubst flags and context enum. Handle constraints. (get_template_for_ordering, most_constrained_function) (is_compatible_template_arg, convert_wildcard_argument) (struct constr_entry, struct constr_hasher, decl_constraints) (valid_constraints_p, get_constraints, set_constraints) (remove_constraints, init_constraint_processing): New. * ptree.c (cxx_print_xnode): Handle CONSTRAINT_INFO. * search.c (lookup_member): Do lookup in the open partial instantiation. * semantics.c (finish_template_template_parm): Handle constraints. (fixup_template_type): New. (finish_template_type): Call it. (trait_expr_value, finish_trait_expr): Handle CPTK_IS_SAME_AS. * tree.c (cp_tree_equal): Handle local parameters, CONSTRAINT_INFO. (cp_walk_subtrees): Handle REQUIRES_EXPR. * typeck.c (cp_build_function_call_vec): Check constraints. 2015-08-06 Jason Merrill PR c++/66533 * parser.c (cp_parser_primary_expression): Don't skip to the end of the statement if we're parsing tentatively. PR c++/67130 PR c++/67131 PR c++/66260 * mangle.c (write_expression) [TEMPLATE_ID_EXPR]: Handle variable templates. * pt.c (tsubst_copy_and_build): Check for argument substitution failure. 2015-08-05 Jason Merrill * pt.c (determine_specialization): Print candidates after 'no match' error. * decl.c (cp_finish_decl): Tidy. * typeck.c (finish_class_member_access_expr): Use type_dependent_expression_p. * semantics.c (finish_id_expression): Use type_dependent_expression_p. Don't build_qualified_name for a decl in non-dependent scope. * pt.c (type_dependent_expression_p): A TEMPLATE_ID_EXPR of an identifier is dependent. Remove variable_template_p check. PR c++/66260 PR c++/66596 PR c++/66649 PR c++/66923 * pt.c (lookup_template_variable): Use NULL_TREE for type. (instantiate_template_1): Also set DECL_TI_ARGS based on the immediate parent. (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: Handle variable templates. (finish_template_variable): Add complain parm. * cp-tree.h: Adjust. PR c++/65195 PR c++/66619 * semantics.c (finish_id_expression): Call convert_from_reference for variable template. 2015-08-04 Jason Merrill * pt.c (lookup_template_class_1): Clear elt.spec. * tree.c (build_target_expr): Copy the location from value. 2015-08-02 Patrick Palka * parser.c (cp_parser_selection_statement): Move handling of semicolon body to ... (cp_parser_implicitly_scoped_statement): .. here. Call warn_for_misleading_indentation even when the body is a semicolon. Extract token_indent_infos corresponding to the guard, body and next tokens. Adjust call to warn_for_misleading_indentation accordingly. Take token_indent_info argument. (cp_parser_already_scoped_statement): Likewise. (cp_parser_selection_statement, cp_parser_iteration_statement): Extract a token_indent_info corresponding to the guard token. 2015-08-01 Caroline Tice PR 66521 * mangle.c : Add vtable-verify.h to include files. (get_mangled_vtable_map_var_name): If the DECL_ASSEMBLER_NAME is "" get the real mangled name for the class instead, and also store the real mangled name in a vector for use later. 2015-07-31 Marek Polacek PR sanitizer/66977 * typeck.c (get_member_function_from_ptrfunc): Don't sanitize RSHIFT_EXPR. 2015-07-30 Paolo Carlini * class.c (check_for_override): Use DECL_SOURCE_LOCATION and "%qD" in warning_at instead of "%q+D" in warning. (warn_hidden): Likewise but use location_of. (finish_struct_anon_r): Likewise use DECL_SOURCE_LOCATION in permerror. (check_bitfield_decl, check_field_decls): Likewise in warning_at. (check_field_decls): Likewise for permerror. (explain_non_literal_class): Likewise for inform. (check_bases_and_members, layout_class_type): Likewise for warning_at. (note_name_declared_in_class): Use location_of in permerror. * name-lookup.c (diagnose_name_conflict): Use location_of in inform. (pushdecl_maybe_friend_1): Use DECL_SOURCE_LOCATION in pedwarn, inform, and warning_at. (check_for_out_of_scope_variable): Likewise for warning_at and permerror. 2015-07-30 Jason Merrill DR 1558 PR c++/67021 * pt.c (tsubst_decl) [TYPE_DECL]: Clear TYPE_DEPENDENT_P_VALID. 2015-07-28 Paolo Carlini * call.c (build_op_delete_call, convert_like_real, build_over_call): Use Use DECL_SOURCE_LOCATION and "%qD" in inform and pedwarn instead of "%q+D". * constexpr.c (explain_invalid_constexpr_fn): Likewise. * decl.c (duplicate_decls): Likewise for warning/warning_at. * except.c (maybe_noexcept_warning): Likewise. * friend.c (make_friend_class): Likewise for inform. * mangle.c (mangle_decl): Likewise for warning/warning_at. * method.c (process_subob_fn, walk_field_subobs, maybe_explain_implicit_delete): Likewise for inform. * parser.c (cp_parser_lambda_introducer): Likewise. * pt.c (check_specialization_namespace, maybe_process_partial_specialization): Likewise for permerror. (redeclare_class_template): Likewise for inform_n. (coerce_template_parms, tsubst_copy_and_build): Likewise for inform. * search.c (check_final_overrider): Likewise. * semantics.c (process_outer_var_ref): Likewise. 2015-07-27 Jason Merrill * constexpr.c (cxx_eval_call_expression): Don't add this call to the hash table if !depth_ok. 2015-07-27 Marek Polacek PR c++/66555 PR c/54979 * call.c (build_new_op_1): Call warn_tautological_cmp. * pt.c (tsubst_copy_and_build): Use sentinel to suppress tautological compare warnings. 2015-07-26 Patrick Palka PR c++/18969 * typeck.c (check_return_expr): Also do the basic return-value validity checking if processing_template_decl and yet types are not dependent. Remove obsolete code. 2015-07-26 Paolo Carlini * decl.c (poplevel): Use Use DECL_SOURCE_LOCATION and "%qD" in warning_at instead of "%q+D" in warning. (warn_extern_redeclared_static): Likewise for inform. (check_redeclaration_no_default_args): Likewise for permerror. (duplicate_decls): Likewise. (check_previous_goto_1): Likewise for inform. (check_goto, start_decl, check_for_uninitialized_const_var, start_preparsed_function, finish_function§): Likewise. * decl2.c (build_anon_union_vars, c_parse_final_cleanups): Likewise. * init.c (sort_mem_initializers): Likewise. * typeck.c (convert_for_initialization): Likewise for inform. (maybe_warn_about_returning_address_of_local): Likewise. * typeck2.c (abstract_virtuals_error_sfinae): Likewise for inform. (cxx_incomplete_type_diagnostic): Likewise for emit_diagnostic. 2015-07-25 Patrick Palka PR c++/66857 * cvt.c (ocp_convert): Don't call scalar_constant_value when converting to a class type. 2015-07-24 Jason Merrill PR c++/64969 * pt.c (splice_late_return_type): Correct deduced return type for abbreviated function template. 2015-07-24 Richard Biener * init.c (build_vec_init): Build iterator bound in the same type as the iterator. 2015-07-23 Marek Polacek PR c++/66572 * pt.c (tsubst_copy_and_build): Add warn_logical_op sentinel. 2015-07-23 Paolo Carlini PR c++/52987 * parser.c (cp_parser_simple_declaration): Robustify check avoiding redundant error messages. 2015-07-21 Paolo Carlini * decl.c (grokdeclarator): For an erroneous template parameter propagate error_mark_node as type. 2015-07-20 Marek Polacek PR c++/55095 * typeck.c (cp_build_binary_op): Warn about left shift overflows. 2015-07-15 Jason Merrill PR c++/65091 * parser.c (cp_parser_unqualified_id): Don't accept ~x in a template if there is no type x in scope. 2015-07-14 Patrick Palka PR c++/66850 * pt.c (redeclare_class_template): Set the DECL_CONTEXTs of each template template parm in the redeclaration. (lookup_template_class_1): Peel off irrelevant template levels from current_template_parms before augmenting the argument list. 2015-07-14 Andrea Azzarone PR c++/65071 * parser.c (cp_parser_sizeof_pack): Also consider template template parameters. 2015-07-14 Jason Merrill * call.c (build_new_method_call_1): Call reshape_init. 2015-07-14 Paolo Carlini * pt.c (check_template_shadow): Emit error + inform instead of two errors. 2015-07-13 Patrick Palka PR c++/65186 * pt.c (invalid_nontype_parm_type_p): Accept a bound template template parm type under C++11 and later. 2015-07-12 Aldy Hernandez * call.c: Fix double word typos. * cp-array-notation.c: Same. * cp-tree.h: Same. * init.c: Same. * name-lookup.c: Same. * parser.c: Same. 2015-07-10 Patrick Palka PR c++/30044 * pt.c (begin_template_parm_list): Add a dummy parameter level to current_template_parms. (end_template_parm_list): Remove the dummy parameter level before adding the real one. (tsubst): Don't attempt to substitute for template parameters corresponding to a dummy argument level. (template_parms_to_args): Remove obsolete hack for giving template template arguments the proper level. (splite_late_return_type): Remove obsolete hack for giving template template arguments the proper level. * error.c (dump_template_decl): Don't print dummy template levels. 2015-07-10 Paolo Carlini PR c++/54521 * call.c (convert_like_real): Do not set LOOKUP_ONLYCONVERTING for the second step of copy-initialization. 2015-07-10 Jason Merrill * pt.c (find_parameter_packs_r): Handle variable templates. (variable_template_specialization_p): New. * cp-tree.h: Declare it. * parser.c (cp_parser_template_id): SET_EXPR_LOCATION. 2015-07-10 Eric Botcazou * decl2.c (cpp_check): Revert latest change. 2015-07-09 Jason Merrill * pt.c (instantiation_dependent_r) [TRAIT_EXPR]: Call value_dependent_expression_p. * cp-tree.h (struct cp_parameter_declarator): Rename ellipsis_p to template_parameter_pack_p. * parser.c (declarator_can_be_parameter_pack): False if parameter_pack_p is set. (make_parameter_declarator): Add template_parameter_pack_p parm. (cp_parser_template_parameter): Remove parameter pack parsing. (cp_parser_parameter_declaration): Handle all parameter packs. Tweak default argument permerror. 2015-07-09 Andrew Sutton * parser.c (cp_parser_default_type_template_argument) (cp_parser_default_template_template_argument): Factor out from cp_parser_type_parameter. 2015-07-09 Paolo Carlini * typeck.c (warn_args_num): Rename to error_args_num. (convert_arguments): Adjust calls. 2015-07-09 Andrew MacLeod * cp-ubsan.c: Don't include alloc-pool.h or lto-streamer.h. 2015-07-08 Eric Botcazou * decl2.c (cpp_check): Deal with IS_CONSTEXPR. 2015-07-08 Jakub Jelinek * decl.c (grokfndecl): Handle flag_openmp_simd like flag_openmp. * pt.c (apply_late_template_attributes): Likewise. 2015-07-08 Marek Polacek PR c++/66748 * tree.c (handle_abi_tag_attribute): Check for CLASS_TYPE_P before accessing TYPE_LANG_SPECIFIC node. 2015-07-07 Andrew MacLeod * call.c: Adjust includes. * class.c: Likewise. * constexpr.c: Likewise. * cp-array-notation.c: Likewise. * cp-gimplify.c: Likewise. * cp-lang.c: Likewise. * cp-objcp-common.c: Likewise. * cp-ubsan.c: Likewise. * cvt.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * dump.c: Likewise. * error.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * friend.c: Likewise. * init.c: Likewise. * lambda.c: Likewise. * lex.c: Likewise. * mangle.c: Likewise. * method.c: Likewise. * name-lookup.c: Likewise. * optimize.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * ptree.c: Likewise. * repo.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. 2015-07-07 Eric Botcazou * decl2.c (cpp_check): Deal with IS_MOVE_CONSTRUCTOR. 2015-07-06 Jason Merrill * pt.c (reduce_template_parm_level): Also build the TYPE_DECL for a template template parameter. (tsubst_decl) [TEMPLATE_DECL]: Use the TEMPLATE_DECL built by reduce_template_parm_level. * pt.c (argument_pack_element_is_expansion_p): A decl pack is an expansion. 2015-07-02 Jason Merrill PR c++/66743 * pt.c (for_each_template_parm_r) [UNDERLYING_TYPE]: Use TYPE_VALUES_RAW rather than TYPE_FIELDS. 2015-07-02 Andrew Sutton * pt.c (type_dependent_expression_p): Handle expressions that refer to variable templates. 2015-07-01 Jason Merrill * lex.c (init_reswords): s/CXX0X/CXX11/. * parser.c (cp_lexer_get_preprocessor_token): Likewise. * mangle.c (write_CV_qualifiers_for_type, write_nested_name): Attribute mangling is now -fabi-version=10. PR c++/65945 * decl.c (cxx_init_decl_processing): Set TYPE_ALIGN of nullptr_t. * class.c (layout_nonempty_base_or_field): Warn if that affects the offset of a field. 2015-07-01 Paolo Carlini PR c++/60365 * parser.c (cp_parser_check_std_attribute): New. (cp_parser_std_attribute_list): Call it. 2015-07-01 Patrick Palka PR c++/66686 * pt.c (coerce_template_template_parm) [PARM_DECL]: Don't return 0 if tsubst returns a dependent type. 2015-06-30 Jason Merrill PR debug/66653 * decl2.c (is_late_template_attribute): True for tls_model. PR debug/66653 * cp-tree.h (CP_DECL_THREAD_LOCAL_P): New. (DECL_GNU_TLS_P): Use DECL_LANG_SPECIFIC field. (SET_DECL_GNU_TLS_P): New. * call.c (make_temporary_var_for_ref_to_temp): Use CP_DECL_THREAD_LOCAL_P. (set_up_extended_ref_temp): Likewise. * decl.c (duplicate_decls, expand_static_init): Likewise. (redeclaration_error_message, grokvardecl): Likewise. (start_decl, register_dtor_fn, grokdeclarator): Likewise. * decl2.c (get_guard, var_needs_tls_wrapper): Likewise. (handle_tls_init): Likewise. * pt.c (tsubst_decl, tsubst_copy_and_build): Likewise. * semantics.c (finish_id_expression): Likewise. (handle_omp_array_sections_1, finish_omp_clauses): Likewise. (finish_omp_threadprivate): Likewise. * tree.c (decl_storage_duration): Likewise. * cp-gimplify.c (omp_var_to_track): Likewise. (cp_genericize_r): Check that it matches DECL_THREAD_LOCAL_P. * lex.c (retrofit_lang_decl): Return if DECL_LANG_SPECIFIC is already set. 2015-06-30 Edward Smith-Rowland <3dw4rd@verizon.net> Implement N4197 - Adding u8 character literals * parser.c (cp_parser_primary_expression()): Treat CPP_UTF8CHAR and CPP_UTF8CHAR_USERDEF tokens; (cp_parser_parenthesized_expression_list()): Treat CPP_UTF8CHAR token. 2015-06-29 Paolo Carlini PR c++/65977 * decl.c (grokfndecl): Allow constexpr declarations of friend template specializations. 2015-06-29 Manuel López-Ibáñez PR fortran/66605 * decl.c (finish_function): Call do_warn_unused_parameter. 2015-06-29 Marek Polacek PR c/66322 * decl.c (struct cp_switch): Add OUTSIDE_RANGE_P. (push_switch): Set OUTSIDE_RANGE_P. (pop_switch): Update c_do_switch_warnings call. (finish_case_label): Update c_add_case_label call. * semantics.c (finish_switch_cond): Don't warn about -Wswitch-bool here. 2015-06-27 Marek Polacek * call.c: Use VECTOR_TYPE_P. * constexpr.c: Likewise. * cvt.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * init.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. 2015-06-27 Marek Polacek * call.c (set_up_extended_ref_temp): Use VAR_P. * class.c: Use VAR_P throughout. * constexpr.c (cxx_eval_constant_expression): Use VAR_P. * cp-array-notation.c (make_triplet_val_inv): Likewise. * decl.c: Use VAR_OR_FUNCTION_DECL_P or VAR_P throughout. * decl2.c: Likewise. * error.c (dump_decl): Use VAR_P. * mangle.c (decl_implicit_alias_p): Likewise. * parser.c: Use VAR_P throughout. * pt.c: Likewise. * semantics.c: Likewise. * vtable-class-hierarchy.c: Likewise. * tree.c (handle_abi_tag_attribute): Use VAR_OR_FUNCTION_DECL_P. 2015-06-27 Andreas Schwab * pt.c (check_unstripped_args): Mark parameter as unused. 2015-06-26 Jason Merrill PR c++/66216 * class.c (finish_struct): Call fixup_attribute_variants. PR c++/66684 * typeck2.c (merge_exception_specifiers): Allow different noexcept-specifiers if we've had errors. PR c++/66255 * pt.c (check_unstripped_args): Split out from... (retrieve_specialization): ...here. Allow typedefs in the type of a non-type argument. PR c++/66067 * mangle.c (write_nested_name): Limit TYPENAME_TYPE handling to TYPE_DECLs. * mangle.c (write_template_args): Handle 0 length TREE_VEC. PR c++/66654 * typeck2.c (digest_init_r): Only expect reshaping if the class is aggregate. 2015-06-26 Marek Polacek * cp-array-notation.c (expand_sec_reduce_builtin): Use INDIRECT_REF_P. * cp-ubsan.c (cp_ubsan_check_member_access_r): Likewise. 2015-06-25 Andrew MacLeod * call.c: Remove ipa-ref.h and plugin-api.h from include list. * class.c: Likewise. * cp-ubsan.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * lambda.c: Likewise. * mangle.c: Likewise. * method.c: Likewise. * optimize.c: Likewise. * parser.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * vtable-class-hierarchy.c: Likewise. 2015-06-25 Richard Sandiford * constexpr.c (constexpr_fundef_hasher): Inherit from ggc_ptr_hash rather than ggc_hasher. (constexpr_call_hasher): Likewise. * cp-tree.h (cxx_int_tree_map_hasher, named_label_hasher): Likewise. * decl.c (typename_hasher): Likewise. * mangle.c (conv_type_hasher): Likewise. * pt.c (spec_hasher): Likewise. * tree.c (cplus_array_hasher, list_hasher): Likewise. * typeck2.c (abstract_type_hasher): Likewise. 2015-06-25 Richard Sandiford * class.c (fixed_type_or_null_ref_ht): Inherit from nofree_ptr_hash rather than pointer_hash. (fixed_type_or_null): Use nofree_ptr_hash instead of pointer_hash. * semantics.c (nrv_data): Likewise. * tree.c (verify_stmt_tree_r, verify_stmt_tree): Likewise. 2015-06-24 Jason Merrill PR c++/66647 * pt.c (dependent_type_p_r): Check for dependent alias template specialization sooner. PR c++/66501 * class.c (type_has_nontrivial_assignment): Remove. * cp-tree.h: Remove declaration. * init.c (vec_copy_assign_is_trivial): New. (build_vec_init): Use it. 2015-06-24 Edward Smith-Rowland <3dw4rd@verizon.net> Implement N3928 - Extending static_assert * parser.c (cp_parser_static_assert): Support static_assert with no message string. Supply an empty string in this case. * semantics.c (finish_static_assert): Don't try to print a message if the message strnig is empty. 2015-06-24 Adam Butcher PR c++/65750 * parser.c (cp_parser_simple_type_specifier): Don't synthesize implicit template parm if 'auto' is a placeholder for trailing return type. 2015-06-24 Patrick Palka Revert: 2015-06-23 Patrick Palka PR c++/30044 * parser.c (cp_parser_template_parameter_list): Update current_template_parms right after processing a paramater. * pt.c (template_parms_to_args): Remove obsolete hack for giving template template arguments the proper level. (check_default_tmpl_args): Account for tested template parameter_lists. (splite_late_return_type): Remove obsolete hack for giving template template arguments the proper level. 2015-06-24 Paolo Carlini PR c++/65811 * decl.c (duplicate_decls): Adjust DECL_COMDAT of newdecl. 2015-06-23 Patrick Palka PR c++/30044 * parser.c (cp_parser_template_parameter_list): Update current_template_parms right after processing a paramater. * pt.c (template_parms_to_args): Remove obsolete hack for giving template template arguments the proper level. (check_default_tmpl_args): Account for tested template parameter_lists. (splite_late_return_type): Remove obsolete hack for giving template template arguments the proper level. 2015-06-23 Jason Merrill PR c++/65879 * decl.c (grokfndecl): Check the linkage of ctype, not just TYPE_ANONYMOUS_P. * tree.c (no_linkage_check): Skip the 'this' pointer. PR c++/66501 * class.c (type_has_nontrivial_assignment): New. * init.c (build_vec_init): Use it. * cp-tree.h: Declare it. * method.c (trivial_fn_p): Templates aren't trivial. PR c++/66542 * decl.c (expand_static_init): Make sure the destructor is callable here even if we have an initializer. 2015-06-04 Pierre-Marie de Rodat * lang-specs.h: Pass "-o %g.s" to cc1plus for headers even if -fdump-ada-spec is passed. 2015-06-22 Pierre-Marie de Rodat * decl2.c (cpp_check): Deal with HAS_DEPENDENT_TEMPLATE_ARGS. 2015-06-22 Paolo Carlini * decl.c (grokdeclarator): Use declspecs->locations[ds_virtual]. 2015-06-22 Paolo Carlini * decl.c (grokdeclarator): Remove pointless code. 2015-06-22 Jason Merrill PR c++/66515 * call.c (implicit_conversion): Only reshape for classes. 2015-06-22 Mikhail Maltsev * pt.c (maybe_adjust_types_for_deduction): Use std::swap instead of manually swapping. * semantics.c (finish_omp_atomic): Likewise. * typeck.c (cp_build_array_ref): Likewise. 2015-06-20 Mikhail Maltsev PR c++/65882 * call.c (build_new_op_1): Check tf_warning flag in all cases. 2015-06-19 Jason Merrill PR c++/66585 * pt.c (instantiate_class_template_1): Clear cp_unevaluated_operand and c_inhibit_evaluation_warnings. PR c++/65880 * decl.c (build_ptrmemfunc_type): Check TYPE_GET_PTRMEMFUNC_TYPE after cv-qualifiers. * typeck.c (merge_types): build_ptrmemfunc_type before applying quals and attributes. PR c++/65973 * constexpr.c (build_constexpr_constructor_member_initializers): Handle an empty STATEMENT_LIST. PR c++/65843 * pt.c (tsubst_copy_and_build): Register a capture proxy in local_specializations. 2015-06-17 Jason Merrill PR c++/66001 * constexpr.c (cxx_eval_constant_expression): Handle TRY_BLOCK and TRY_FINALLY_EXPR. (potential_constant_expression_1): Likewise. 2015-06-17 Jason Merrill PR c++/66515 * call.c (implicit_conversion): Call reshape_init here, early. (build_aggr_conv): Not here. 2015-06-17 Jakub Jelinek PR c++/66571 * pt.c (tsubst_omp_clause_decl): New function. (tsubst_omp_clauses): Use it or tsubst_copy instead of tsubst_expr on OMP_CLAUSE_DECL. 2015-06-17 Andrew MacLeod * cp-lang.c (cxx_dwarf_name): Use anon_aggrname_p. * cp-tree.h (TYPE_ANONYMOUS_P): Likewise. * decl.c (grokdeclarator, xref_tag_1): Likewise. * error.c (dump_aggr_type): likewise. * pt.c (push_template_decl_real): Likewise. * name-lookup.c (make_anon_name): Use anon_aggrname_format. 2015-06-17 Andrew MacLeod * call.c: Do not include input.h, line-map.h or is-a.h. * class.c: Likewise. * constexpr.c: Likewise. * cp-array-notation.c: Likewise. * cp-gimplify.c: Likewise. * cp-lang.c: Likewise. * cp-objcp-common.c: Likewise. * cp-tree.h: Likewise. * cp-ubsan.c: Likewise. * cvt.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * dump.c: Likewise. * error.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * friend.c: Likewise. * init.c: Likewise. * lambda.c: Likewise. * lex.c: Likewise. * mangle.c: Likewise. * method.c: Likewise. * name-lookup.c: Likewise. * optimize.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * ptree.c: Likewise. * repo.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. * vtable-class-hierarchy.c: Likewise. 2015-06-16 Paolo Carlini PR c++/59682 * parser.c (cp_parser_new_placement): Reject an empty expression-list. 2015-06-16 Jason Merrill PR c++/66536 * tree.c (replace_placeholders_r) [CONSTRUCTOR]: Handle type mismatch. PR c++/58063 * tree.c (bot_manip): Remap SAVE_EXPR. PR c++/66387 * pt.c (tsubst_copy) [VAR_DECL]: Use process_outer_var_ref. 2015-06-15 Nathan Sidwell PR c++/58583 * cp-tree.h (DECL_INSTANTIATING_NSDMI_P): New. * init.c (get_nsdmi): Check for DEFAULT_ARG in template case and protect it from recursive instantiation. 2015-06-15 Paolo Carlini PR c++/51048 * decl2.c (no_linkage_error): Do not issue a permerror if the DECL using a local type is pure virtual. 2015-06-13 Patrick Palka * call.c: Remove comment documenting the long-deleted function build_method_call. 2015-06-13 Patrick Palka PR c++/65168 * typeck.c (cp_build_binary_op): Warn when comparing an address of a reference against NULL. 2015-06-12 Jason Merrill PR c++/65719 * pt.c (tsubst_decl) [VAR_DECL]: Mark namespace-scope variables as DECL_NOT_REALLY_EXTERN. 2015-06-11 Jason Merrill PR c++/66445 * constexpr.c (potential_constant_expression_1): Handle a DECL_EXPR of TYPE_DECL. PR c++/66450 * constexpr.c (cxx_eval_store_expression): Avoid messing up outer ctx->ctor. 2015-06-11 Pierre-Marie de Rodat * decl.c (cxx_init_decl_processing): Register the main translation unit through the new debug hook. 2015-06-10 Jason Merrill PR c++/66289 * cp-tree.h (TEMPLATE_DECL_COMPLEX_ALIAS_P): New. * pt.c (push_template_decl_real): Set it. (dependent_alias_template_spec_p): Use it. (dependent_type_p_r): Use dependent_alias_template_spec_p. (uses_all_template_parms_data, uses_all_template_parms_r) (complex_alias_template_p): New. (get_template_parm_index): Handle BOUND_TEMPLATE_TEMPLATE_PARM. 2015-06-09 Jason Merrill DR 1467 PR c++/51747 * typeck2.c (digest_init_r): Replace previous change with gcc_unreachable. PR c++/66387 * semantics.c (process_outer_var_ref): Make sure the value is actually constant before returning it. * typeck.c (cp_build_array_ref): Allow subscripting non-lvalue array. 2015-06-09 Paolo Carlini PR c++/65815 * typeck2.c (digest_nsdmi_init): On aggregates use reshape_init. * init.c (expand_default_init): Likewise. 2015-06-09 Jason Merrill PR c++/66383 * tree.c (replace_placeholders_r): Handle placeholders for an outer object. * typeck2.c (store_init_value): Only replace_placeholders for objects of class type. 2015-06-08 Andrew MacLeod * call.c : Adjust include files. * class.c : Likewise. * constexpr.c : Likewise. * cp-array-notation.c : Likewise. * cp-cilkplus.c : Likewise. * cp-gimplify.c : Likewise. * cp-lang.c : Likewise. * cp-objcp-common.c : Likewise. * cp-tree.h : Likewise. * cp-ubsan.c : Likewise. * cvt.c : Likewise. * decl.c : Likewise. * decl2.c : Likewise. * dump.c : Likewise. * error.c : Likewise. * except.c : Likewise. * expr.c : Likewise. * friend.c : Likewise. * init.c : Likewise. * lambda.c : Likewise. * lex.c : Likewise. * mangle.c : Likewise. * method.c : Likewise. * name-lookup.c : Likewise. * optimize.c : Likewise. * parser.c : Likewise. * pt.c : Likewise. * ptree.c : Likewise. * repo.c : Likewise. * rtti.c : Likewise. * search.c : Likewise. * semantics.c : Likewise. * tree.c : Likewise. * typeck.c : Likewise. * typeck2.c : Likewise. * vtable-class-hierarchy.c : Likewise. 2015-06-05 Jason Merrill PR c++/66405 * pt.c (argument_pack_element_is_expansion_p): Return 2 if the expansion has extra args. (use_pack_expansion_extra_args_p): Return true in that case. PR c++/66405 * pt.c (type_dependent_expression_p): EXPR_PACK_EXPANSION is dependent even if it has a type. 2015-06-05 Aldy Hernandez * cp-objcp-common.c: Adjust comment for cxx_warn_unused_global_decl. * cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Remove (LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS): New. * cp-tree.h (note_mangling_alias): Protoize. (cp_write_global_declarations): Remove. (cxx_post_compilation_parsing_cleanups): Protoize. * decl.c (wrapup_globals_for_namespace): Remove use of DATA argument. * decl2.c (mangling_aliases): New global. (build_java_method_aliases): New. Adapted from collect_candidates_for_java_method_aliases. (collect_candidates_for_java_method_aliases): Remove. (build_java_method_aliases): Remove. (generate_mangling_aliases): New. (note_mangling_alias): New. Moved from mangle_decl. (locus_at_end_of_parsing): New global. (c_parse_final_cleanups): Rename from cp_write_global_declarations. Use locus_at_end_of_parsing. Call generate_mangling_aliases. Rename call to collect_candidates_for_java_method_aliases into build_java_method_aliases. Remove call to finalize_compilation_unit. Move vtable handling into cxx_post_compilation_parsing_cleanups. Do not call check_global_declarations or emit_debug_global_declarations. (cxx_post_compilation_parsing_cleanups): New. * mangle.c (mangle_decl): Move code to note_mangling_alias. * name-lookup.c (do_namespace_alias): Call early_global_decl. 2015-06-05 Nathan Sidwell PR c++/52595 * parser.c (cp_parser_cache_defarg): Continue looking for declarators when scanning a potential template argument list of an NSDMI. 2015-06-04 Andrew MacLeod * call.c: Adjust includes for restructured coretypes.h. * class.c: Likewise. * constexpr.c: Likewise. * cp-array-notation.c: Likewise. * cp-gimplify.c: Likewise. * cp-lang.c: Likewise. * cp-objcp-common.c: Likewise. * cp-tree.h: Likewise. * cp-ubsan.c: Likewise. * cvt.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * dump.c: Likewise. * error.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * friend.c: Likewise. * init.c: Likewise. * lambda.c: Likewise. * lex.c: Likewise. * mangle.c: Likewise. * method.c: Likewise. * name-lookup.c: Likewise. * optimize.c: Likewise. * parser.c: Likewise. * pt.c: Likewise. * ptree.c: Likewise. * repo.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. * vtable-class-hierarchy.c: Likewise. 2015-06-04 Ramana Radhakrishnan PR c++/66192 PR target/66200 * cp-tree.h (get_guard_cond): Adjust declaration * decl.c (expand_static_init): Use atomic load acquire and adjust call to get_guard_cond. * decl2.c (build_atomic_load_byte): New function. (get_guard_cond): Handle thread_safety. (one_static_initialization_or_destruction): Adjust call to get_guard_cond. 2015-06-03 Jason Merrill PR c++/44282 * mangle.c (mangle_decl): Always SET_IDENTIFIER_GLOBAL_VALUE. (write_CV_qualifiers_for_type): Set G.need_abi_warning. (decl_implicit_alias_p): Split out from maybe_remove_implicit_alias. * cp-tree.h (DECL_REALLY_EXTERN): Handle null DECL_LANG_SPECIFIC. 2015-06-03 Manuel López-Ibáñez Paolo Carlini PR c++/66130 * typeck.c (invalid_nonstatic_memfn_p): Add location_t parameter and use it in the diagnostic. (decay_conversion): Adjust call. * semantics.c (finish_decltype_type): Likewise. * call.c (resolve_args, build_new_op_1, perform_implicit_conversion_flags): Adjust calls. * cvt.c (ocp_convert, convert_to_void): Likewise. * cp-tree.h (invalid_nonstatic_memfn_p): Update declaration. 2015-06-03 Paolo Carlini * decl.c (check_tag_decl): Use declspecs->locations as locations in error_at and warning_at calls. 2015-06-03 Marek Polacek PR sanitizer/66190 * cp-gimplify.c (struct cp_genericize_data): Add no_sanitize_p. (cp_genericize_r): Don't instrument static initializers. (cp_genericize_tree): Initialize wtd.no_sanitize_p. 2015-06-02 Andres Tiraboschi * decl.c (start_function): Call plugin before parsing. (finish_function): Call plugin after parsing. 2015-06-02 Patrick Palka * cp-tree.h (init_error): Remove declaration. * error.c (scratch_pretty_printer): Rename to ... (actual_pretty_printer): ... this. (cxx_pp): Constify and update accordingly. (init_error): Remove definition. * lex.c (cxx_init): Do not call init_error. 2015-06-02 Paolo Carlini PR c++/61683 * parser.c (cp_parser_mem_initializer): Allow for decltype-specifier. 2015-06-01 Jason Merrill PR c++/65942 * decl2.c (mark_used): Don't always instantiate constexpr fns. * constexpr.c (cxx_eval_call_expression): Instantiate them here. PR c++/44282 * mangle.c (attr_strcmp): New. (write_CV_qualifiers_for_type): Also write out attributes that affect type identity. (write_type): Strip all attributes after writing qualifiers. 2015-05-31 Jason Merrill * constexpr.c (cxx_eval_indirect_ref): Try folding first. PR c++/66320 * constexpr.c (cxx_eval_constant_expression): Treat a placeholder with the wrong type as non-constant. 2015-05-27 Jason Merrill * decl.c (check_redeclaration_exception_specification): Depend on -Wsystem-headers rather than -pedantic. * decl.c (warn_extern_redeclared_static): Use the location of newdecl in diagnostics, not input_location. (validate_constexpr_redeclaration): Likewise. (check_redeclaration_no_default_args): Likewise. (duplicate_decls): Likewise. (check_redeclaration_exception_specification): Likewise. Change second diagnostic to inform. 2015-05-24 Nathan Sidwell PR c++/66243 * decl.c (build_enumerator): Don't silently convert scoped enums. 2015-05-24 Jan Hubicka PR lto/66180 * mangle.c (mangle_decl): Mangle anonymous namespace types as "". 2015-05-23 Nathan Sidwell PR c++/65936 * pt.c (lookup_template_class_1): Copy may_alias attribute too. 2015-05-22 Jim Wilson * Make-lang.in (check_g++_parallelize): Update comment. 2015-05-22 Paolo Carlini PR c++/65598 * decl.c (grokdeclarator): Use the correct location in error messages about 'explicit'. 2015-05-22 Marek Polacek Edward Smith-Rowland <3dw4rd@verizon.net> PR c/47043 * cp-tree.h (build_enumerator): Update declaration. * decl.c (build_enumerator): Add attributes parameter. Call cplus_decl_attributes. * init.c (constant_value_1): Pass tf_none to mark_used. * parser.c (cp_parser_enumerator_definition): Parse attributes and pass them down to build_enumerator. * pt.c (tsubst_enum): Pass decl attributes to build_enumerator. * semantics.c (finish_id_expression): Don't warn_deprecated_use here. 2015-05-21 Nathan Sidwell PR c++/60943 * decl2.c (change_return_type): Propagate FUNCTION_REF_QUALIFIED. 2015-05-21 Marek Polacek * typeck.c (warn_args_num): Don't print "declare here" for builtins. 2015-05-20 Jason Merrill * pt.c (tsubst_decl) [VAR_DECL]: SET_DECL_IMPLICIT_INSTANTIATION before register_specialization. * decl.c (grok_op_properties): Don't complain about size_t placement delete here. * call.c (second_parm_is_size_t): Split out from... (non_placement_deallocation_fn_p): ...here. (build_op_delete_call): Warn about size_t placement delete with -Wc++14-compat. 2015-05-19 Nathan Sidwell PR c++/65954 * typeck.c (finish_class_member_access_expr): Diagnose failed lookup of enum class member. 2015-05-19 Jakub Jelinek PR middle-end/66199 * parser.c (cp_parser_omp_for_loop): Don't add OMP_CLAUSE_SHARED to OMP_PARALLEL_CLAUSES when moving OMP_CLAUSE_LASTPRIVATE clause to OMP_FOR_CLAUSES. (cp_parser_omp_teams): Set OMP_TEAMS_COMBINED for combined constructs. 2015-05-19 Mikhail Maltsev * typeck.c (composite_pointer_type): Use std::swap instead of explicit swaps. 2015-05-18 Jason Merrill * pt.c (retrieve_specialization): Make sure our arguments have gone through strip_typedefs. * pt.c (tsubst_decl) [VAR_DECL]: Call coerce_innermost_template_parms. (determine_specialization): Call coerce_template_parms. DR 1391 * pt.c (type_unification_real): Check convertibility here. (unify_one_argument): Not here. * tree.c (strip_typedefs_expr) [TRAIT_EXPR]: Fix typo. (strip_typedefs) [DECLTYPE_TYPE]: Fix typedef of decltype. [TREE_LIST]: Fix no-change case. * ptree.c (cxx_print_xnode): Handle TRAIT_EXPR. 2015-05-16 Manuel López-Ibáñez PR fortran/44054 * error.c (cp_diagnostic_starter): Use diagnostic_location function. (cp_print_error_function): Likewise. (cp_printer): Replace locus pointer with accessor function. 2015-05-12 David Malcolm * parser.c (cp_parser_selection_statement): Add location and guard_kind arguments to calls to cp_parser_implicitly_scoped_statement. (cp_parser_iteration_statement): Likewise for calls to cp_parser_already_scoped_statement. (cp_parser_implicitly_scoped_statement): Add "guard_loc" and "guard_kind" params; use them to warn for misleading indentation. (cp_parser_already_scoped_statement): Likewise. 2015-05-11 Jan Hubicka * class.c (fixup_type_variants): Do not copy TYPE_METHODS (one_inheriting_sig): Assert tat we always set TYPE_METHODS of main variant. * semantics.c (finish_member_declaration): Likewise. * method.c (lazily_declare_fn): Allways add method to main variant list. 2015-05-09 Aldy Hernandez PR bootstrap/66085 * decl2.c (note_mangling_alias): Declare arguments as unused. 2015-05-08 Jason Merrill * cp-gimplify.c, parser.c: Adjust to -Wc++11-compat replacing -Wc++0x-compat. 2015-05-08 Jason Merrill * decl2.c (mangling_aliases): New variable. (note_mangling_alias, generate_mangling_aliases): New. (cp_write_global_declarations): Call generate_mangling_aliases. (generate_mangling_alias): Split out from... * mangle.c (mangle_decl): ...here. * cp-tree.h: Declare note_mangling_alias. 2015-05-08 Aldy Hernandez * decl2.c (collect_candidates_for_java_method_aliases): Remove. (build_java_method_aliases): Adapt to use create_same_body_alias instead of assemble_alias. Move variable declarations to definition and tidy up. (cp_write_global_declarations): Call build_java_method_aliases instead of collecting candidates first. 2015-05-07 Jason Merrill PR c++/59012 * parser.c (cp_parser_std_attribute_list): Handle attribute expansion. (cp_parser_std_attribute_spec): Handle alignas pack expansion. * decl2.c (is_late_template_attribute): An attribute exp is dependent. * pt.c (make_pack_expansion): Allow TREE_LIST for attribute expansion. (apply_late_template_attributes): Handle attribute pack expansion. 2015-05-07 Marek Polacek PR c/65179 * typeck.c (cp_build_binary_op): Warn when left shifting a negative value. 2015-05-07 Jason Merrill DR 1467 PR c++/51747 * typeck2.c (digest_init_r): Fix single element list. 2015-05-05 Jason Merrill * cp-gimplify.c (cp_genericize_r): Track TRY_BLOCK and MUST_NOT_THROW_EXPR, warn about a THROW_EXPR directly within a MUST_NOT_THROW_EXPR. (cp_genericize_data): Add try_block field. (cp_genericize_tree): Initialize it. * except.c (expand_end_catch_block): Set TREE_NO_WARNING on implicit rethrow. * constexpr.c (potential_constant_expression_1) [AT_ENCODE_EXPR]: Return false. * semantics.c (finish_call_expr): Check complain. * decl2.c (reset_type_linkage_2): Update the DECL_NAME of a maybe-in-charge constructor. * decl.c (start_decl): Don't push the plain VAR_DECL for a variable template. DR 1518 DR 1630 PR c++/54835 PR c++/60417 * call.c (convert_like_real): Check value-initialization before explicit. * typeck2.c (process_init_constructor_record): Don't set CONSTRUCTOR_IS_DIRECT_INIT. (process_init_constructor_array): Likewise. * init.c (build_vec_init): Likewise. 2015-05-05 David Malcolm * parser.c (cp_parser_asm_definition): Only test for error_mark_node if "outputs" was just set. Likewise for "inputs". 2015-05-04 Paolo Carlini Jakub Jelinek PR c++/66007 * typeck2.c (check_narrowing): Check by-hand that the pedwarn didn't result in an actual error. 2015-05-01 Paolo Carlini Prathamesh Kulharni PR c++/65858 * typeck2.c (check_narrowing): Set ok = true when pedwarn returns false. 2015-04-30 David Malcolm * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove spurious trailing semicolon. 2015-04-29 Jason Merrill PR c++/50800 * tree.c (apply_identity_attributes): Fix handling of classes. 2015-04-29 Thomas Schwinge * parser.c (cp_parser_oacc_enter_exit_data): Use OMP_STANDALONE_CLAUSES. 2015-04-29 Paolo Carlini PR c++/64667 * init.c (perform_member_init): Handle references for -Winit-self. 2015-04-29 Thomas Schwinge * pt.c (tsubst_expr) : Use OMP_TARGET_UPDATE_CLAUSES instead of OMP_CLAUSES. 2015-04-28 Jason Merrill PR c++/65896 * constexpr.c (cxx_eval_store_expression): Don't try to actually store an empty class. PR c++/65656 * constexpr.c (cxx_eval_builtin_function_call): Fix __builtin_constant_p. PR c++/50800 * tree.c (strip_typedefs): Add remove_attributes parm. (strip_typedefs_expr): Likewise. (apply_identity_attributes): New subroutine of strip_typedefs. * pt.c (canonicalize_type_argument): Let strip_typedefs handle attrs. (convert_nontype_argument, unify): Likewise. * cp-tree.h: Adjust. PR c++/65734 * class.c (fixup_attribute_variants): Respect TYPE_USER_ALIGN. 2015-04-27 Trevor Saunders * class.c (layout_class_type): Remove check if PCC_BITFIELD_TYPE_MATTERS is defined. 2015-04-27 Jim Wilson * Make-lang.in (c++.mostlyclean): Remove xg++, g++-cross, and cc1plus. 2015-04-24 Jason Merrill PR c++/50800 * typeck.c (structural_comptypes): Don't check TYPE_REF_CAN_ALIAS_ALL. * constexpr.c (potential_constant_expression_1) [MINUS_EXPR]: Remove obsolete code. [NE_EXPR]: Likewise. 2015-04-23 Jason Merrill PR c++/65646 * pt.c (check_explicit_specialization): Don't SET_DECL_TEMPLATE_SPECIALIZATION for a variable with no template headers. * decl.c (grokvardecl): Revert earlier fix. 2015-04-20 Paolo Carlini PR c++/65801 * typeck2.c (check_narrowing): In C++11 mode too, -Wno-narrowing suppresses the diagnostic. 2015-04-20 Ville Voutilainen Reject trailing return type for an operator auto(). * decl.c (grokdeclarator): Reject trailing return types for all conversion operators, don't handle conversion operators in the previous checks that deal with auto. 2015-04-20 Ilya Verbin * parser.c (cp_parser_omp_target_update): Add missed %> to error_at (). 2015-04-16 Paolo Carlini * class.c (resolve_address_of_overloaded_function, instantiate_type): Rename tsubst_flags_t parameter flags -> complain. 2015-04-16 Paolo Carlini * call.c (build_op_delete_call, build_over_call): Check mark_used return value. * class.c (resolve_address_of_overloaded_function): Likewise. * decl.c (cxx_maybe_build_cleanup): Likewise. * pt.c (gen_elem_of_pack_expansion_instantiation, tsubst_baselink, tsubst_qualified_id, tsubst_copy, tsubst_copy_and_build): Likewise. * rtti.c (build_dynamic_cast_1): Likewise. * semantics.c (process_outer_var_ref): Likewise. * typeck.c (build_class_member_access_expr, cp_build_function_call_vec, cp_build_addr_expr_1): Likewise. 2015-04-15 Jason Merrill * constexpr.c (cxx_eval_store_expression): Ignore clobbers. (build_constexpr_constructor_member_initializers): Loop to find the BIND_EXPR. * decl.c (start_preparsed_function): Clobber the object at the beginning of a constructor. * decl.c (grokmethod): Only set DECL_COMDAT if TREE_PUBLIC is set. * method.c (implicitly_declare_fn): Likewise. * decl2.c (vague_linkage_p): Check TREE_PUBLIC first. * decl2.c (determine_visibility): Use get_template_info. 2015-04-15 Jason Merrill Marek Polacek PR c++/65727 * lambda.c (lambda_expr_this_capture): In unevaluated context go through the normal loop, just don't capture. (maybe_resolve_dummy): Handle null return. 2015-04-15 Paolo Carlini * call.c (enforce_access): Emit error + inform. 2015-04-15 Marek Polacek * constexpr.c (use_new_call): Remove #define. (lookup_parameter_binding): Remove function. (cxx_bind_parameters_in_call): Remove unused code. (cxx_eval_call_expression): Likewise. (cxx_eval_constant_expression): Likewise. 2015-04-14 Mikhail Maltsev * tree.c (replace_placeholders_t): Remove unused type. (replace_placeholders): Remove unused pset. 2015-04-14 Jason Merrill * pt.c (lookup_template_class_1): Use coerce_innermost_template_parms. PR c++/65695 * cvt.c (cp_fold_convert): Avoid wrapping PTRMEM_CST in NOP_EXPR. PR c++/65721 * name-lookup.c (do_class_using_decl): Complain about specifying the current class even if there are dependent bases. 2015-04-14 David Krauss PR c++/59766 * decl.c (grokdeclarator): Do not flag friends with deduced return. 2015-04-14 Momchil Velikov Jason Merrill PR c++/60994 * parser.c (cp_parser_class_name): Add enum_ok parameter. (cp_parser_qualifying_entity): Use it instead of cp_parser_type_name. (cp_parser_diagnose_invalid_type_name): Don't assume a template is a class template. 2015-04-12 Jakub Jelinek PR c++/65736 * constexpr.c (cxx_eval_pointer_plus_expression): Don't fold for VLAs, don't fold if op01 isn't divisible by TYPE_SIZE_UNIT. Convert the expression to the original type at the end. 2015-04-09 Jakub Jelinek PR c++/65690 * tree.c (cp_build_qualified_type_real): Copy TYPE_ALIGN and TYPE_USER_ALIGN. PR c++/65690 * tree.c (build_cplus_array_type): Layout type before variants are set, but copy over TYPE_SIZE and TYPE_SIZE_UNIT from the main variant. 2015-04-03 Paolo Carlini PR c++/64085 * lambda.c (add_capture): Use dependent_type_p for capture by reference too. 2015-04-02 Marek Polacek PR c++/65642 * constexpr.c (cxx_eval_pointer_plus_expression): Call cxx_eval_constant_expression on the first operand. 2015-04-01 Jason Merrill PR c++/65625 * decl.c (make_typename_type): Handle seeing a variable template. 2015-04-01 Paolo Carlini PR c++/56100 * pt.c (instantiating_current_function_p): New. * name-lookup.c (pushdecl_maybe_friend_1): Use it. * cp-tree.h (instantiating_current_function_p): Declare. 2015-04-01 Jason Merrill PR c++/65646 * decl.c (grokvardecl): Don't call check_explicit_specialization for non-template members of a class template. 2015-04-01 Marek Polacek PR c++/65554 * class.c (finish_struct): Require that the second field of a user-defined initializer_list be of size type. 2015-03-31 Marek Polacek PR c++/65390 * tree.c (build_cplus_array_type): Use dependent_type_p rather than checking for constness. 2015-03-30 Marek Polacek PR c++/65398 * constexpr.c (cxx_fold_indirect_ref): Don't perform the *(&A[i] p+ j) => A[i + j] transformation here. (cxx_eval_pointer_plus_expression): New function. (cxx_eval_constant_expression): Use it here. 2015-03-27 Tobias Burnus PR c/65586 * parser.c (cp_parser_omp_for, cp_parser_omp_parallel, cp_parser_omp_distribute, cp_parser_omp_teams, cp_parser_omp_target, cp_parser_omp_declare): Don't show error for skipped omp pragmas with -fopenmp-simd. 2015-03-27 Marek Polacek PR c++/65556 * semantics.c (finish_switch_cond): If the unlowered type is not an enum, use the type of the condition. 2015-03-27 Jason Merrill PR c++/65509 * decl.c (make_rtl_for_nonlocal_decl): Don't defer static constants. 2015-03-26 Mikhail Maltsev PR c++/65154 * init.c (build_vec_init): Fix initializing aggregates with empty init list. 2015-03-26 Jason Merrill PR c++/65525 * constexpr.c (potential_constant_expression_1): Handle MEM_REF. 2015-03-25 Marek Polacek PR c++/65558 * name-lookup.c (handle_namespace_attrs): Ignore abi_tag attribute on an anonymous namespace. 2015-03-25 Marek Polacek PR c++/61670 * class.c (remove_zero_width_bit_fields): Check for null DECL_SIZE. 2015-03-24 Jason Merrill PR c++/65046 * cp-tree.h (NAMESPACE_IS_INLINE): Remove. * parser.c (cp_parser_namespace_definition): Don't set it. * name-lookup.c (handle_namespace_attrs): Check DECL_NAMESPACE_ASSOCIATIONS instead. PR c++/65498 * pt.c (get_mostly_instantiated_function_type): Just return the type of the partially instantiated template in DECL_TI_TEMPLATE. 2015-03-20 Marek Polacek PR c++/65398 * constexpr.c (cxx_fold_indirect_ref): Transform *(&A[i] p+ j) into A[i + j]. 2015-03-20 Marek Polacek PR c++/65072 * typeck.c (lookup_anon_field): Make sure we're dealing with the main variant. 2015-03-19 Jason Merrill PR c++/65046 Automatically propagate ABI tags to variables and functions from their (return) type. * class.c (check_tag): Handle variables and functions. (mark_or_check_attr_tags): Split out from find_abi_tags_r. (mark_or_check_tags): Likewise. (mark_abi_tags): Use it. Rename from mark_type_abi_tags. (check_abi_tags): Add single argument overload for decls. Handle inheriting tags for decls. * mangle.c (write_mangled_name): Call it. (mangle_return_type_p): Split out from write_encoding. (unmangled_name_p): Split out from write_mangled_name. (write_mangled_name): Ignore abi_tag on namespace. * cp-tree.h (NAMESPACE_IS_INLINE): Replace NAMESPACE_ABI_TAG. * parser.c (cp_parser_namespace_definition): Set it. * name-lookup.c (handle_namespace_attrs): Use arguments. Warn about abi_tag attribute on non-inline namespace. * tree.c (check_abi_tag_args): Split out from handle_abi_tag_attribute. (handle_abi_tag_attribute): Allow tags on variables. 2015-03-19 Jakub Jelinek * decl2.c (cplus_decl_attributes): Also add "omp declare target" attribute for DECL_EXTERNAL VAR_DECLs. 2015-03-18 Paolo Carlini PR c++/65340 * call.c (build_over_call): Pass the tsubst_flags_t argument to mark_used. * decl2.c (mark_used): Inline the require_deduced_type call and guard the error call. 2015-03-16 Jason Merrill PR c++/65061 * parser.c (cp_parser_template_name): Call strip_using_decl. 2015-03-16 Marek Polacek DR 1688 PR c++/65327 * decl.c (grokdeclarator): Allow volatile and constexpr together. 2015-03-12 Paolo Carlini PR c++/65323 * decl.c (check_default_argument): Don't call maybe_warn_zero_as_null_pointer_constant. 2015-03-11 Aldy Hernandez * cp-gimplify.c (simple_empty_class_p): New. * cp-gimplify.c (cp_gimplify_expr): Handle RETURN_EXPR. Abstract the code for empty class copies into simple_empty_class_p, and adapt it to handle COMPOUND_EXPRs. 2015-03-10 Paolo Carlini PR c++/65370 * decl.c (duplicate_decls): Call check_redeclaration_no_default_args only if the location of newdecl doesn't match the location of olddecl. 2015-03-10 Jakub Jelinek PR c++/65127 * parser.c (parsing_nsdmi): Don't return true if current_class_ptr is not a PARM_DECL. 2015-03-10 Jason Merrill PR c++/65333 DR 1558 * pt.c (dependent_type_p_r): Check both class and alias template args. 2015-03-10 Jakub Jelinek PR c/65120 * parser.c (cp_parser_binary_expression): Check for tcc_comparison before preparing arguments to warn_logical_not_parentheses. Use maybe_constant_value on rhs. 2015-03-09 Jason Merrill PR c++/65339 * call.c: Don't call maybe_resolve_dummy when calling a constructor. 2015-03-09 Jakub Jelinek PR c/65120 * parser.c (cp_parser_binary_expression): Don't warn for !!x == y or !b == y where b is bool. 2015-03-06 Aldy Hernandez * ptree.c (cxx_print_lambda_node): New. (cxx_print_xnode): Handle LAMBDA_EXPR. 2015-03-03 Aldy Hernandez PR c++/65295 * constexpr.c (cxx_eval_constant_expression): Remove assert in RESULT_DECL handling. 2015-02-26 Marek Polacek PR c++/65202 * constexpr.c (cxx_eval_constant_expression): Don't evaluate a RETURN_EXPR if its operand is null. 2015-02-25 Jason Merrill PR c++/65209 * decl2.c (constrain_visibility) [VISIBILITY_ANON]: Clear DECL_COMDAT. (constrain_visibility_for_template): Handle reference arguments. PR debug/58315 * decl.c (start_preparsed_function): Use create_artificial_label for cdtor_label. 2015-02-17 Paolo Carlini Jakub Jelinek PR c++/65075 * constexpr.c (check_constexpr_bind_expr_vars): Allow implicit typedefs for lambda types. 2015-02-13 Paolo Carlini PR c++/60894 * decl.c (lookup_and_check_tag): Use strip_using_decl. 2015-02-13 Jason Merrill PR c++/65054 * pt.c (template_args_equal): Look through conversions here. * tree.c (cp_tree_equal): Not here. 2015-02-13 Paolo Carlini PR c++/60211 * parser.c (cp_parser_pragma): Diagnose PRAGMA_IVDEP at pragma_external context. 2015-02-13 Jason Merrill PR c++/65051 * call.c (reference_binding): Don't look for bad conversion if TO is incomplete. 2015-02-13 Paolo Carlini PR c++/64970 * decl.c (make_typename_type): Pass tsubst_flags_t argument to lookup_template_class. 2015-02-13 Jakub Jelinek PR ipa/65034 * decl.c (start_preparsed_function): Use void_type_node instead of NULL_TREE as LABEL_DECL type. 2015-02-12 Jason Merrill PR c++/64898 * mangle.c (write_mangled_name): Fix test for variable template instantiation. * decl.c (begin_destructor_body): Condition clobber on -flifetime-dse. 2015-02-12 Andrea Azzarone PR c++/64959 * parser.c (lookup_literal_operator): Return all candidates. (cp_parser_userdef_char_literal): Simplify error handling. (cp_parser_userdef_numeric_literal): Pass tf_warning_or_error. (cp_parser_userdef_string_literal): Pass tf_warning_or_error. Also give higher priority to standard string UDL operator. 2015-02-12 Jakub Jelinek PR debug/55541 * cp-tree.h (BLOCK_OUTER_CURLY_BRACE_P): Define. * decl.c (poplevel): If functionbody, try not to create an extra BLOCK for function body and use subblocks as that, if it is non-NULL and doesn't have siblings. Set BLOCK_OUTER_CURLY_BRACE_P flag. (outer_curly_brace_block): Use BLOCK_OUTER_CURLY_BRACE_P flag. PR sanitizer/64984 * except.c (check_noexcept_r): Return NULL for internal calls. 2015-02-10 Jason Merrill PR c++/64994 * constexpr.c (cxx_eval_call_expression): Walk the clone list. 2015-02-10 Jan Hubicka PR ipa/64982 * method.c (use_thunk): Do not check for stdarg thunks. 2015-02-06 Jason Merrill PR c++/64899 * init.c (build_vec_init): Handle default-initialized array with constexpr default constructor. 2015-02-04 Jakub Jelinek PR c/64824 PR c/64868 * parser.c (cp_parser_omp_atomic): Handle RDIV_EXPR. 2015-02-03 Paolo Carlini PR c++/64877 * typeck.c (cp_build_binary_op): Avoid spurious -Waddress warnings for generated expressions. 2015-02-02 Ville Voutilainen PR c++/64901 * decl.c (duplicate_decls): Also duplicate DECL_FINAL_P and DECL_OVERRIDE_P. 2015-02-02 Jason Merrill * tree.c (handle_abi_tag_attribute): Diagnose invalid arguments. 2015-01-30 Joseph Myers * class.c, except.c, parser.c, pt.c: All callers of fatal_error changed to pass input_location as first argument. 2015-01-29 Jakub Jelinek PR c++/64717 * cp-ubsan.c (cp_ubsan_instrument_vptr): Don't wrap vptr into SAVE_EXPR. 2015-01-29 Jason Merrill PR c++/49508 * semantics.c (finish_return_stmt): Suppress -Wreturn-type on erroneous return statement. PR c++/64521 * repo.c (repo_emit_p): It's OK for a clone to be extern at this point. 2015-01-27 Caroline Tice Committing VTV Cywin/Ming patch for Patrick Wollgast * vtable-class-hierarchy.cc (vtv_generate_init_routine): Add check for not TARGET_PECOFF at the VTV_PREINIT_PRIORITY checks. 2015-01-27 Jason Merrill PR c++/58597 * lambda.c (maybe_add_lambda_conv_op): Check cfun rather than current_function_decl. PR c++/63889 * pt.c (finish_template_variable): Move from semantics.c. Handle multiple template arg levels. Handle coercion here. (lookup_template_variable): Not here. 2015-01-23 Jason Merrill PR c++/64314 PR c++/57510 * typeck2.c (split_nonconstant_init_1): Remove a sub-CONSTRUCTOR that has been completely split out. PR c++/64701 * constexpr.c (cxx_eval_constant_expression): Don't crash on C++ statement codes. PR c++/64727 * constexpr.c (cxx_eval_constant_expression): Allow for lvalue use of CONST_DECL. 2015-01-21 Jason Merrill PR c++/64603 * constexpr.c (cxx_eval_constant_expression): Only shortcut constant CONSTRUCTORs. PR c++/64647 * constexpr.c (ensure_literal_type_for_constexpr_object): Don't give a hard error in a template instantiation. 2015-01-21 Richard Biener PR middle-end/64313 * decl.c (duplicate_decls): Call set_builtin_decl_declared_p for builtins the user declared correctly. 2015-01-16 Paolo Carlini PR c++/58614 * pt.c (unify): When BRACE_ENCLOSED_INITIALIZER_P (arg), handle TREE_TYPE (elt) == error_mark_node. 2015-01-15 Jan Hubicka PR tree-optimization/62053 * tree.c (build_cplus_array_type): Layout type after variants are set. 2015-01-15 Jakub Jelinek * cp-gimplify.c (cp_genericize_r): Call cp_ubsan_maybe_instrument_member_call for member calls. (cp_ubsan_check_member_access_r): New function. (cp_genericize_tree): Call cp_ubsan_instrument_member_accesses. * cp-tree.h (cp_ubsan_maybe_instrument_member_call, cp_ubsan_instrument_member_accesses, cp_ubsan_maybe_instrument_downcast, cp_ubsan_maybe_instrument_cast_to_vbase): New prototypes. * cp-ubsan.c: New file. * Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-ubsan.o. * constexpr.c (cxx_eval_call_expression): Return void_node for IFN_UBSAN_VPTR. (potential_constant_expression_1): Return true for UBSAN_NULL, UBSAN_BOUNDS and UBSAN_VPTR internal calls. * typeck.c (build_class_member_access_expr): Provide locus for COMPONENT_REFs. (build_static_cast_1): Instrument downcasts. * class.c (build_base_path): For -fsanitize=vptr and !fixed_type_p add ubsan instrumentation for virtual_access. * call.c: Include internal-fn.h. (set_flags_from_callee): Handle internal calls. 2015-01-15 Momchil Velikov PR c++/59366 * name-lookup.c (pushdecl_maybe_friend_1): Hide friend functions and function templates, declared only in the class. * decl.c (duplicate_decls): Reveal hidden friend functions or function templates, if they are redeclared outside the class. 2015-01-15 Jason Merrill PR c++/64356 * constexpr.c (cxx_eval_binary_expression): Fix pasto. PR c++/63283 * constexpr.c (potential_constant_expression_1): Handle reference args in templates. 2015-01-15 Thomas Schwinge James Norris Cesar Philippidis Ilmir Usmanov Jakub Jelinek * parser.c: Include "gomp-constants.h". (cp_parser_omp_clause_map): Use enum gomp_map_kind instead of enum omp_clause_map_kind. Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*. Use OMP_CLAUSE_SET_MAP_KIND. (cp_parser_omp_construct, cp_parser_pragma): Handle PRAGMA_OACC_CACHE, PRAGMA_OACC_DATA, PRAGMA_OACC_ENTER_DATA, PRAGMA_OACC_EXIT_DATA, PRAGMA_OACC_KERNELS, PRAGMA_OACC_PARALLEL, PRAGMA_OACC_LOOP, PRAGMA_OACC_UPDATE, PRAGMA_OACC_WAIT. (cp_parser_omp_clause_name): Handle "async", "copy", "copyout", "create", "delete", "deviceptr", "host", "num_gangs", "num_workers", "present", "present_or_copy", "pcopy", "present_or_copyin", "pcopyin", "present_or_copyout", "pcopyout", "present_or_create", "pcreate", "vector_length", "wait". (OACC_DATA_CLAUSE_MASK, OACC_ENTER_DATA_CLAUSE_MASK) (OACC_EXIT_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK) (OACC_LOOP_CLAUSE_MASK, OACC_PARALLEL_CLAUSE_MASK) (OACC_UPDATE_CLAUSE_MASK, OACC_WAIT_CLAUSE_MASK): New macros. (cp_parser_omp_var_list_no_open): Handle OMP_CLAUSE__CACHE_. (cp_parser_oacc_data_clause, cp_parser_oacc_data_clause_deviceptr) (cp_parser_oacc_clause_vector_length, cp_parser_oacc_wait_list) (cp_parser_oacc_clause_wait, cp_parser_omp_clause_num_gangs) (cp_parser_omp_clause_num_workers, cp_parser_oacc_clause_async) (cp_parser_oacc_all_clauses, cp_parser_oacc_cache) (cp_parser_oacc_data, cp_parser_oacc_enter_exit_data) (cp_parser_oacc_kernels, cp_parser_oacc_loop) (cp_parser_oacc_parallel, cp_parser_oacc_update) (cp_parser_oacc_wait): New functions. * cp-tree.h (finish_oacc_data, finish_oacc_kernels) (finish_oacc_parallel): New prototypes. * semantics.c: Include "gomp-constants.h". (handle_omp_array_sections): Handle GOMP_MAP_FORCE_DEVICEPTR. Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*. Use OMP_CLAUSE_SET_MAP_KIND. (finish_omp_clauses): Handle OMP_CLAUSE_ASYNC, OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_WAIT, OMP_CLAUSE__CACHE_. Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*. (finish_oacc_data, finish_oacc_kernels, finish_oacc_parallel): New functions. 2015-01-14 Paolo Carlini PR c++/58671 * decl2.c (var_defined_without_dynamic_init): Handle gracefully self-initialization. 2015-01-13 Jason Merrill PR c++/64356 PR libstdc++/58777 * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT pointer expressions. (cxx_eval_increment_expression): Likewise. PR c++/64514 * pt.c (coerce_template_parameter_pack): Return NULL for a zero-length fixed parameter pack with a pack expansion arg. PR c++/64520 * pt.c (unify): Don't try to deduce to std::initializer_list. 2015-01-12 Jason Merrill PR c++/64547 * constexpr.c (cxx_eval_call_expression): A call to a void function doesn't need to return a value. 2015-01-09 Michael Collison * call.c: Include hash-set.h, machmode.h, vec.h, double-int.h, input.h, alias.h, symtab.h, options.h, fold-const.h, wide-int.h, and inchash.h due to flattening of tree.h. * class.c: Ditto. * constexpr.c: Ditto. * cp-array-notation.c: Ditto. * cp-gimplify.c: Ditto. * cp-lang.c: Ditto. * cp-objcp-common.c: Ditto. * cvt.c: Ditto. * decl2.c: Ditto. * decl.c: Ditto. * dump.c: Ditto. * error.c: Ditto. * except.c: Ditto. * expr.c: Ditto. * friend.c: Ditto. * init.c: Ditto. * lambda.c: Ditto. * lex.c: Ditto. * mangle.c: Ditto. * name-lookup.c: Ditto. * optimize.c: Ditto. * parser.c: Ditto. * pt.c: Ditto. * ptree.c: Ditto. * repo.c: Ditto. * rtti.c: Ditto. * search.c: Ditto. * semantics.c: Ditto. * tree.c: Ditto. * typeck2.c: Ditto. * typeck.c: Ditto. 2015-01-08 Jason Merrill * cp-gimplify.c (cp_genericize): Use do_ubsan_in_current_function. * decl.c (compute_array_index_type): Likewise. * init.c (build_vec_init): Likewise. * typeck.c (cp_build_binary_op): Likewise. 2015-01-08 Jason Merrill * init.c (build_vec_init): Call ubsan_instrument_bounds to check whether an initializer-list is too big for a VLA. (throw_bad_array_length): Remove. * cp-tree.h: Remove prototype. 2015-01-08 Paolo Carlini PR c++/60753 * decl.c (grokfndecl): Add bool parameter. (grokdeclarator): Adjust calls. (start_decl): Don't set DECL_DELETED_FN here. 2015-01-06 Jason Merrill * parser.c (cp_parser_nested_name_specifier_opt): Diagnose invalid template-ids. PR c++/64455 * pt.c (type_dependent_expression_p): Handle variable templates. * constexpr.c (potential_constant_expression_1): Use it. PR c++/64487 * semantics.c (finish_offsetof): Handle templates here. * parser.c (cp_parser_builtin_offsetof): Not here. PR c++/64496 * semantics.c (process_outer_var_ref): Diagnose lambda in local class NSDMI. 2015-01-06 Ville Voutilainen PR c++/64489 * class.c (check_field_decls): Make copy assignment operators complex only in c++98 mode. 2015-01-05 Trevor Saunders PR c++/31397 * class.c (check_for_override): Warn when a virtual function is an override not marked override. 2015-01-05 Trevor Saunders * class.c (warn_hidden): Use auto_vec instead of tree_list to hold base_fndecls. (get_basefndecls): Adjust. 2015-01-05 Jakub Jelinek Update copyright years. 2015-01-05 Marek Polacek PR c/64423 * typeck.c (cp_build_array_ref): Pass loc down to warn_array_subscript_with_type_char. Copyright (C) 2015 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.