| 2015-12-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/69005 |
| * call.c (add_template_candidate_real): Don't try to deduce X(X). |
| |
| 2015-12-22 Jason Merrill <jason@redhat.com> |
| |
| 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 <ppalka@gcc.gnu.org> |
| |
| * pt.c (make_pack_expansion): Make sure to initialize |
| ppd.type_pack_expansion_p. |
| |
| 2015-12-21 David Malcolm <dmalcolm@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <ppalka@gcc.gnu.org> |
| |
| PR c++/68978 |
| * tree.c (lvalue_kind) [MODOP_EXPR]: New case. |
| |
| 2015-12-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/67592 |
| * decl.c (grokdeclarator): Reject constexpr virtual member functions; |
| in error messages, prefer %<virtual%> and %<constexpr%> to virtual |
| and constexpr, respectively. |
| |
| 2015-12-18 Patrick Palka <ppalka@gcc.gnu.org> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <ppalka@gcc.gnu.org> |
| |
| 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 <ppalka@gcc.gnu.org> |
| |
| * tree.c (cp_tree_operand_length): Define in terms of |
| cp_tree_code_length. |
| |
| 2015-12-16 Martin Sebor <msebor@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <dmalcolm@redhat.com> |
| |
| * 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 <msebor@redhat.com> |
| |
| 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 <ppalka@gcc.gnu.org> |
| |
| 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 <jason@redhat.com> |
| |
| PR c++/68309 |
| * pt.c (instantiate_decl): Copy local_specializations for nested |
| function. |
| |
| 2015-12-09 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <msebor@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| PR c++/68760 |
| * error.c (dump_global_iord): Use DECL_SOURCE_FILE (t) |
| instead of LOCATION_FILE (input_location). |
| |
| 2015-12-07 Ryan Burn <contact@rnburn.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <dmalcolm@redhat.com> |
| |
| * 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 <cesar@codesourcery.com> |
| |
| * 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 <jason@redhat.com> |
| |
| * Make-lang.in (check-c++1z, check-c++-all): New. |
| |
| 2015-12-02 Markus Trippelsdorf <markus@trippelsdorf.de> |
| |
| PR c++/67337 |
| * mangle.c (write_template_prefix): Guard against context==NULL. |
| |
| 2015-12-02 Jason Merrill <jason@redhat.com> |
| |
| * 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 <joseph@codesourcery.com> |
| |
| PR c/68162 |
| * tree.c (c_build_qualified_type): Add extra arguments. |
| |
| 2015-12-02 Eric Botcazou <ebotcazou@adacore.com> |
| |
| 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 <thomas@codesourcery.com> |
| |
| * 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 <arnez@linux.vnet.ibm.com> |
| |
| 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 <arnez@linux.vnet.ibm.com> |
| |
| * 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 <julian@codesourcery.com> |
| Cesar Philippidis <cesar@codesourcery.com> |
| James Norris <James_Norris@mentor.com> |
| |
| * 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 <mliska@suse.cz> |
| |
| 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 <jakub@redhat.com> |
| |
| PR c/63326 |
| * parser.c (cp_parser_statement): Clear in_compound after labels. |
| |
| 2015-11-27 Martin Liska <mliska@suse.cz> |
| |
| * parser.c (cp_parser_late_parsing_cilk_simd_fn_info): |
| Release tokens. |
| |
| 2015-11-26 Andreas Arnez <arnez@linux.vnet.ibm.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| 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 <msebor@redhat.com> |
| |
| 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 <contact@rnburn.com> |
| |
| PR c++/68434 |
| * pt.c (tsubst): Set PLACEHOLDER_TYPE_CONSTRAINTS before |
| calling canonical_type_parameter. |
| |
| 2015-11-25 Jason Merrill <jason@redhat.com> |
| |
| * 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 <markus@trippelsdorf.de> |
| Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <ilya.verbin@intel.com> |
| |
| * parser.c (cp_parser_oacc_declare): Replace "ifdef ENABLE_OFFLOADING" |
| with "if (ENABLE_OFFLOADING)". |
| |
| 2015-11-23 Igor Zamyatin <igor.zamyatin@intel.com> |
| |
| PR c++/68001 |
| * cp-gimplify.c (cp_gimplify_expr): Stop the process if see an error. |
| |
| 2015-11-20 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <dmalcolm@redhat.com> |
| |
| * 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 <triegel@redhat.com> |
| |
| * except.c (do_free_exception): Use transactional wrapper. |
| |
| 2015-11-19 Jason Merrill <jason@redhat.com> |
| |
| 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 <contact@rnburn.com> |
| |
| 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 <jakub@redhat.com> |
| Manuel López-Ibáñez <manu@gcc.gnu.org> |
| |
| 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 <cesar@codesourcery.com> |
| |
| * 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 <cesar@codesourcery.com> |
| |
| * cp-gimplify.c (cp_fold_r): Add support for OACC_LOOP. |
| |
| 2015-11-17 Jason Merrill <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| * constexpr.c (cxx_eval_builtin_function_call): Use cp_fully_fold |
| to fold arguments to __builtin_constant_p. |
| |
| 2015-11-16 Kirill Yukhin <kirill.yukhin@intel.com> |
| |
| * parser.c (cp_parser_late_parsing_cilk_simd_fn_info): Look for |
| "simd" attribute as well. Update error message. |
| |
| 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> |
| |
| * parser.c (cp_parser_omp_declare_target): Adjust. |
| |
| 2015-11-14 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> |
| |
| * vtable-class-hierarchy.c (vtv_generate_init_routine): Adjust. |
| |
| 2015-11-14 Jason Merrill <jason@redhat.com> |
| |
| PR bootstrap/68346 |
| * call.c (build_new_op_1): Don't fold arguments to |
| warn_tautological_cmp. |
| |
| 2015-11-14 Jakub Jelinek <jakub@redhat.com> |
| |
| * semantics.c (finish_omp_clauses): Don't mark |
| GOMP_MAP_FIRSTPRIVATE_POINTER decls addressable. |
| |
| 2015-11-13 Kai Tietz <ktietz70@googlemail.com> |
| Marek Polacek <polacek@redhat.com> |
| Jason Merrill <jason@redhat.com> |
| |
| * 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 <dmalcolm@redhat.com> |
| |
| * error.c (pedwarn_cxx98): Pass line_table to rich_location ctor. |
| |
| 2015-11-12 James Norris <jnorris@codesourcery.com> |
| |
| * parser.c (cp_parser_oacc_declare): Remove unused. |
| |
| 2015-11-12 James Norris <jnorris@codesourcery.com> |
| Joseph Myers <joseph@codesourcery.com> |
| |
| * 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 <jason@redhat.com> |
| |
| * pt.c (check_explicit_specialization): Check the namespace after |
| we choose a template. |
| |
| 2015-11-11 Jason Merrill <jason@redhat.com> |
| |
| * decl.c (duplicate_decls): When combining typedefs, remove the |
| new type from the variants list. |
| |
| 2015-11-11 Jason Merrill <jason@redhat.com> |
| |
| * pt.c (instantiate_class_template_1): Set function_depth around |
| instantiation of lambda op(). |
| |
| 2015-11-11 Marek Polacek <polacek@redhat.com> |
| |
| 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 <dominiq@lps.ens.fr> |
| |
| PR bootstrap/68271 |
| * parser.h (cp_token): Update pragma_kind to 8. |
| |
| 2015-11-11 Andrew MacLeod <amacleod@redhat.com> |
| |
| * 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 <cesar@codesourcery.com> |
| |
| * 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 <msebor@redhat.com> |
| |
| 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 <thomas@codesourcery.com> |
| Cesar Philippidis <cesar@codesourcery.com> |
| James Norris <jnorris@codesourcery.com> |
| Julian Brown <julian@codesourcery.com> |
| Nathan Sidwell <nathan@codesourcery.com> |
| |
| * 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 <msebor@redhat.com> |
| |
| 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 <dmalcolm@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <kyrylo.tkachov@arm.com> |
| |
| * init.c (warn_placement_new_too_small): Use %wu format |
| rather than %lu when printing bytes_avail. |
| |
| 2015-11-05 Cesar Philippidis <cesar@codesourcery.com> |
| Thomas Schwinge <thomas@codesourcery.com> |
| James Norris <jnorris@codesourcery.com> |
| |
| * 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 <msebor@redhat.com> |
| |
| 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 <msebor@redhat.com> |
| |
| PR c++/67942 |
| * cp/init.c (warn_placement_new_too_small): New function. |
| (build_new_1): Call it. |
| |
| 2015-11-05 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <jakub@redhat.com> |
| Ilya Verbin <ilya.verbin@intel.com> |
| |
| * 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 <cesar@codesourcery.com> |
| |
| * (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 <maltsevm@gmail.com> |
| |
| * 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 <jason@redhat.com> |
| |
| * 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 <thomas@codesourcery.com> |
| Chung-Lin Tang <cltang@codesourcery.com> |
| |
| * parser.c (cp_parser_omp_construct, cp_parser_pragma): Handle |
| PRAGMA_OACC_ATOMIC. |
| |
| 2015-10-31 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <amacleod@redhat.com> |
| |
| * 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 <paolo.carlini@oracle.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <cesar@codesourcery.com> |
| Thomas Schwinge <thomas@codesourcery.com> |
| James Norris <jnorris@codesourcery.com> |
| Joseph Myers <joseph@codesourcery.com> |
| Julian Brown <julian@codesourcery.com> |
| Nathan Sidwell <nathan@codesourcery.com> |
| Bernd Schmidt <bschmidt@redhat.com> |
| |
| * 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 <thomas@codesourcery.com> |
| James Norris <jnorris@codesourcery.com> |
| Cesar Philippidis <cesar@codesourcery.com> |
| |
| 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 <jason@redhat.com> |
| |
| DR 2179 |
| * pt.c (process_partial_specialization): Handle error_mark_node |
| from most_specialized_partial_spec. |
| |
| 2015-10-23 Jason Merrill <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| * 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 <rguenther@suse.de> |
| |
| * semantics.c (cp_finish_omp_clause_depend_sink): Properly convert |
| before folding a MINUS_EXPR. |
| (finish_omp_clauses): Likewise. |
| |
| 2015-10-21 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| 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 <enkovich.gnu@gmail.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| * parser.c (is_cilkplus_vector_p): Don't define here. |
| |
| 2015-10-19 Jason Merrill <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| 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 <jakub@redhat.com> |
| Aldy Hernandez <aldyh@redhat.com> |
| |
| * 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 <ville.voutilainen@gmail.com> |
| |
| 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 <jason@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| PR sanitizer/67867 |
| * search.c (accessible_p): Initialize OTYPE to NULL_TREE. |
| |
| 2015-10-07 Marek Polacek <polacek@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| PR c++/67863 |
| * call.c (build_conditional_expr_1): Build the COND_EXPR with |
| a location. |
| |
| 2015-10-05 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <richard.sandiford@arm.com> |
| |
| * tree.c (cp_tree_equal): Use real_equal instead of |
| REAL_VALUES_EQUAL. |
| |
| 2015-10-04 Jason Merrill <jason@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| 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 <ville.voutilainen@gmail.com> |
| |
| 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 <ville.voutilainen@gmail.com> |
| |
| Fix small typos in the coding rule enforcement warnings. |
| * parser.c (cp_parser_namespace_definition): Replace 'namepace' |
| with 'namespace'. |
| |
| 2015-09-22 Nathan Sidwell <nathan@codesourcery.com> |
| |
| * 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 <jason@redhat.com> |
| |
| * 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 <ville.voutilainen@gmail.com> |
| |
| 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 <tbsaunde@tbsaunde.org> |
| |
| * cp-gimplify.c (gimplify_must_not_throw_expr): Adjust. |
| |
| 2015-09-18 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| Implement nested namespace definitions. |
| * parser.c (cp_parser_namespace_definition): Grok nested namespace |
| definitions. |
| |
| 2015-09-18 Manuel López-Ibáñez <manu@gcc.gnu.org> |
| |
| * parser.c (pragma_lex): Add loc argument. Rearrange the code to |
| make it more similar to the C version. |
| |
| 2015-09-17 Andrew Sutton <andrew.n.sutton@gmail.com> |
| Jason Merrill <jason@redhat.com> |
| |
| 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 <rguenther@suse.de> |
| |
| * 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 <jason@redhat.com> |
| |
| PR c++/44282 |
| * mangle.c (write_CV_qualifiers_for_type): Also warn about regparm |
| mangling with lower -fabi-version. |
| |
| 2015-09-14 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <mjw@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| 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 <mjw@redhat.com> |
| |
| * typeck.c (cp_build_binary_op): Check and warn when nonnull arg |
| parm against NULL. |
| |
| 2015-09-10 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/67522 |
| * semantics.c (handle_omp_array_sections_1): Only run |
| type_dependent_expression_p on VAR_DECL/PARM_DECLs. |
| (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>: 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 <paolo.carlini@oracle.com> |
| |
| PR c++/53184 |
| * decl2.c (constrain_class_visibility): Use Wsubobject-linkage. |
| |
| 2015-09-09 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| PR c++/67041 |
| * pt.c (tsubst_copy_and_build): Handle variables like functions. |
| |
| 2015-09-08 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <msebor@redhat.com> |
| |
| 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 <balaji.v.iyer@intel.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| 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 <markus@trippelsdorf.de> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| PR c++/63693 |
| * pt.c (resolve_typename_type): Use CLASSTYPE_PRIMARY_TEMPLATE_TYPE |
| only on class types. |
| |
| 2015-08-21 Jason Merrill <jason@redhat.com> |
| |
| PR c++/67240 |
| * constraint.cc (satisfy_implicit_conversion_constraint): Also |
| check for NULL_TREE. |
| |
| 2015-08-21 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokvardecl): Simplify the latter. |
| |
| 2015-08-21 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokvardecl): Complete check added for c++/67065. |
| |
| 2015-08-20 Jason Merrill <jason@redhat.com> |
| |
| * name-lookup.c (hidden_name_p): Handle OVERLOAD. |
| |
| 2015-08-20 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/67065 |
| * decl.c (grokvardecl): Reject 'main' as global variable. |
| |
| 2015-08-19 Jason Merrill <jason@redhat.com> |
| |
| 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 <tbsaunde@tbsaunde.org> |
| |
| * 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 <jason@redhat.com> |
| |
| DR 1155 |
| * pt.c (convert_nontype_argument): Allow internal linkage in C++11 |
| and up. |
| |
| 2015-08-17 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/67216 |
| * call.c (null_ptr_cst_p): In C++11 return 'false' for 'false'. |
| |
| 2015-08-17 Jason Merrill <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| PR c++/65974 |
| * decl2.c (mark_vtable_entries): Suppress -Wdeprecated. |
| |
| 2015-08-12 Jason Merrill <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <andrew.n.sutton@gmail.com> |
| Braden Obrzut <admin@maniacsvault.net> |
| Jason Merrill <jason@redhat.com> |
| Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| * pt.c (lookup_template_class_1): Clear elt.spec. |
| |
| * tree.c (build_target_expr): Copy the location from value. |
| |
| 2015-08-02 Patrick Palka <ppalka@gcc.gnu.org> |
| |
| * 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 <cmtice@google.com> |
| |
| PR 66521 |
| * mangle.c : Add vtable-verify.h to include files. |
| (get_mangled_vtable_map_var_name): If the DECL_ASSEMBLER_NAME |
| is "<anon>" 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 <polacek@redhat.com> |
| |
| PR sanitizer/66977 |
| * typeck.c (get_member_function_from_ptrfunc): Don't sanitize |
| RSHIFT_EXPR. |
| |
| 2015-07-30 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * 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 <jason@redhat.com> |
| |
| DR 1558 |
| PR c++/67021 |
| * pt.c (tsubst_decl) [TYPE_DECL]: Clear TYPE_DEPENDENT_P_VALID. |
| |
| 2015-07-28 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * 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 <jason@redhat.com> |
| |
| * constexpr.c (cxx_eval_call_expression): Don't add this call to |
| the hash table if !depth_ok. |
| |
| 2015-07-27 Marek Polacek <polacek@redhat.com> |
| |
| 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 <ppalka@gcc.gnu.org> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| * 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 <ppalka@gcc.gnu.org> |
| |
| PR c++/66857 |
| * cvt.c (ocp_convert): Don't call scalar_constant_value when |
| converting to a class type. |
| |
| 2015-07-24 Jason Merrill <jason@redhat.com> |
| |
| PR c++/64969 |
| * pt.c (splice_late_return_type): Correct deduced return type for |
| abbreviated function template. |
| |
| 2015-07-24 Richard Biener <rguenther@suse.de> |
| |
| * init.c (build_vec_init): Build iterator bound in the same |
| type as the iterator. |
| |
| 2015-07-23 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/66572 |
| * pt.c (tsubst_copy_and_build): Add warn_logical_op sentinel. |
| |
| 2015-07-23 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/52987 |
| * parser.c (cp_parser_simple_declaration): Robustify check avoiding |
| redundant error messages. |
| |
| 2015-07-21 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokdeclarator): For an erroneous template parameter |
| propagate error_mark_node as type. |
| |
| 2015-07-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/55095 |
| * typeck.c (cp_build_binary_op): Warn about left shift overflows. |
| |
| 2015-07-15 Jason Merrill <jason@redhat.com> |
| |
| 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 <ppalka@gcc.gnu.org> |
| |
| 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 <azzaronea@gmail.com> |
| |
| PR c++/65071 |
| * parser.c (cp_parser_sizeof_pack): Also consider template template |
| parameters. |
| |
| 2015-07-14 Jason Merrill <jason@redhat.com> |
| |
| * call.c (build_new_method_call_1): Call reshape_init. |
| |
| 2015-07-14 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * pt.c (check_template_shadow): Emit error + inform instead of |
| two errors. |
| |
| 2015-07-13 Patrick Palka <ppalka@gcc.gnu.org> |
| |
| 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 <aldyh@redhat.com> |
| |
| * 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 <ppalka@gcc.gnu.org> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| 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 <jason@redhat.com> |
| |
| * 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 <ebotcazou@adacore.com> |
| |
| * decl2.c (cpp_check): Revert latest change. |
| |
| 2015-07-09 Jason Merrill <jason@redhat.com> |
| |
| * 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 <andrew.n.sutton@gmail.com> |
| |
| * 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 <paolo.carlini@oracle.com> |
| |
| * typeck.c (warn_args_num): Rename to error_args_num. |
| (convert_arguments): Adjust calls. |
| |
| 2015-07-09 Andrew MacLeod <amacleod@redhat.com> |
| |
| * cp-ubsan.c: Don't include alloc-pool.h or lto-streamer.h. |
| |
| 2015-07-08 Eric Botcazou <ebotcazou@adacore.com> |
| |
| * decl2.c (cpp_check): Deal with IS_CONSTEXPR. |
| |
| 2015-07-08 Jakub Jelinek <jakub@redhat.com> |
| |
| * decl.c (grokfndecl): Handle flag_openmp_simd like flag_openmp. |
| * pt.c (apply_late_template_attributes): Likewise. |
| |
| 2015-07-08 Marek Polacek <polacek@redhat.com> |
| |
| 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 <amacleod@redhat.com> |
| |
| * 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 <ebotcazou@adacore.com> |
| |
| * decl2.c (cpp_check): Deal with IS_MOVE_CONSTRUCTOR. |
| |
| 2015-07-06 Jason Merrill <jason@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <andrew.n.sutton@gmail.com> |
| |
| * pt.c (type_dependent_expression_p): Handle expressions |
| that refer to variable templates. |
| |
| 2015-07-01 Jason Merrill <jason@redhat.com> |
| |
| * 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 <paolo.carlini@oracle.com> |
| |
| PR c++/60365 |
| * parser.c (cp_parser_check_std_attribute): New. |
| (cp_parser_std_attribute_list): Call it. |
| |
| 2015-07-01 Patrick Palka <ppalka@gcc.gnu.org> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| PR c++/65977 |
| * decl.c (grokfndecl): Allow constexpr declarations of friend |
| template specializations. |
| |
| 2015-06-29 Manuel López-Ibáñez <manu@gcc.gnu.org> |
| |
| PR fortran/66605 |
| * decl.c (finish_function): Call do_warn_unused_parameter. |
| |
| 2015-06-29 Marek Polacek <polacek@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| * 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 <polacek@redhat.com> |
| |
| * 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 <schwab@linux-m68k.org> |
| |
| * pt.c (check_unstripped_args): Mark parameter as unused. |
| |
| 2015-06-26 Jason Merrill <jason@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| * 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 <amacleod@redhat.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * 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 <richard.sandiford@arm.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <adam@jessamine.co.uk> |
| |
| 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 <ppalka@gcc.gnu.org> |
| |
| Revert: |
| 2015-06-23 Patrick Palka <ppalka@gcc.gnu.org> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| PR c++/65811 |
| * decl.c (duplicate_decls): Adjust DECL_COMDAT of newdecl. |
| |
| 2015-06-23 Patrick Palka <ppalka@gcc.gnu.org> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <derodat@adacore.com> |
| |
| * 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 <derodat@adacore.com> |
| |
| * decl2.c (cpp_check): Deal with HAS_DEPENDENT_TEMPLATE_ARGS. |
| |
| 2015-06-22 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokdeclarator): Use declspecs->locations[ds_virtual]. |
| |
| 2015-06-22 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * decl.c (grokdeclarator): Remove pointless code. |
| |
| 2015-06-22 Jason Merrill <jason@redhat.com> |
| |
| PR c++/66515 |
| * call.c (implicit_conversion): Only reshape for classes. |
| |
| 2015-06-22 Mikhail Maltsev <maltsevm@gmail.com> |
| |
| * 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 <maltsevm@gmail.com> |
| |
| PR c++/65882 |
| * call.c (build_new_op_1): Check tf_warning flag in all cases. |
| |
| 2015-06-19 Jason Merrill <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| PR c++/66515 |
| * call.c (implicit_conversion): Call reshape_init here, early. |
| (build_aggr_conv): Not here. |
| |
| 2015-06-17 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <amacleod@redhat.com> |
| |
| * 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 <amacleod@redhat.com> |
| |
| * 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 <paolo.carlini@oracle.com> |
| |
| PR c++/59682 |
| * parser.c (cp_parser_new_placement): Reject an empty expression-list. |
| |
| 2015-06-16 Jason Merrill <jason@redhat.com> |
| |
| 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 <nathan@acm.org> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| 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 <ppalka@gcc.gnu.org> |
| |
| * call.c: Remove comment documenting the long-deleted |
| function build_method_call. |
| |
| 2015-06-13 Patrick Palka <ppalka@gcc.gnu.org> |
| |
| PR c++/65168 |
| * typeck.c (cp_build_binary_op): Warn when comparing an address |
| of a reference against NULL. |
| |
| 2015-06-12 Jason Merrill <jason@redhat.com> |
| |
| PR c++/65719 |
| * pt.c (tsubst_decl) [VAR_DECL]: Mark namespace-scope |
| variables as DECL_NOT_REALLY_EXTERN. |
| |
| 2015-06-11 Jason Merrill <jason@redhat.com> |
| |
| 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 <derodat@adacore.com> |
| |
| * decl.c (cxx_init_decl_processing): Register the main |
| translation unit through the new debug hook. |
| |
| 2015-06-10 Jason Merrill <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| PR c++/65815 |
| * typeck2.c (digest_nsdmi_init): On aggregates use reshape_init. |
| * init.c (expand_default_init): Likewise. |
| |
| 2015-06-09 Jason Merrill <jason@redhat.com> |
| |
| 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 <amacleod@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <aldyh@redhat.com> |
| |
| * 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 <nathan@acm.org> |
| |
| 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 <amacleod@redhat.com> |
| |
| * 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 <ramana.radhakrishnan@arm.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <manu@gcc.gnu.org> |
| Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| * decl.c (check_tag_decl): Use declspecs->locations as locations in |
| error_at and warning_at calls. |
| |
| 2015-06-03 Marek Polacek <polacek@redhat.com> |
| |
| 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 <andres.tiraboschi@tallertechnologies.com> |
| |
| * decl.c (start_function): Call plugin before parsing. |
| (finish_function): Call plugin after parsing. |
| |
| 2015-06-02 Patrick Palka <patrick@parcs.ath.cx> |
| |
| * 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 <paolo.carlini@oracle.com> |
| |
| PR c++/61683 |
| * parser.c (cp_parser_mem_initializer): Allow for decltype-specifier. |
| |
| 2015-06-01 Jason Merrill <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| * 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 <nathan@acm.org> |
| |
| PR c++/66243 |
| * decl.c (build_enumerator): Don't silently convert scoped enums. |
| |
| 2015-05-24 Jan Hubicka <hubicka@ucw.cz> |
| |
| PR lto/66180 |
| * mangle.c (mangle_decl): Mangle anonymous namespace types as |
| "<anon>". |
| |
| 2015-05-23 Nathan Sidwell <nathan@acm.org> |
| |
| PR c++/65936 |
| * pt.c (lookup_template_class_1): Copy may_alias attribute too. |
| |
| 2015-05-22 Jim Wilson <jim.wilson@linaro.org> |
| |
| * Make-lang.in (check_g++_parallelize): Update comment. |
| |
| 2015-05-22 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/65598 |
| * decl.c (grokdeclarator): Use the correct location in error |
| messages about 'explicit'. |
| |
| 2015-05-22 Marek Polacek <polacek@redhat.com> |
| 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 <nathan@acm.org> |
| |
| PR c++/60943 |
| * decl2.c (change_return_type): Propagate FUNCTION_REF_QUALIFIED. |
| |
| 2015-05-21 Marek Polacek <polacek@redhat.com> |
| |
| * typeck.c (warn_args_num): Don't print "declare here" for builtins. |
| |
| 2015-05-20 Jason Merrill <jason@redhat.com> |
| |
| * 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 <nathan@acm.org> |
| |
| PR c++/65954 |
| * typeck.c (finish_class_member_access_expr): Diagnose failed |
| lookup of enum class member. |
| |
| 2015-05-19 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <maltsevm@gmail.com> |
| |
| * typeck.c (composite_pointer_type): Use std::swap instead of explicit |
| swaps. |
| |
| 2015-05-18 Jason Merrill <jason@redhat.com> |
| |
| * 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 <manu@gcc.gnu.org> |
| |
| 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 <dmalcolm@redhat.com> |
| |
| * 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 <hubicka@ucw.cz> |
| |
| * 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 <aldyh@redhat.com> |
| |
| PR bootstrap/66085 |
| * decl2.c (note_mangling_alias): Declare arguments as unused. |
| |
| 2015-05-08 Jason Merrill <jason@redhat.com> |
| |
| * cp-gimplify.c, parser.c: Adjust to -Wc++11-compat replacing |
| -Wc++0x-compat. |
| |
| 2015-05-08 Jason Merrill <jason@redhat.com> |
| |
| * 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 <aldyh@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| PR c/65179 |
| * typeck.c (cp_build_binary_op): Warn when left shifting a negative |
| value. |
| |
| 2015-05-07 Jason Merrill <jason@redhat.com> |
| |
| DR 1467 |
| PR c++/51747 |
| * typeck2.c (digest_init_r): Fix single element list. |
| |
| 2015-05-05 Jason Merrill <jason@redhat.com> |
| |
| * 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 <dmalcolm@redhat.com> |
| |
| * 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 <paolo.carlini@oracle.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| Prathamesh Kulharni <prathamesh.kulkarni@linaro.org> |
| |
| PR c++/65858 |
| * typeck2.c (check_narrowing): Set ok = true when pedwarn returns |
| false. |
| |
| 2015-04-30 David Malcolm <dmalcolm@redhat.com> |
| |
| * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove spurious |
| trailing semicolon. |
| |
| 2015-04-29 Jason Merrill <jason@redhat.com> |
| |
| PR c++/50800 |
| * tree.c (apply_identity_attributes): Fix handling of classes. |
| |
| 2015-04-29 Thomas Schwinge <thomas@codesourcery.com> |
| |
| * parser.c (cp_parser_oacc_enter_exit_data): Use |
| OMP_STANDALONE_CLAUSES. |
| |
| 2015-04-29 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/64667 |
| * init.c (perform_member_init): Handle references for -Winit-self. |
| |
| 2015-04-29 Thomas Schwinge <thomas@codesourcery.com> |
| |
| * pt.c (tsubst_expr) <OMP_TARGET_UPDATE>: Use |
| OMP_TARGET_UPDATE_CLAUSES instead of OMP_CLAUSES. |
| |
| 2015-04-28 Jason Merrill <jason@redhat.com> |
| |
| 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 <tbsaunde+gcc@tbsaunde.org> |
| |
| * class.c (layout_class_type): Remove check if |
| PCC_BITFIELD_TYPE_MATTERS is defined. |
| |
| 2015-04-27 Jim Wilson <jim.wilson@linaro.org> |
| |
| * Make-lang.in (c++.mostlyclean): Remove xg++, g++-cross, and cc1plus. |
| |
| 2015-04-24 Jason Merrill <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| PR c++/65801 |
| * typeck2.c (check_narrowing): In C++11 mode too, -Wno-narrowing |
| suppresses the diagnostic. |
| |
| 2015-04-20 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| 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 <ilya.verbin@intel.com> |
| |
| * parser.c (cp_parser_omp_target_update): Add missed %> to error_at (). |
| |
| 2015-04-16 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * class.c (resolve_address_of_overloaded_function, instantiate_type): |
| Rename tsubst_flags_t parameter flags -> complain. |
| |
| 2015-04-16 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| * 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 <jason@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| Marek Polacek <polacek@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| * call.c (enforce_access): Emit error + inform. |
| |
| 2015-04-15 Marek Polacek <polacek@redhat.com> |
| |
| * 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 <maltsevm@gmail.com> |
| |
| * tree.c (replace_placeholders_t): Remove unused type. |
| (replace_placeholders): Remove unused pset. |
| |
| 2015-04-14 Jason Merrill <jason@redhat.com> |
| |
| * 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 <david_work@me.com> |
| |
| PR c++/59766 |
| * decl.c (grokdeclarator): Do not flag friends with deduced return. |
| |
| 2015-04-14 Momchil Velikov <momchil.velikov@gmail.com> |
| Jason Merrill <jason@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| PR c++/64085 |
| * lambda.c (add_capture): Use dependent_type_p for capture by |
| reference too. |
| |
| 2015-04-02 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/65642 |
| * constexpr.c (cxx_eval_pointer_plus_expression): Call |
| cxx_eval_constant_expression on the first operand. |
| |
| 2015-04-01 Jason Merrill <jason@redhat.com> |
| |
| PR c++/65625 |
| * decl.c (make_typename_type): Handle seeing a variable template. |
| |
| 2015-04-01 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| PR c++/65390 |
| * tree.c (build_cplus_array_type): Use dependent_type_p rather than |
| checking for constness. |
| |
| 2015-03-30 Marek Polacek <polacek@redhat.com> |
| |
| 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 <burnus@net-b.de> |
| |
| 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 <polacek@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| PR c++/65509 |
| * decl.c (make_rtl_for_nonlocal_decl): Don't defer static |
| constants. |
| |
| 2015-03-26 Mikhail Maltsev <maltsevm@gmail.com> |
| |
| PR c++/65154 |
| * init.c (build_vec_init): Fix initializing aggregates |
| with empty init list. |
| |
| 2015-03-26 Jason Merrill <jason@redhat.com> |
| |
| PR c++/65525 |
| * constexpr.c (potential_constant_expression_1): Handle MEM_REF. |
| |
| 2015-03-25 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/65558 |
| * name-lookup.c (handle_namespace_attrs): Ignore abi_tag attribute |
| on an anonymous namespace. |
| |
| 2015-03-25 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/61670 |
| * class.c (remove_zero_width_bit_fields): Check for null DECL_SIZE. |
| |
| 2015-03-24 Jason Merrill <jason@redhat.com> |
| |
| 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 <polacek@redhat.com> |
| |
| PR c++/65398 |
| * constexpr.c (cxx_fold_indirect_ref): Transform *(&A[i] p+ j) into |
| A[i + j]. |
| |
| 2015-03-20 Marek Polacek <polacek@redhat.com> |
| |
| PR c++/65072 |
| * typeck.c (lookup_anon_field): Make sure we're dealing with the main |
| variant. |
| |
| 2015-03-19 Jason Merrill <jason@redhat.com> |
| |
| 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 <jakub@redhat.com> |
| |
| * decl2.c (cplus_decl_attributes): Also add "omp declare target" |
| attribute for DECL_EXTERNAL VAR_DECLs. |
| |
| 2015-03-18 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| 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 <jason@redhat.com> |
| |
| PR c++/65061 |
| * parser.c (cp_parser_template_name): Call strip_using_decl. |
| |
| 2015-03-16 Marek Polacek <polacek@redhat.com> |
| |
| DR 1688 |
| PR c++/65327 |
| * decl.c (grokdeclarator): Allow volatile and constexpr together. |
| |
| 2015-03-12 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/65323 |
| * decl.c (check_default_argument): Don't call |
| maybe_warn_zero_as_null_pointer_constant. |
| |
| 2015-03-11 Aldy Hernandez <aldyh@redhat.com> |
| |
| * 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 <paolo.carlini@oracle.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| PR c++/65333 |
| DR 1558 |
| * pt.c (dependent_type_p_r): Check both class and alias template args. |
| |
| 2015-03-10 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| PR c++/65339 |
| * call.c: Don't call maybe_resolve_dummy when calling a constructor. |
| |
| 2015-03-09 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <aldyh@redhat.com> |
| |
| * ptree.c (cxx_print_lambda_node): New. |
| (cxx_print_xnode): Handle LAMBDA_EXPR. |
| |
| 2015-03-03 Aldy Hernandez <aldyh@redhat.com> |
| |
| PR c++/65295 |
| * constexpr.c (cxx_eval_constant_expression): Remove assert in |
| RESULT_DECL handling. |
| |
| 2015-02-26 Marek Polacek <polacek@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <paolo.carlini@oracle.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/65075 |
| * constexpr.c (check_constexpr_bind_expr_vars): Allow |
| implicit typedefs for lambda types. |
| |
| 2015-02-13 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/60894 |
| * decl.c (lookup_and_check_tag): Use strip_using_decl. |
| |
| 2015-02-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/65054 |
| * pt.c (template_args_equal): Look through conversions here. |
| * tree.c (cp_tree_equal): Not here. |
| |
| 2015-02-13 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/60211 |
| * parser.c (cp_parser_pragma): Diagnose PRAGMA_IVDEP at |
| pragma_external context. |
| |
| 2015-02-13 Jason Merrill <jason@redhat.com> |
| |
| PR c++/65051 |
| * call.c (reference_binding): Don't look for bad conversion |
| if TO is incomplete. |
| |
| 2015-02-13 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/64970 |
| * decl.c (make_typename_type): Pass tsubst_flags_t argument |
| to lookup_template_class. |
| |
| 2015-02-13 Jakub Jelinek <jakub@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <azzaronea@gmail.com> |
| |
| 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 <jakub@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| PR c++/64994 |
| * constexpr.c (cxx_eval_call_expression): Walk the clone list. |
| |
| 2015-02-10 Jan Hubicka <hubicka@ucw.cz> |
| |
| PR ipa/64982 |
| * method.c (use_thunk): Do not check for stdarg thunks. |
| |
| 2015-02-06 Jason Merrill <jason@redhat.com> |
| |
| PR c++/64899 |
| * init.c (build_vec_init): Handle default-initialized array with |
| constexpr default constructor. |
| |
| 2015-02-04 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c/64824 |
| PR c/64868 |
| * parser.c (cp_parser_omp_atomic): Handle RDIV_EXPR. |
| |
| 2015-02-03 Paolo Carlini <paolo.carlini@oracle.com> |
| |
| PR c++/64877 |
| * typeck.c (cp_build_binary_op): Avoid spurious -Waddress warnings |
| for generated expressions. |
| |
| 2015-02-02 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| PR c++/64901 |
| * decl.c (duplicate_decls): Also duplicate DECL_FINAL_P and |
| DECL_OVERRIDE_P. |
| |
| 2015-02-02 Jason Merrill <jason@redhat.com> |
| |
| * tree.c (handle_abi_tag_attribute): Diagnose invalid arguments. |
| |
| 2015-01-30 Joseph Myers <joseph@codesourcery.com> |
| |
| * 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 <jakub@redhat.com> |
| |
| PR c++/64717 |
| * cp-ubsan.c (cp_ubsan_instrument_vptr): Don't wrap vptr |
| into SAVE_EXPR. |
| |
| 2015-01-29 Jason Merrill <jason@redhat.com> |
| |
| 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 <cmtice@google.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <rguenther@suse.de> |
| |
| 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 <paolo.carlini@oracle.com> |
| |
| PR c++/58614 |
| * pt.c (unify): When BRACE_ENCLOSED_INITIALIZER_P (arg), handle |
| TREE_TYPE (elt) == error_mark_node. |
| |
| 2015-01-15 Jan Hubicka <hubicka@ucw.cz> |
| |
| PR tree-optimization/62053 |
| * tree.c (build_cplus_array_type): Layout type after variants are set. |
| |
| 2015-01-15 Jakub Jelinek <jakub@redhat.com> |
| |
| * 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 <momchil.velikov@gmail.com> |
| |
| 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 <jason@redhat.com> |
| |
| 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 <thomas@codesourcery.com> |
| James Norris <jnorris@codesourcery.com> |
| Cesar Philippidis <cesar@codesourcery.com> |
| Ilmir Usmanov <i.usmanov@samsung.com> |
| Jakub Jelinek <jakub@redhat.com> |
| |
| * 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 <paolo.carlini@oracle.com> |
| |
| PR c++/58671 |
| * decl2.c (var_defined_without_dynamic_init): Handle gracefully |
| self-initialization. |
| |
| 2015-01-13 Jason Merrill <jason@redhat.com> |
| |
| 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<T...>. |
| |
| 2015-01-12 Jason Merrill <jason@redhat.com> |
| |
| 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 <michael.collison@linaro.org> |
| |
| * 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 <jason@redhat.com> |
| |
| * 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 <jason@redhat.com> |
| |
| * 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 <paolo.carlini@oracle.com> |
| |
| 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 <jason@redhat.com> |
| |
| * 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 <ville.voutilainen@gmail.com> |
| |
| PR c++/64489 |
| * class.c (check_field_decls): Make copy assignment operators |
| complex only in c++98 mode. |
| |
| 2015-01-05 Trevor Saunders <tsaunders@mozilla.com> |
| |
| PR c++/31397 |
| * class.c (check_for_override): Warn when a virtual function is an |
| override not marked override. |
| |
| 2015-01-05 Trevor Saunders <tsaunders@mozilla.com> |
| |
| * class.c (warn_hidden): Use auto_vec<tree> instead of tree_list to |
| hold base_fndecls. |
| (get_basefndecls): Adjust. |
| |
| 2015-01-05 Jakub Jelinek <jakub@redhat.com> |
| |
| Update copyright years. |
| |
| 2015-01-05 Marek Polacek <polacek@redhat.com> |
| |
| 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. |