2017-01-30 Alexandre Oliva Introduce C++ support in libcc1. * cp-tree.h (struct lang_identifier): Add oracle_looked_up. (ansi_opname): Rename to... (cp_operator_id): ... this. Adjust all callers. (ansi_assopname): Rename to... (cp_assignment_operator_id): ... this. Adjust all callers. (cp_literal_operator_id): Declare. (set_global_friend): Declare. (is_global_friend): Declare. (enum cp_oracle_request): New type. (cp_binding_oracle_function): New type. (cp_binding_oracle): Declare. (cp_finish_injected_record_type): Declare. * friend.c (global_friend): New var. (set_global_friend): New fn. (is_global_friend): New fn. (is_friend): Call is_global_friend. * name-lookup.c (cp_binding_oracle): New var. (query_oracle): New fn. (qualified_lookup_using_namespace): Call query_oracle. (lookup_name_real_1): Likewise. * parser.c (cp_literal_operator_id): Drop static. * search.c (friend_accessible_p): Call is_global_friend. * semantics.c (is_this_parameter): Accept a variable if the binding oracle is enabled. 2017-01-27 Jason Merrill PR c++/78771 - ICE with inherited constructor. * call.c (build_over_call): Call deduce_inheriting_ctor here. * pt.c (tsubst_decl): Not here. * class.c (add_method): Or here. * method.c (deduce_inheriting_ctor): Handle clones. (implicitly_declare_fn): Don't deduce inheriting ctors yet. 2017-01-27 Adam Butcher PR c++/64382 * cp/parser.c (parsing_default_capturing_generic_lambda_in_template): New function. * cp/cp-tree.h: Declare it. * cp/semantics.c (finish_id_expression): Resolve names within a default capturing generic lambda defined within a template prior to instantiation to allow for captures to be added to the closure type. 2017-01-26 Jakub Jelinek PR c++/68727 * cp-tree.def (OFFSETOF_EXPR): Bump number of operands to 2. * cp-tree.h (finish_offsetof): Add OBJECT_PTR argument. * parser.c (cp_parser_builtin_offsetof): Pass result of build_static_cast of null_pointer_node to finish_offsetof. * semantics.c (finish_offsetof): Add OBJECT_PTR argument, use it for -Winvalid-offsetof pedwarn instead of trying to guess original offsetof type from EXPR. Save OBJECT_PTR as a new second operand to OFFSETOF_EXPR. * pt.c (tsubst_copy_and_build) : Adjust finish_offsetof caller, pass the second operand of OFFSETOF_EXPR as OBJECT_PTR. 2017-01-26 Jason Merrill * name-lookup.c (parse_using_directive): Deprecate strong using. PR c++/79176 - lambda ICE with -flto -Os * decl2.c (vague_linkage_p): Handle decloned 'tors. * tree.c (decl_linkage): Likewise. 2017-01-25 Martin Sebor * decl.c (grokdeclarator): Fix a typo in a comment. 2017-01-25 Jakub Jelinek PR c++/78896 * decl.c (cp_finish_decomp): Disallow memberwise decomposition of lambda expressions. PR c++/77914 * parser.c (cp_parser_lambda_declarator_opt): Pedwarn with OPT_Wpedantic on lambda templates for -std=c++14 and higher. 2017-01-25 Maxim Ostapenko PR lto/79061 * decl.c (cxx_init_decl_processing): Pass main_input_filename to build_translation_unit_decl. 2017-01-24 Jakub Jelinek PR c++/79205 * cp-gimplify.c (cp_genericize_r): Add result of convert_from_reference on invisiref parm to p_set. 2017-01-24 Nathan Sidwell PR c++/78469 - defaulted ctor and inaccessible dtor * cp-tree.h (tsubst_flags): Add tf_no_cleanup. * init.c (build_new_1): Pass tf_no_cleanup to build_value_init. * tree.c (build_target_expr): Check tf_no_cleanup. PR c++/79118 - anon-members and constexpr * constexpr.c (cx_check_missing_mem_inits): Caller passes type not ctor decl. Recursively check anonymous members. (register_constexpr_fundef): Adjust cx_check_missing_mem_inits call. (explain_invalid_constexpr_fn): Likewise. 2017-01-23 Nathan Sidwell PR c++/71710 - template using directive of field * pt.c (tsubst_copy_and_build [COMPONENT_REF]): Move FIELD_DECL check earlier. PR c++/71406 - ICE with scope-ref'd template id exprs PR c++/77508 * typeck.c (finish_class_member_access_expr): Break up SCOPE_REF before breaking up TEMPLATE_ID_EXPR. 2017-01-20 Nathan Sidwell PR c++/78495 - wrong code inherited ctor and invisi-ref parm * cp-gimplify.c (cp_generize_r): Don't skip thunks. 2017-01-20 David Malcolm PR c++/77829 PR c++/78656 * cp-tree.h (suggest_alternatives_for): Add bool param. (suggest_alternative_in_explicit_scope): New decl. * error.c (qualified_name_lookup_error): When SCOPE is a namespace that isn't the global one, call new function suggest_alternative_in_explicit_scope, only calling suggest_alternatives_for if it fails, and disabling near match searches fort that case. When SCOPE is the global namespace, pass true for new param to suggest_alternatives_for to allow for fuzzy name lookups. * lex.c (unqualified_name_lookup_error): Pass true for new param to suggest_alternatives_for. * name-lookup.c (consider_binding_level): Add forward decl. (suggest_alternatives_for): Add "suggest_misspellings" param, using it to conditionalize the fuzzy name-lookup code. (suggest_alternative_in_explicit_scope): New function. * parser.c (cp_parser_primary_expression): When calling finish_id_expression, pass location of id_expression rather than that of id_expr_token. (cp_parser_id_expression): Convert local "unqualified_id" from tree to cp_expr to avoid implicitly dropping location information. 2017-01-20 Marek Polacek PR c/64279 * call.c (build_conditional_expr_1): Warn about duplicated branches. * semantics.c (finish_expr_stmt): Build statement using the proper location. 2017-01-19 Jason Merrill US 20 - forwarding references and class template argument deduction * cp-tree.h (TEMPLATE_TYPE_PARM_FOR_CLASS): New. * pt.c (push_template_decl_real): Set it. (maybe_adjust_types_for_deduction): Check it. (rewrite_template_parm): Copy it. US 19 - deduction guides and constructors * call.c (joust): Prefer deduction guides to constructors. * pt.c (build_deduction_guide): Set DECL_ARTIFICIAL. (deduction_guide_p): Check DECL_P. * decl.c (check_initializer): Always use build_aggr_init for array decomposition. PR c++/79130 - decomposition and direct-initialization * init.c (build_aggr_init): Communicate direct-initialization to build_vec_init. (build_vec_init): Check for array copy sooner. * parser.c (cp_parser_decomposition_declaration): Remove call to build_x_compound_expr_from_list. 2017-01-18 Jason Merrill PR c++/68666 - member variable template-id * typeck.c (finish_class_member_access_expr): Handle variable template-id. * pt.c (lookup_and_finish_template_variable): No longer static. * cp-tree.h: Declare it. 2017-01-18 Nathan Sidwell PR c++/78488 * call.c (build_over_call): When checking ellipsis conversions for an inherited ctor, make sure there is at least one conversion. 2017-01-18 Jason Merrill PR c++/78894 - ICE with class deduction and default arg * pt.c (build_deduction_guide): Set DECL_PRIMARY_TEMPLATE. 2017-01-18 Markus Trippelsdorf PR c++/77489 * mangle.c (write_discriminator): Reorganize abi warning check. 2017-01-18 Nathan Sidwell * cp-tree.h: Clarify exception spec node comment. * except.c (nothrow_spec_p): Simplify by checking node-equality. PR c++/79091 * mangle.c (write_exception_spec): Check nothrow explicitly. (write_encoding): Don't increment processing_template_decl around encoding. 2017-01-18 Markus Trippelsdorf PR c++/70182 * mangle.c (write_template_args): Add "on" for operator names. 2017-01-18 Markus Trippelsdorf PR c++/77489 * mangle.c (write_discriminator): Handle discriminator >= 10. 2017-01-17 Nathan Sidwell PR c++/61636 * cp-tree.h (maybe_generic_this_capture): Declare. * lambda.c (resolvable_dummy_lambda): New, broken out of ... (maybe_resolve_dummy): ... here. Call it. (maybe_generic_this_capture): New. * parser.c (cp_parser_postfix_expression): Speculatively capture this in generic lambda in unresolved member function call. * pt.c (tsubst_copy_and_build): Force hard error from failed member function lookup in generic lambda. 2017-01-17 Aldy Hernandez PR c++/70565 * cp-array-notation.c (expand_array_notation_exprs): Handle OMP_PARALLEL. 2017-01-11 Jason Merrill PR c++/78337 - ICE on invalid with generic lambda * semantics.c (process_outer_var_ref): Check if containing_function is null. Move inform call under complain test. 2017-01-11 Nathan Sidwell PR c++/77812 * name-lookup.c (set_namespace_binding_1): An overload of 1 decl is a new overload. 2017-01-11 Nathan Sidwell * name-lookup.c (push_overloaded_decl_1): Refactor OVERLOAD creation. 2017-01-11 Jakub Jelinek PR c++/78341 * parser.c (cp_parser_std_attribute_spec): Remove over-eager assertion. Formatting fix. PR c++/72813 * decl2.c (c_parse_final_cleanups): Set flag_syntax_only to 1 after writing PCH file. 2017-01-10 David Malcolm PR c++/77949 * parser.c (cp_parser_class_specifier_1): Only suggest inserting a missing semicolon if we have a valid insertion location for the fix-it hint. 2017-01-10 Jason Merrill FI 20, decomposition declaration with parenthesized initializer. * parser.c (cp_parser_decomposition_declaration): Use cp_parser_initializer. 2017-01-09 Jason Merrill Implement P0195R2, C++17 variadic using. * parser.c (cp_parser_using_declaration): Handle ellipsis and comma. * pt.c (tsubst_decl): Handle pack expansion in USING_DECL_SCOPE. * error.c (dump_decl): Likewise. 2017-01-09 Jakub Jelinek PR translation/79019 PR translation/79020 * semantics.c (finish_omp_clauses): Add missing whitespace to translatable strings. * cp-cilkplus.c (cpp_validate_cilk_plus_loop_aux): Fix comment typo. 2017-01-07 Jason Merrill PR c++/78948 - instantiation from discarded statement * parser.h (struct cp_parser): Remove in_discarded_stmt field. * cp-tree.h (in_discarded_stmt): Declare it. (struct saved_scope): Add discarded_stmt bitfield. (in_discarded_stmt): New macro. * decl2.c (mark_used): Check it. * parser.c (cp_parser_selection_statement): Adjust. (cp_parser_jump_statement): Adjust. 2017-01-05 Jakub Jelinek PR c++/78931 * decl.c (cp_finish_decomp): Remove probe variable, if tt is REFERENCE_REF_P, set tt to its operand. PR c++/78890 * class.c (check_field_decls): Diagnose REFERENCE_TYPE fields in unions even for C++11 and later. 2017-01-05 Nathan Sidwell PR c++/78765 * pt.c (convert_nontype_argument): Don't try and see if integral or enum expressions are constants prematurely. 2017-01-04 Marek Polacek PR c++/64767 * typeck.c (cp_build_binary_op): Warn when a pointer is compared with a zero character literal. 2017-01-04 Jakub Jelinek PR c++/78949 * typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has vector type. PR c++/78693 * parser.c (cp_parser_simple_declaration): Only complain about inconsistent auto deduction if auto_result doesn't use auto. * parser.c (cp_parser_simple_declaration): Diagnose function declaration among more than one init-declarators with auto specifier. PR c++/71182 * parser.c (cp_lexer_previous_token): Use vec_safe_address in the assertion, as lexer->buffer may be NULL. 2017-01-04 Marek Polacek PR c++/77545 PR c++/77284 * constexpr.c (potential_constant_expression_1): Handle CLEANUP_STMT. 2017-01-04 Nathan Sidwell PR c++/66735 * cp-tree.h (DECLTYPE_FOR_REF_CAPTURE): New. (lambda_capture_field_type): Update prototype. * lambda.c (lambda_capture_field_type): Add is_reference parm. Add referenceness here. (add_capture): Adjust lambda_capture_field_type call, refactor error checking. * pt.c (tsubst): Adjust lambda_capture_field_type call. 2017-01-01 Jakub Jelinek Update copyright years. Copyright (C) 2017 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.