PR c++/69481
[official-gcc.git] / gcc / cp / ChangeLog
blob3404e88ed6189429a18e30274e72872e6b407e47
1 2016-12-14  Nathan Sidwell  <nathan@acm.org>
3         PR c++/69481
4         * cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use
5         TYPE_ALIAS_TEMPLATE_INFO for aliases.
7 2016-12-13  Nathan Sidwell  <nathan@acm.org>
9         PR c++/69481
10         * cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking.
11         (TYPE_ALIAS_TEMPLATE_INFO): New.
12         (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New.  Use those macros.
13         * error.c (dump_alias_template_specialization): Adjust.
14         * pt.c (maybe_process_partial_specialization,
15         iterative_has_template_arg, find_parameter_packs_r,
16         alias_template_specialization_p, dependent_alias_template_spec_p,
17         get_underlying_template, lookup_template_class_1, unify): Adjust
18         template using decl access.
20 2016-12-11  Paolo Carlini  <paolo.carlini@oracle.com>
22         PR c++/78637
23         * parser.c (cp_parser_namespace_definition): Increment
24         nested_definition_count only if push_namespace succeeds.
26 2016-12-08  Nathan Sidwell  <nathan@acm.org>
28         PR c++/78551
29         * constexpr.c (extract_string_elt): New.  Broken out of ...
30         (cxx_eval_array_reference): ... here.  Call it.
31         (cxx_eval_store_expression): Convert init by STRING_CST into
32         CONSTRUCTOR, if needed.
34 2016-12-08  Jakub Jelinek  <jakub@redhat.com>
36         P0003R5 - removal of dynamic exception specification from C++17
37         * parser.c (cp_parser_exception_specification_opt): For C++17
38         error out on throw ( type-id-list ), for C++11 and C++14 issue
39         -Wdeprecated warning on it.  Formatting fix.  Treat throw()
40         in C++17 as noexcept(true).
42 2016-12-07  Martin Jambor  <mjambor@suse.cz>
44         PR c++/78589
45         * error.c (dump_decl): Use dump_function_name to dump
46         !DECL_LANG_SPECIFIC function decls with no or self-referencing
47         abstract origin.
49 2016-12-07  Nathan Sidwell  <nathan@acm.org>
51         * pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow
52         and avoid re-tsubsting type.
54         * cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER &
55         CPTI_DECLTYPE_AUTO_IDENTIFIER.
56         (auto_identifier, decltype_auto_identifier): New.
57         *decl.c (initialize_predefined_identifiers): Add 'auto' and
58         'decltype(auto)'.
59         (grokdeclarator): Use cached identifier.
60         * pt.c (make_decltype_auto, make_auto, make_constrained_auto,
61         is_auto): Likewise.
63 2016-12-02  Jakub Jelinek  <jakub@redhat.com>
65         PR c++/78649
66         * pt.c (tsubst_init): Don't call build_value_init if decl's type
67         is error_mark_node.
69 2016-12-02  Cesar Philippidis  <cesar@codesourcery.com>
70             James Norris  <jnorris@codesourcery.com>
72         * parser.c (cp_parser_oacc_enter_exit_data): Update diagnostics.
73         (cp_parser_pragma): Error when PRAGMA_OACC_{ENTER_DATA,
74         EXIT_DATA,WAIT} are not used in compound statements.
76 2016-12-01  Jason Merrill  <jason@redhat.com>
78         * call.c (add_function_candidate): Also exclude inherited ctors
79         that take a type reference-related to the derived class.
81         * call.c (add_function_candidate): Exclude inherited copy/move
82         ctors.
84 2016-11-29  David Malcolm  <dmalcolm@redhat.com>
86         PR c++/77922
87         * name-lookup.c (lookup_name_fuzzy): Filter out reserved words
88         that were filtered out by init_reswords.
90 2016-11-28  Jakub Jelinek  <jakub@redhat.com>
91             Jason Merrill  <jason@redhat.com>
93         PR c++/72808
94         * decl.c (finish_enum_value_list): Call fixup_type_variants on
95         current_class_type after
96         insert_late_enum_def_into_classtype_sorted_fields.
98 2016-11-28  Jakub Jelinek  <jakub@redhat.com>
100         PR c++/77591
101         * typeck.c (maybe_warn_about_returning_address_of_local): Optimize
102         whats_returned through fold_for_warn.
104 2016-11-27  Jason Merrill  <jason@redhat.com>
106         PR c++/77907
107         * constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.
109 2016-11-24  Martin Liska  <mliska@suse.cz>
111         PR bootstrap/78493
112         * parser.c (cp_parser_range_for): Use safe_push instead of quick_push.
114 2016-11-23  Jakub Jelinek  <jakub@redhat.com>
116         PR c++/77907
117         * cp-gimplify.c (cp_fold) <case CALL_EXPR>: When calling constructor
118         and maybe_constant_value returns non-CALL_EXPR, create INIT_EXPR
119         with the object on lhs and maybe_constant_value returned expr on rhs.
121         PR c++/71450
122         * pt.c (tsubst_copy): Return error_mark_node when mark_used
123         fails, even when complain & tf_error.
125         PR c++/77739
126         * cp-gimplify.c (cp_gimplify_tree) <case VEC_INIT_EXPR>: Pass
127         false as handle_invisiref_parm_p to cp_genericize_tree.
128         (struct cp_genericize_data): Add handle_invisiref_parm_p field.
129         (cp_genericize_r): Don't wrap is_invisiref_parm into references
130         if !wtd->handle_invisiref_parm_p.
131         (cp_genericize_tree): Add handle_invisiref_parm_p argument,
132         set wtd.handle_invisiref_parm_p to it.
133         (cp_genericize): Pass true as handle_invisiref_parm_p to
134         cp_genericize_tree.  Formatting fix.
136 2016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>
138         PR c++/71973
139         * decl.c (duplicate_decls): Warn when a built-in function is redefined.
140         Don't overload builtin functions with C++ functions.
141         Handle const_tm_ptr_type_node like file_ptr_node.
142         Copy the TREE_NOTHROW flag unmodified to the old decl.
144 2016-11-18  Jason Merrill  <jason@redhat.com>
146         PR objc++/78418 - ICE in string tests on darwin
147         * tree.c (lvalue_kind): Guard DECL_HAS_VALUE_EXPR_P.
149 2016-11-18  Jakub Jelinek  <jakub@redhat.com>
151         PR c++/77285
152         * mangle.c (mangle_tls_init_fn, mangle_tls_wrapper_fn): Call
153         check_abi_tags.
155 2016-11-18  Jason Merrill  <jason@redhat.com>
157         PR c++/67631 - list-init and explicit conversions
158         * semantics.c (finish_compound_literal): Call digest_init_flags.
159         * typeck2.c (digest_init_flags): Add complain parm.
160         (store_init_value): Pass it.
162 2016-11-18  Richard Sandiford  <richard.sandiford@arm.com>
163             Alan Hayward  <alan.hayward@arm.com>
164             David Sherwood  <david.sherwood@arm.com>
166         * class.c (finish_struct_bits): Use SET_DECL_MODE.
167         (build_base_field_1, layout_class_type, finish_struct_1): Likewise.
168         * decl.c (make_label_decl): Likewise.
169         * pt.c (tsubst_decl): Likewise.
171 2016-11-17  Jason Merrill  <jason@redhat.com>
173         PR c++/78193 - inherited ctor regressions on sparc32.
174         * call.c (build_over_call): Don't set CALL_FROM_THUNK_P here.
175         (build_call_a): Set it here, and don't insert EMPTY_CLASS_EXPR.
176         (convert_like_real) [ck_rvalue]: Also pass non-addressable
177         types along directly.
179 2016-11-17  Paolo Carlini  <paolo.carlini@oracle.com>
181         PR c++/55080
182         * parser.c (cp_parser_non_integral_constant_expression): Issue a
183         pedwarn instead of an error for case NIC_FLOAT.
185 2016-11-17  Jason Merrill  <jason@redhat.com>
187         PR c++/78124 - list-initialization and inherited ctor
188         * name-lookup.c (do_class_using_decl): Set CLASSTYPE_NON_AGGREGATE.
190         PR c++/78369 - {} as default argument
191         * call.c (build_special_member_call): Handle CONSTRUCTOR.
193         PR c++/68377
194         * parser.c (cp_parser_fold_expression): Check TREE_NO_WARNING.
196 2016-11-16  Jason Merrill  <jason@redhat.com>
198         PR c++/78373
199         * decl.c (cp_finish_decl): Don't set TREE_CONSTANT on a reference.
200         * typeck2.c (store_init_value): Likewise.
202         * decl.c (store_decomp_type, lookup_decomp_type): New.
203         (cp_finish_decomp): Call store_decomp_type.
204         * semantics.c (finish_decltype_type): Call lookup_decomp_type.
205         * cp-tree.h: Declare lookup_decomp_type.
207 2016-11-15  Jakub Jelinek  <jakub@redhat.com>
209         * decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl,
210         set DECL_ASSEMBLER_NAME.
211         * parser.c (cp_parser_decomposition_declaration): Likewise
212         if returning error_mark_node.
213         * mangle.c (mangle_decomp): New function.
214         * cp-tree.h (mangle_decomp): New declaration.
216 2016-11-15  Jason Merrill  <jason@redhat.com>
218         PR c++/78358
219         * semantics.c (finish_decltype_type): Strip references for a tuple
220         decomposition.
221         * cp-tree.h (DECL_DECOMPOSITION_P): False for non-variables.
223         * decl2.c (decl_maybe_constant_var_p): References qualify.
224         * constexpr.c (non_const_var_error): Handle references.
225         * init.c (constant_value_1): Always check decl_constant_var_p.
226         * cp-gimplify.c (cp_fold_maybe_rvalue): Don't fold references.
227         * error.c (dump_decl_name): Split out from dump_decl.
229 2016-11-14  Jason Merrill  <jason@redhat.com>
231         * tree.c (bitfield_p): New.
232         * cp-tree.h: Declare it.
233         * typeck.c (cxx_sizeof_expr, cxx_alignof_expr)
234         (cp_build_addr_expr_1): Use it instead of DECL_C_BIT_FIELD.
235         * decl.c (cp_finish_decomp): Look through reference.  Always
236         SET_DECL_DECOMPOSITION_P.
237         * semantics.c (finish_decltype_type): Adjust decomposition handling.
239 2016-11-13  Jakub Jelinek  <jakub@redhat.com>
240             Jason Merrill  <jason@redhat.com>
242         Implement P0217R3 - C++17 structured bindings
243         * cp-tree.h (struct lang_decl_base): Add decomposition_p.
244         (DECL_DECOMPOSITION_P): New
245         (enum auto_deduction_context): Add adc_decomp_type.
246         (enum cp_declarator_kind): Add cdk_decomp.
247         * constexpr.c (cxx_eval_constant_expression): Look through
248         DECL_VALUE_EXPR.
249         (potential_constant_expression_1): Likewise.
250         * decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT.
251         (check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P.
252         (cp_finish_decl): Pass adc_decomp_type for decomposition.
253         (find_decomp_class_base, get_tuple_size, get_tuple_element_type)
254         (get_tuple_decomp_init, cp_finish_decomp): New.
255         (grokdeclarator): Handle decomposition.
256         * init.c (build_aggr_init): Handle decomposition array.
257         (build_vec_init): Handle initialization from { array }.
258         * name-lookup.c (add_function): Always wrap TEMPLATE_DECL in
259         OVERLOAD.
260         * parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp.
261         (function_declarator_p, strip_declarator_types)
262         (cp_parser_check_declarator_template_parameters): Likewise.
263         (cp_parser_range_for, cp_convert_range_for): Handle decomposition.
264         (cp_parser_simple_declaration): Parse decomposition.
265         (cp_parser_decomposition_declaration): New.
266         * pt.c (tsubst_decomp_names): New.
267         (subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition.
268         (do_auto_deduction): Handle adc_decomp_type.
269         * semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR.
270         * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
271         * tree.c (lvalue_kind): Likewise.
272         (cp_build_reference_type): Handle reference collapsing.
274 2016-11-13  Jason Merrill  <jason@redhat.com>
276         * call.c (build_new_method_call_1): Include template arguments in
277         error message.
278         (print_error_for_call_failure): Likewise.
279         (build_new_function_call): Pass them in.
280         * name-lookup.c (supplement_binding_1): Don't complain about a
281         conflict with an erroneous declaration.
282         * error.c (dump_decl): Fix printing of alias declaration.
283         * decl.c (make_typename_type): Call cxx_incomplete_type_error.
284         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
285         * semantics.c (perform_koenig_lookup): Don't wrap an error in
286         TEMPLATE_ID_EXPR.
288 2016-11-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
290         PR c/35503
291         * parser.c (cp_parser_postfix_pexpression): Call warn_for_restrict.
293 2016-11-12  Jason Merrill  <jason@redhat.com>
295         CWG 2233
296         * typeck.c (convert_arguments): Handle default arg followed by none.
298         * constexpr.c (potential_constant_expression_1): REALPART_EXPR and
299         IMAGPART_EXPR can be lvalues.
301         DR 374
302         PR c++/56480
303         * pt.c (check_specialization_namespace): Allow any enclosing
304         namespace.
305         (check_unqualified_spec_or_inst): New.
306         (check_explicit_specialization): Call it.
307         * parser.c (cp_parser_elaborated_type_specifier)
308         (cp_parser_class_head): Call it.
310 2016-11-10  Jason Merrill  <jason@redhat.com>
312         PR c++/77337
313         * pt.c (tsubst_friend_function): Don't set DECL_INITIAL.
314         (instantiate_decl): It's OK to defer a constexpr function.
315         * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): Check
316         DECL_LANG_SPECIFIC.
317         * decl2.c (decl_defined_p): Use it.  No longer static.
318         * decl.c (redeclaration_error_message): Use decl_defined_p.
319         * constexpr.c (cxx_eval_call_expression): Set input_location around
320         call to instantiate_decl.
322 2016-11-10  Jakub Jelinek  <jakub@redhat.com>
324         * mangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for
325         public or external symbols.
327 2016-11-09  Jakub Jelinek  <jakub@redhat.com>
329         PR c++/78283
330         * mangle.c (start_mangling): Reset G.need_cxx1z_warning.
332 2016-11-09  Jason Merrill  <jason@redhat.com>
334         * parser.c (cp_parser_simple_type_specifier): Allow placeholder
335         for template template parameter.
336         (cp_parser_type_id_1): Improve diagnostic.
337         * decl.c (grokdeclarator): Handle class deduction diagnostics here.
338         * pt.c (splice_late_return_type): Not here.
339         (tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template.
340         (do_class_deduction): Handle non-class templates.
342         Implement P0127R2, Declaring non-type parameters with auto.
343         * cp-tree.h (enum auto_deduction_context): Add adc_unify.
344         * decl.c (grokdeclarator): Allow 'auto' in C++17 template non-type
345         parameter types.
346         * pt.c (do_auto_deduction): Add outer_targs parameter.
347         (convert_template_argument): Call do_auto_deduction.  If adc_unify,
348         don't give up on dependent init.
349         (unify): Likewise.  In C++17, walk into the type of a
350         TEMPLATE_PARM_INDEX.
351         (for_each_template_parm): Add any_fn parameter.
352         (struct pair_fn_data): Likewise.
353         (for_each_template_parm_r): Call it for any tree.  In C++17, walk
354         into the type of a TEMPLATE_PARM_INDEX.
355         (zero_r, array_deduction_r, try_array_deduction): New.
356         (type_unification_real): Call try_array_deduction.
357         (get_partial_spec_bindings): Likewise.
359 2016-11-07  Jason Merrill  <jason@redhat.com>
361         Implement P0012R1, Make exception specifications part of the type
362         system.
363         * cp-tree.h (enum tsubst_flags): Add tf_fndecl_type.
364         (flag_noexcept_type, ce_type): New.
365         * call.c (build_conv): Add ck_fnptr.
366         (enum conversion_kind): Change ck_tsafe to ck_fnptr.
367         (convert_like_real): Likewise.
368         (standard_conversion): Likewise.  Allow function pointer
369         conversions for pointers to member functions.
370         (reference_compatible_p): Allow function pointer conversions.
371         (direct_reference_binding): Likewise.
372         (reference_binding): Reference-compatible is no longer a subset of
373         reference-related.
374         (is_subseq): Also strip ck_lvalue after next_conversion.
375         * class.c (instantiate_type): Check fnptr_conv_p.
376         (resolve_address_of_overloaded_function): Likewise.
377         * cvt.c (can_convert_tx_safety): Now static.
378         (noexcept_conv_p, fnptr_conv_p, strip_fnptr_conv): New.
379         * decl.c (flag_noexcept_type): Define.
380         (cxx_init_decl_processing): Set it.
381         (bad_specifiers): Check it.
382         (grokdeclarator) [cdk_function]: Add exception-spec to type here.
383         * lambda.c (maybe_add_lambda_conv_op): Add exception-spec to
384         returned pointer.
385         * mangle.c (struct globals): Add need_cxx1z_warning.
386         (mangle_decl): Check it.
387         (write_exception_spec): New.
388         (write_function_type): Call it.
389         (canonicalize_for_substitution): Handle exception spec.
390         (write_type): Likewise.
391         (write_encoding): Set processing_template_decl across mangling of
392         partially-instantiated type.
393         * pt.c (determine_specialization): Pass tf_fndecl_type.
394         (tsubst_decl, fn_type_unification): Likewise.
395         (tsubst): Strip tf_fndecl_type, pass it to
396         tsubst_exception_specification.
397         (convert_nontype_argument_function): Handle function pointer
398         conversion.
399         (convert_nontype_argument): Likewise.
400         (unify, for_each_template_parm_r): Walk into noexcept-specifier.
401         * rtti.c (ptr_initializer): Encode noexcept.
402         * tree.c (canonical_eh_spec): New.
403         (build_exception_variant): Use it.
404         * typeck.c (composite_pointer_type): Handle fnptr conversion.
405         (comp_except_specs): Compare canonical EH specs.
406         (structural_comptypes): Call it.
408         * call.c (standard_conversion): Reorganize pointer conversions.
409         * pt.c (convert_nontype_argument_function): Convert to ref here.
410         (convert_nontype_argument): Not here.
411         (convert_template_argument): Add original type to error message.
412         (RECUR_AND_CHECK_FAILURE): Remove trailing semicolon.
413         (unify): Compare function-qualifiers.
414         * typeck.c (same_type_ignoring_top_level_qualifiers_p): Use
415         cp_build_qualified_type rather than TYPE_MAIN_VARIANT.
417         * pt.c (push_tinst_level_loc): Add template instantiations to the
418         announce_function stream.
420 2016-11-04  Paolo Carlini  <paolo.carlini@oracle.com>
422         PR c++/67980
423         * pt.c (tsubst_expr, case IF_STMT): Use fold_non_dependent_expr
424         to suppress unwanted warnings.
426 2016-11-03  Jason Merrill  <jason@redhat.com>
428         PR c++/78198
429         * call.c (convert_default_arg): Look through inheriting ctors.
431 2016-11-03  Jakub Jelinek  <jakub@redhat.com>
432             Alexandre Oliva  <aoliva@redhat.com>
433             Jason Merrill  <jason@redhat.com>
435         PR debug/28767
436         PR debug/56974
437         * tree.c (cp_check_qualified_type): Use check_base_type and
438         TYPE_QUALS comparison instead of check_qualified_type.
439         (cxx_type_hash_eq): Return false if type_memfn_rqual don't match.
440         * cp-objcp-common.c (cp_get_debug_type): New function.
441         (cp_decl_dwarf_attribute): Don't handle types here.
442         (cp_type_dwarf_attribute): New function.
443         * cp-objcp-common.h (cp_get_debug_type, cp_type_dwarf_attribute):
444         Declare.
445         (LANG_HOOKS_GET_DEBUG_TYPE, LANG_HOOKS_TYPE_DWARF_ATTRIBUTE):
446         Define.
448 2016-11-03  Jason Merrill  <jason@redhat.com>
450         * tree.c (cp_check_qualified_type): Call check_base_type instead
451         of check_qualified_type.
452         (cxx_type_hash_eq): Check ref-qualifiers.
453         * typeck.c (apply_memfn_quals): No need to mess with TYPE_CANONICAL.
455 2016-11-01  Jason Merrill  <jason@redhat.com>
457         Implement P0136R1, Rewording inheriting constructors.
458         * call.c (enum rejection_reason_code): Add rr_inherited_ctor.
459         (inherited_ctor_rejection): New.
460         (add_function_candidate): Reject inherited ctors for copying.
461         (enforce_access): Use strip_inheriting_ctors.
462         (print_z_candidate): Likewise.  Handle rr_inherited_ctor.
463         (convert_like_real): Avoid copying inheriting ctor parameters.
464         (build_over_call): Likewise.  A base ctor inheriting from vbase
465         has no parms.  Sorry about varargs.
466         (joust): A local constructor beats inherited with the same convs.
467         * class.c (add_method): Handle hiding inheriting ctors.
468         (one_inherited_ctor): Handle new semantics.
469         (add_implicitly_declared_members): Pass using_decl down.
470         (build_clone): A base ctor inheriting from vbase has no parms.
471         * cp-tree.h (DECL_INHERITED_CTOR): Store this instead of the base.
472         (SET_DECL_INHERITED_CTOR): Likewise.
473         (DECL_INHERITED_CTOR_BASE): Adjust.
474         * constexpr.c: Adjust.
475         * error.c (dump_function_decl): Decorate inheriting ctors.
476         * init.c (emit_mem_initializers): Suppress access control in
477         inheriting ctor.
478         * mangle.c (write_special_name_constructor): Handle new inheriting
479         ctor mangling.
480         * method.c (strip_inheriting_ctors, inherited_ctor_binfo)
481         (ctor_omit_inherited_parms, binfo_inherited_from): New.
482         (synthesized_method_walk): Use binfo_inherited_from.  Suppress
483         access control in inheriting ctor.
484         (deduce_inheriting_ctor): Deleted if ambiguous ctor inheritance.
485         (maybe_explain_implicit_delete): Explain ambigous ctor inheritance.
486         (add_one_base_init, do_build_copy_constructor): Adjust.
487         (locate_fn_flags, explain_implicit_non_constexpr): Adjust.
488         (implicitly_declare_fn): Adjust.
489         (get_inherited_ctor): Remove.
490         * name-lookup.c (do_class_using_decl): Check for indirect ctor
491         inheritance.
492         * optimize.c (cdtor_comdat_group): Adjust for new mangling.
493         (maybe_clone_body): Handle omitted parms in base clone.
494         (maybe_thunk_body): Don't thunk if base clone omits parms.
495         * pt.c (tsubst_decl): Adjust.
496         (instantiate_template_1): Suppress access control in inheriting
497         ctor.
498         (fn_type_unification): Do deduction with inherited ctor.
499         * tree.c (special_function_p): Adjust.
501 2016-11-01  Jakub Jelinek  <jakub@redhat.com>
503         * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_inline.
505 2016-11-01  Jason Merrill  <jason@redhat.com>
507         * class.c (declared_access): Split out from handle_using_decl.
509 2016-10-31  Jakub Jelinek  <jakub@redhat.com>
511         PR c++/78089
512         * parser.c (cp_parser_postfix_expression): Replace return statement in
513         the first switch with setting postfix_expression to the return
514         expression and break;.
516         PR c++/77886
517         * pt.c (tsubst_expr) <case CASE_LABEL_EXPR> Copy over
518         FALLTHROUGH_LABEL_P flag to the new LABEL_DECL.
519         (tsubst_expr) <case LABEL_EXPR>: Likewise.
521 2016-09-11  Le-Chun Wu  <lcwu@google.com>
522             Mark Wielaard  <mjw@redhat.com>
524         * name-lookup.c (pushdecl_maybe_friend): When emitting a
525         shadowing warning, use the code corresponding to the
526         given -Wshadow= variant.
528 2016-10-26  Jason Merrill  <jason@redhat.com>
530         * class.c (add_method): Allow using-declarations to coexist.
532 2016-10-25  Jason Merrill  <jason@redhat.com>
534         * constexpr.c (maybe_constant_init): Pull out TARGET_EXPR_INITIAL.
535         (cxx_eval_outermost_constant_expr): Don't return a CONSTRUCTOR
536         with CONSTRUCTOR_NO_IMPLICIT_ZERO.
537         (cxx_eval_call_expression): Clear CONSTRUCTOR_NO_IMPLICIT_ZERO.
539 2016-10-25  Jakub Jelinek  <jakub@redhat.com>
541         * parser.c (cp_parser_postfix_expression): Adding missing break;.
543         * cp-tree.h (finish_builtin_launder): Declare.
544         * parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_LAUNDER.
545         * semantics.c (finish_builtin_launder): New function.
546         * pt.c (tsubst_copy_and_build): Handle instantiation of IFN_LAUNDER.
547         * constexpr.c (cxx_eval_internal_function): Handle IFN_LAUNDER.
548         (potential_constant_expression_1): Likewise.
550 2016-10-24  Jakub Jelinek  <jakub@redhat.com>
552         * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_reference
553         and DW_AT_rvalue_reference.
555         * cxx-pretty-print.c (pp_cxx_check_constraint): Use VAR_P (x)
556         instead of TREE_CODE (x) == VAR_DECL.
557         * constraint.cc (get_concept_definition): Likewise.
558         (finish_shorthand_constraint): Likewise.
559         * init.c (warn_placement_new_too_small): Likewise.
560         * cp-gimplify.c (cp_genericize_r): Likewise.
562 2016-10-21  Jason Merrill  <jason@redhat.com>
564         PR c++/77656
565         * pt.c (convert_template_argument): Call convert_nontype_argument
566         on value-dependent but not type-dependent arguments.
567         (convert_nontype_argument): Handle value-dependent arguments.
568         (canonicalize_expr_argument): New.
569         (deducible_expression, unify): Skip CONVERT_EXPR.
570         * error.c (dump_template_argument): Likewise.
571         * mangle.c (write_expression): Likewise.
573         * ptree.c (cxx_print_xnode) [TEMPLATE_PARM_INDEX]: Dump the decl.
575 2016-10-21  Jakub Jelinek  <jakub@redhat.com>
577         * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle
578         DW_AT_const_expr.
580 2016-10-17  Jakub Jelinek  <jakub@redhat.com>
582         * cp-objcp-common.h (cp_function_decl_explicit_p,
583         cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove.
584         (cp_decl_dwarf_attribute): Declare.
585         (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P,
586         LANG_HOOKS_FUNCTION_DECL_DELETED_P,
587         LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Remove.
588         (LANG_HOOKS_DECL_DWARF_ATTRIBUTE): Redefine.
589         * cp-objcp-common.c (cp_function_decl_explicit_p,
590         cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove.
591         (cp_decl_dwarf_attribute): New function.
593 2016-10-15  Jason Merrill  <jason@redhat.com>
595         PR c++/77945
596         * constexpr.c (maybe_simplify_trivial_copy): New.
597         (cxx_eval_store_expression): Call it.
598         * call.c (build_over_call): Use unsigned char for trivial copy.
600 2016-10-14  Jason Merrill  <jason@redhat.com>
602         Implement P0017R1, C++17 aggregates with bases.
603         * class.c (build_base_field_1): Split out from...
604         (build_base_field): ...here.  In C++17 mode, build a field for
605         empty bases.
606         * decl.c (xref_basetypes): In C++17 aggregates can have bases.
607         (next_initializable_field): Allow base fields in C++17.
608         * typeck2.c (process_init_constructor_record): Likewise.
610 2016-10-14  Jakub Jelinek  <jakub@redhat.com>
612         DR 1511 - const volatile variables and ODR
613         * decl.c (grokvardecl): Change flags argument to type_quals,
614         add conceptp argument.  Set TREE_PUBLIC for non-static volatile vars.
615         (grokdeclarator): Adjust grokvardecl caller.
617 2016-10-13  Martin Sebor  <msebor@redhat.com>
619         PR c++/71912
620         * class.c (struct flexmems_t):  Add members.
621         (find_flexarrays): Add arguments.  Correct handling of anonymous
622         structs.
623         (diagnose_flexarrays): Adjust to issue warnings in addition to errors.
624         (check_flexarrays): Add argument.
625         (diagnose_invalid_flexarray): New functions.
627 2016-10-13  Jakub Jelinek  <jakub@redhat.com>
628             Jason Merrill  <jason@redhat.com>
630         Implement P0386R2 - C++17 inline variables
631         * cp-tree.h (struct lang_type): Shrink language field to 1 bit
632         from 4.  Add var_declared_inline_p field.  Mention 2 spare bits.
633         (DECL_VAR_DECLARED_INLINE_P): Define.
634         (SET_DECL_VAR_DECLARED_INLINE_P): Define.
635         (DECL_INLINE_VAR_P): Define.
636         (diagnose_inline_vars_for_namespace): Declare.
637         * decl.c (diagnose_inline_vars_for_namespace): New function.
638         (duplicate_decls): For static data members copy
639         DECL_DECLARED_CONSTEXPR_P.
640         (redeclaration_error_message): Handle C++17 redundant redeclaration
641         of constexpr static data member outside of class.
642         (maybe_commonize_var): Handle inline variables.
643         (check_initializer): Ignore inline variables for diagnostics.
644         Adjust diagnostic wording for C++17.
645         (make_rtl_for_nonlocal_decl): Allow in-class definition of
646         inline static data members.
647         (bad_specifiers): Don't diagnose inline on variables here.
648         (grokvardecl): Add inlinep argument, non-static const inline variables
649         are TREE_PUBLIC.
650         (check_static_variable_definition): Return early also for inline
651         variables.
652         (mark_inline_variable): New.
653         (grokdeclarator): Handle inline variables and inline static data
654         members.
655         * typeck2.c (store_init_value): Don't diagnose non-constant
656         initializers for non-constexpr inline static data members.
657         * decl2.c (vague_linkage_p): Return true for inline variables.
658         (c_parse_final_cleanups): In-class declaration of inline static
659         data members is a definition.  Call diagnose_inline_vars_for_namespace
660         through walk_namespaces.
661         * pt.c (instantiate_decl): Set pattern_defined for in-class definitions
662         of inline static data members.
664 2016-10-13  Jason Merrill  <jason@redhat.com>
666         * decl.c (mark_inline_variable): New.
668 >>>>>>> .r241142
669 2016-10-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
671         * decl2.c: Include memmodel.h.
672         * rtti.c: Likewise.
674 2016-10-11  Jason Merrill  <jason@redhat.com>
676         PR c++/77742
677         * init.c (build_new_1): Don't -Waligned-new about placement new.
678         (malloc_alignment): New.  Consider MALLOC_ABI_ALIGNMENT.
679         * decl.c (cxx_init_decl_processing): New.
681 2016-10-10  Jason Merrill  <jason@redhat.com>
683         PR c++/77890
684         PR c++/77912
685         * pt.c (do_class_deduction): Set cp_unevaluated_operand.
686         (tsubst) [TEMPLATE_TYPE_PARM]: Copy CLASS_PLACEHOLDER_TEMPLATE.
688 2016-10-08  Jason Merrill  <jason@redhat.com>
690         * cp-gimplify.c (cp_fold): Add variable name.
692         * cp-gimplify.c (cp_fold): Distribute cp_truthvalue_conversion
693         into COND_EXPR.
695 2016-10-07  Jason Merrill  <jason@redhat.com>
697         Further P0135 refinement.
698         * call.c (build_user_type_conversion_1): Consider conversions from
699         a single element in an initializer-list.
700         (build_temp): Undo early_elide_copy change.
701         (build_over_call): Check that we don't try to copy a TARGET_EXPR
702         in C++17 mode.  Set user_conv_p here.
703         (convert_like_real): Not here.
704         (check_self_delegation): Split out from...
705         (build_special_member_call): ...here.  Handle C++17 copy elision.
706         * cvt.c (early_elide_copy): Remove.
707         (ocp_convert): Undo early_elide_copy change.
708         * except.c (build_throw): Likewise.
709         * init.c (expand_default_init): Likewise.
710         * typeck.c (cp_build_modify_expr): Likewise.
712 2016-10-07  Nathan Sidwell  <nathan@acm.org>
714         PR c++/64433
715         DR1658, DR1611
716         * init.c (emit_mem_initializers): Don't construct vbases of
717         abstract classes.
718         (push_base_cleanups): Don't push vbase cleanups for abstract class
719         when in C++14 mode.
720         * method.c (synthethesized_method_walk): Don't walk vbases of
721         abstract classes when in C++14 mode.
723 2016-10-07  Jakub Jelinek  <jakub@redhat.com>
725         Implement LWG2296 helper intrinsic
726         * parser.c (cp_parser_postfix_expression): Handle RID_ADDRESSOF.
727         * cp-objcp-common.c (cp_common_init_ts): Handle ADDRESSOF_EXPR.
728         * constexpr.c (potential_constant_expression_1): Likewise.
729         * error.c (dump_expr): Likewise.
730         * typeck.c (cp_build_addressof): New function.
731         * cp-tree.h (cp_build_addressof): Declare.
732         * cxx-pretty-print.h (pp_cxx_addressof_expression): Declare.
733         * cp-tree.def (ADDRESSOF_EXPR): New tree code.
734         * cxx-pretty-print.c (cxx_pretty_printer::primary_expression): Handle
735         ADDRESSOF_EXPR.  Add __builtin_addressof and
736         __has_unique_object_representations into syntax in function comment.
737         (pp_cxx_addressof_expression): New function.
738         * pt.c (tsubst_copy_and_build): Handle ADDRESSOF_EXPR.
740 2016-10-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>
742         PR c++/77700
743         * parser.c (cp_parser_base_specifier): Fix a warning.
745 2016-10-07  Bernd Schmidt  <bschmidt@redhat.com>
747         PR c++/69733
748         * decl.c (grokdeclarator): Try to find the correct location for an
749         ignored qualifier.
751 2016-10-07  Martin Liska  <mliska@suse.cz>
753         * lambda.c (maybe_add_lambda_conv_op): Set default value.
755 2016-10-06  Jason Merrill  <jason@redhat.com>
757         * call.c (build_temp, convert_like_real): Don't re-copy
758         TARGET_EXPR.  Handle packed fields.
759         (build_x_va_arg): Wrap it in a TARGET_EXPR.
760         (build_over_call): Add sanity check.
761         * cvt.c (early_elide_copy): New.
762         (ocp_convert): Use it.
763         * except.c (build_throw): Use it.
764         * init.c (get_nsdmi): Put back the TARGET_EXPR.
765         (expand_default_init): Call early_elide_copy.
766         * typeck.c (cp_build_modify_expr): Call early_elide_copy.
768 2016-10-06  Jakub Jelinek  <jakub@redhat.com>
770         Implement P0258R2 - helper for C++17
771         std::has_unique_object_representations trait
772         * cp-tree.h (enum cp_trait_kind): Add
773         CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
774         (struct lang_type_class): Add unique_obj_representations
775         and unique_obj_representations_set bitfields.
776         (CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS,
777         CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET): Define.
778         (type_has_unique_obj_representations): Declare.
779         * parser.c (cp_parser_primary_expression): Handle
780         RID_HAS_UNIQUE_OBJ_REPRESENTATIONS.
781         (cp_parser_trait_expr): Likewise.  Formatting fix.
782         * semantics.c (trait_expr_value, finish_trait_expr): Handle
783         CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
784         * tree.c (type_has_unique_obj_representations): New function.
785         (record_has_unique_obj_representations): New function.
786         * cxx-pretty-print.c (pp_cxx_trait_expression): Handle
787         CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
789 2016-10-05  Jason Merrill  <jason@redhat.com>
791         Implement P0135R1, Guaranteed copy elision.
792         * cvt.c (ocp_convert): Don't re-copy a TARGET_EXPR in C++17.
794         PR c++/54293
795         * call.c (reference_binding): Fix binding to member of temporary.
797         * call.c (extend_ref_init_temps): Fix TARGET_EXPR handling.
799         * parser.c (cp_parser_skip_to_end_of_statement): Add missing break.
801         * semantics.c (finish_compound_literal): Handle class placeholder.
803 2016-10-05  Marek Polacek  <polacek@redhat.com>
805         Implement P0305R1, Selection statements with initializer.
806         * cp-array-notation.c (create_an_loop): Call finish_init_stmt
807         instead of finish_for_init_stmt.
808         * cp-tree.h (finish_for_init_stmt): Rename to finish_init_stmt.
809         * decl.c (poplevel): Adjust a comment.
810         * init.c (build_vec_init): Call finish_init_stmt instead of
811         finish_for_init_stmt.
812         * name-lookup.c (pushdecl_maybe_friend_1): Adjust a comment.
813         * name-lookup.h (enum scope_kind): Likewise.
814         * parser.c (cp_parser_statement): Update commentary.
815         (cp_parser_init_statement_p): New function.
816         (cp_parser_selection_statement): Parse the optional init-statement.
817         (cp_parser_for): Call finish_init_stmt instead of finish_for_init_stmt.
818         (cp_parser_c_for): Likewise.
819         (cp_convert_range_for): Call finish_init_stmt instead of finish_for_init_stmt.
820         (cp_parser_range_for_member_function): Update commentary.
821         (cp_parser_iteration_statement):
822         (cp_parser_for_init_statement): Rename to cp_parser_init_statement.
823         * pt.c (tsubst_omp_for_iterator): Update commentary.
824         (tsubst_expr): Call finish_init_stmt instead of finish_for_init_stmt.
825         * semantics.c (finish_for_init_stmt): Rename to finish_init_stmt.
826         Update commentary.
828 2016-10-04  Jason Merrill  <jason@redhat.com>
830         PR c++/77852
831         * pt.c (do_class_deduction): Handle list-initialization.
832         (do_auto_deduction): Call it sooner.
833         (build_deduction_guide): Use tsubst_arg_types.
834         (rewrite_template_parm): Don't copy_type.
836         PR c++/77775
837         * constexpr.c (cxx_eval_component_reference): Use name matching
838         for PMFs.
840         Implement P0091R2, Template argument deduction for class templates.
841         * parser.c (cp_parser_simple_type_specifier): Parse class placeholder.
842         Use the location of the beginning of the type-specifier.
843         (cp_parser_init_declarator): Parse deduction guide.
844         (cp_parser_diagnose_invalid_type_name): Mention class deduction.
845         (cp_parser_type_id_1): Don't accept class placeholder as template arg.
846         * cp-tree.h (CLASS_PLACEHOLDER_TEMPLATE): New.
847         * decl.c (grokdeclarator): Check for uninitialized auto here.
848         (start_decl_1): Not here.
849         (cp_finish_decl): Or here.  Don't collapse a list when doing
850         class deduction.
851         (grokfndecl): Check deduction guide scope and body.
852         * error.c (dump_decl, dump_function_decl, dump_function_name):
853         Handle deduction guides.
854         * pt.c (make_template_placeholder, do_class_deduction): New.
855         (build_deduction_guide, rewrite_template_parm): New.
856         (dguide_name, dguide_name_p, deduction_guide_p): New.
857         (do_auto_deduction): Call do_class_deduction.
858         (splice_late_return_type, is_auto): Handle class placeholders.
859         (template_parms_level_to_args): Split from template_parms_to_args.
860         (tsubst_template_parms_level): Split from tsubst_template_parms.
861         * typeck2.c (build_functional_cast): Handle class placeholder.
863 2016-10-04  Martin Sebor  <msebor@redhat.com>
865         PR c++/77804
866         * init.c (warn_placement_new_too_small): Avoid assuming an array type
867         has a constant size.
869 2016-10-04  Jakub Jelinek  <jakub@redhat.com>
871         PR c++/77791
872         * parser.c (cp_parser_lambda_declarator_opt): Only pedwarn
873         for C++11 on decls in the param_list.  Test cxx_dialect < cxx14 before
874         the loop just once.
876         * cp-tree.h (enum cp_tree_index): Remove CPTI_JAVA_*,
877         CPTI_LANG_NAME_JAVA and CPTI_JCLASS.
878         (java_byte_type_node, java_short_type_node, java_int_type_node,
879         java_long_type_node, java_float_type_node, java_double_type_node,
880         java_char_type_node, java_boolean_type_node, lang_name_java,
881         jclass_node): Remove.
882         (enum languages): Remove lang_java.
883         (TYPE_FOR_JAVA): Remove.
884         (struct lang_type_class): Remove java_interface bit-field.
885         (TYPE_JAVA_INTERFACE): Remove.
886         (pragma_java_exceptions): Remove.
887         (check_java_method, build_java_class_ref): Remove prototypes.
888         * name-lookup.c (pushtag_1): Don't set TYPE_FOR_JAVA.
889         * decl2.c (acceptable_java_type, check_java_method): Remove.
890         (import_export_decl): Remove TYPE_FOR_JAVA handling.
891         (build_java_method_aliases): Remove.
892         (c_parse_final_cleanups): Don't call build_java_method_aliases.
893         (possibly_inlined_p): Don't test pragma_java_exceptions.
894         * init.c (build_new_1): Remove TYPE_FOR_JAVA handling.
895         (build_java_class_ref): Remove.
896         * pt.c (maybe_new_partial_specialization, lookup_template_class_1,
897         instantiate_class_template_1): Don't copy TYPE_FOR_JAVA.
898         * except.c (eh_type_info): Remove java type handling.
899         (decl_is_java_type, choose_personality_routine): Remove.
900         (initialize_handler_parm): Don't call choose_personality_routine.
901         (expand_start_catch_block): Don't handle java types.
902         (build_throw): Likewise.
903         * cp-lang.c (cp_eh_personality): Don't handle pragma_java_exceptions.
904         * typeck.c (structural_comptypes): Don't compare TYPE_FOR_JAVA.
905         * call.c (build_over_call): Don't handle TYPE_JAVA_INTERFACE.
906         (java_iface_lookup_fn): Remove.
907         (build_java_interface_fn_ref): Remove.
908         * tree.c (cxx_attribute_table): Remove java_interface.
909         (handle_java_interface_attribute): Remove.
910         * lex.c (pragma_java_exceptions): Remove.
911         (init_cp_pragma): Don't register GCC java_exceptions pragma.
912         (handle_pragma_java_exceptions): Remove.
913         (retrofit_lang_decl): Don't handle lang_name_java.
914         * method.c (implicitly_declare_fn): Don't handle TYPE_FOR_JAVA.
915         * error.c (language_to_string): Don't handle lang_java.
916         * decl.c (record_builtin_java_type): Remove.
917         (initialize_predefined_identifiers): Remove Java.
918         (cxx_init_decl_processing): Remove java_*_type_node.
919         (cp_finish_decl): Don't handle TYPE_FOR_JAVA.
920         (grokfndecl): Likewise.
921         (check_special_function_return_type): Likewise.
922         (grokdeclarator): Don't set TYPE_FOR_JAVA.
923         (grokparms): Don't handle TYPE_FOR_JAVA.
924         (xref_basetypes): Likewise.
925         (check_function_type): Likewise.
926         (finish_constructor_body): Likewise.
927         * mangle.c (write_builtin_type): Don't handle TYPE_FOR_JAVA
928         and java_*_type_node.
929         (write_bare_function_type): Don't handle TYPE_FOR_JAVA.
930         (write_java_integer_type_codes): Remove.
931         * class.c (add_method): Don't handle TYPE_FOR_JAVA.
932         (add_implicitly_declared_members, determine_key_method,
933         finish_struct_1): Likewise.
934         (push_lang_context): Don't handle lang_name_java.
936 2016-10-03  Marek Polacek  <polacek@redhat.com>
938         Core 903
939         * typeck.c (cp_build_binary_op): Pass original operands to
940         null_ptr_cst_p, not those after the default conversions.
942 2016-10-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
944         * parser.c (cp_parser_condition): Fix a warning.
946 2016-09-29  Jakub Jelinek  <jakub@redhat.com>
948         Implement P0001R1 - C++17 removal of register storage class specifier
949         * decl.c (cp_finish_decl): Diagnose register storage class
950         on vars except when used in GNU global or local register variable
951         extension.
952         (grokdeclarator): Diagnose register storage class on parameters.
953         * except.c (expand_start_catch_block): Set DECL_REGISTER only
954         after cp_finish_decl call.
956 2016-09-29  Marek Polacek  <polacek@redhat.com>
958         * rtti.c (involves_incomplete_p): Add fall through comment.
960 2016-09-28  Jakub Jelinek  <jakub@redhat.com>
962         PR c++/77467
963         * constexpr.c (enum constexpr_switch_state): New.
964         (struct constexpr_ctx): Add css_state field.
965         (label_matches): Add CTX and STMT arguments, remove I and
966         DEFAULT_LABEL.  For CASE_LABEL_EXPR assert ctx->css_state != NULL,
967         handle default labels according to css_state.
968         (cxx_eval_statement_list): Remove statement skipping, label_matches
969         and default_label handling code.
970         (cxx_eval_loop_expr): Exit after first iteration even if
971         switches (jump_target).
972         (cxx_eval_switch_expr): Set up css_state field in ctx, if default
973         label has been seen in the body, but no cases matched, evaluate
974         the body second time.
975         (cxx_eval_constant_expression): Handle stmt skipping and label_matches
976         here.  Handle PREDICT_EXPR.  For MODIFY_EXPR or INIT_EXPR, assert
977         statement is not skipped.  For COND_EXPR during skipping, don't
978         evaluate condition, just the then block and if still skipping at the
979         end also the else block.
980         (cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer.
981         (is_sub_constant_expr): Likewise.
983 2016-09-27  Jakub Jelinek  <jakub@redhat.com>
985         Implement P0018R3, C++17 lambda capture of *this by value as [=,*this]
986         * parser.c (cp_parser_lambda_introducer): Formatting fix.  Pass
987         true instead of false as by_reference_p to add_capture for 'this'.
988         Parse '*this' simple-capture.
989         * lambda.c (build_capture_proxy): Handle '*this' capture by value.
990         (add_capture): Adjust function comment.  For id == this_identifier,
991         treat by_reference_p as capturing '*this' by reference, i.e. 'this'
992         by value, and !by_reference_p as capturing '*this' by value.
993         (add_default_capture): For implicit 'this' capture, always pass
994         by_reference_p true rather than false.
996         PR c++/77722
997         * cp-gimplify.c (cp_ubsan_maybe_instrument_return): Instrument also
998         functions that have just a STATEMENT_LIST instead of BIND_EXPR, or
999         BIND_EXPR with some statement rather than STATEMENT_LIST as body.
1001 2016-09-26  Nathan Sidwell  <nathan@acm.org>
1003         * init.c (expand_default_init): Fix } indentation.
1004         * method.c (process_subob_fn): Simplify control structure to
1005         remove gotos.
1006         (implicitly_declare_fn): Remove duplicated lambda ctor check.
1008 2016-09-26  Marek Polacek  <polacek@redhat.com>
1010         PR c/7652
1011         * parser.c (cp_parser_storage_class_specifier_opt): Add
1012         gcc_fallthrough.
1013         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
1014         (cp_parser_cache_defarg): Likewise.
1015         (cp_parser_omp_for_cond): Likewise.
1016         * semantics.c (finish_decltype_type): Likewise.
1017         * typeck.c (structural_comptypes): Likewise.
1018         (cp_build_binary_op): Likewise.
1019         (cp_build_modify_expr): Likewise.
1021 2016-09-26  Marek Polacek  <polacek@redhat.com>
1023         PR c/7652
1024         * constexpr.c (cxx_eval_internal_function): Handle IFN_FALLTHROUGH.
1025         (potential_constant_expression_1): Likewise.
1026         * constraint.cc (function_concept_check_p): Check fn for null.
1027         * parser.c (cp_parser_expression_statement): Handle attribute
1028         fallthrough.
1029         (cp_parser_statement): Likewise.
1030         (cp_parser_label_for_labeled_statement): Set FALLTHROUGH_LABEL_P on
1031         labels.
1032         (cp_parser_std_attribute): Handle fallthrough attribute.
1033         (cp_parser_check_std_attribute): Add %< %> quotes.
1034         * pt.c (tsubst_copy_and_build): Handle internal functions.
1035         (instantiation_dependent_scope_ref_p): Return if the expression is
1036         null.
1038 2016-09-24  Marek Polacek  <polacek@redhat.com>
1040         PR c/77490
1041         * typeck.c (cp_build_unary_op): Warn about bit not on expressions that
1042         have boolean value.
1044 2016-09-23  Jakub Jelinek  <jakub@redhat.com>
1046         Implement P0138R2, C++17 construction rules for enum class values
1047         * cp-tree.h (is_direct_enum_init): Declare.
1048         * decl.c (is_direct_enum_init): New function.
1049         (reshape_init): Use it.
1050         * typeck.c (convert_for_assignment): Likewise.
1052         * Make-lang.in (check-c++1z): Pass RUNTESTFLAGS down to
1053         make check-g++.
1055         * constexpr.c (call_stack): Remove unnecessary
1056         = vNULL initialization of file scope vec.
1058         * name-lookup.c (store_bindings, store_class_bindings): Don't
1059         initialize static local bindings_need_stored to vNULL.
1061         * typeck2.c (process_init_constructor_record): Use
1062         CONSTRUCTOR_NELTS (...) instead of
1063         vec_safe_length (CONSTRUCTOR_ELTS (...)).
1064         * decl.c (reshape_init_r): Likewise.
1065         (check_initializer): Likewise.
1067 2016-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
1069         PR c++/71979
1070         * class.c (build_base_path): Allow for lookup_base returning
1071         NULL_TREE.
1073 2016-09-21  Jason Merrill  <jason@redhat.com>
1075         Core 903
1076         * call.c (null_ptr_cst_p): Check char_type_p.
1078 2016-09-21  Jakub Jelinek  <jakub@redhat.com>
1080         PR c++/77651
1081         * init.c (build_new_1): Don't suggest to use -faligned-new if
1082         aligned_new_threshold is non-zero.
1083         (type_has_new_extended_alignment): Change aligned_new_threshhold
1084         to aligned_new_threshold.
1085         * call.c (second_parm_is_size_t, aligned_allocation_fn_p,
1086         aligned_deallocation_fn_p, build_op_delete_call): Likewise.
1087         * decl.c (cxx_init_decl_processing): Likewise.
1089 2016-09-20  Jakub Jelinek  <jakub@redhat.com>
1091         PR c++/77626
1092         * constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on
1093         FIELD_DECLs with error_mark_node type.  Remove useless break; after
1094         return.
1096         PR c++/77638
1097         * parser.c (cp_parser_template_declaration_after_parameter): For 2
1098         argument operator"" template set ok to false for
1099         parm == error_mark_node.
1101         PR c++/77637
1102         * parser.c (cp_parser_std_attribute_list): Reject ... without
1103         preceding attribute.
1105 2016-09-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1107         PR c++/77434
1108         * cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here.
1110 2016-09-16  Patrick Palka  <ppalka@gcc.gnu.org>
1112         PR c++/77639
1113         * parser.c (cp_parser_class_head): When
1114         processing_template_parmlist, don't assume that the
1115         class-head may start an explicit specialization.
1117 2016-09-16  Jakub Jelinek  <jakub@redhat.com>
1119         PR c++/77482
1120         * error.c (dump_simple_decl): Only check DECL_DECLARED_CONCEPT_P
1121         if DECL_LANG_SPECIFIC is non-NULL.  Fix up formatting.
1123         PR c++/77338
1124         * constexpr.c (cxx_eval_constant_expression) <case PARM_DECL>: Only
1125         call is_really_empty_class on complete types.
1127         PR c++/77375
1128         * class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any
1129         TYPE_HAS_MUTABLE_P for any bases.
1131 2016-09-16  Jason Merrill  <jason@redhat.com>
1133         * class.c (check_bases, set_one_vmethod_tm_attributes): Use
1134         least_bit_hwi.
1135         * decl.c (cxx_init_decl_processing): Use pow2p_hwi.
1136         * parser.c (cp_parser_cilk_simd_vectorlength): Use pow2p_hwi.
1138 2016-09-14  Jakub Jelinek  <jakub@redhat.com>
1140         PR c++/77549
1141         * name-lookup.c (consider_binding_level): Look through TREE_LIST
1142         and OVERLOAD.
1144 2016-09-14  Marek Polacek  <polacek@redhat.com>
1146         * typeck.c (cp_build_unary_op): Diagnose incrementing boolean
1147         expressions.  Tweak an error message.
1149 2016-09-14  Marek Polacek  <polacek@redhat.com>
1151         * cp-tree.h (cp_build_unary_op): Change nonconvert parameter type to
1152         bool.
1153         * decl2.c (one_static_initialization_or_destruction): Use true instead
1154         of 1.
1155         * init.c (build_vec_init): Use false instead of 0.
1156         * pt.c (tsubst_copy_and_build): Likewise.
1157         * semantics.c (simplify_loop_decl_cond): Likewise.
1158         * typeck.c (rationalize_conditional_expr): Likewise.
1159         (cp_build_binary_op): Use true instead of 1.
1160         (cp_build_unary_op): Change nonconvert parameter type to bool.  Use true
1161         instead of 1.
1162         (build_unary_op): Change nonconvert parameter type to bool.
1163         (unary_complex_lvalue): Use false instead of 0.
1165 2016-09-13  Jakub Jelinek  <jakub@redhat.com>
1167         Implement P0028R4, C++17 using attribute namespaces without repetition
1168         * parser.c (cp_parser_std_attribute): Add ATTR_NS argument.  Diagnose
1169         non-NULL ATTR_NS with scoped attribute token.  Handle non-NULL
1170         ATTR_NS with non-scoped attribute tokens.  Allow named ops in
1171         identifier after ::.
1172         (cp_parser_std_attribute_list): Add ATTR_NS argument, pass it down
1173         to cp_parser_std_attribute calls.
1174         (cp_parser_std_attribute_spec): Parse optional C++17
1175         attribute-using-prefix, adjust grammar in function comment.
1177         PR c++/77553
1178         * constexpr.c (cxx_fold_pointer_plus_expression): New function.
1179         (cxx_eval_binary_expression): Use it for POINTER_PLUS_EXPR.
1180         (cxx_eval_pointer_plus_expression): Remove.
1181         (cxx_eval_constant_expression) <case POINTER_PLUS_EXPR>: Don't
1182         call cxx_eval_pointer_plus_expression.
1184 2016-09-13  David Malcolm  <dmalcolm@redhat.com>
1186         * parser.c (cp_parser_class_specifier_1): Update for renaming of
1187         add_fixit_insert to add_fixit_insert_before.
1188         (cp_parser_class_head): Likewise.
1190 2016-09-12  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1192         PR c++/77496
1193         * call.c (build_conditional_expr_1): Call warn_for_omitted_condop.
1194         * class.c (instantiate_type): Look through the SAVE_EXPR.
1196 2016-09-09  Jason Merrill  <jason@redhat.com>
1198         Implement P0035R4, C++17 new of over-aligned types.
1199         * cp-tree.h (enum cp_tree_index): Add CPTI_ALIGN_TYPE.
1200         (align_type_node): New macro.
1201         * call.c (build_operator_new_call): Handle C++17 aligned new.
1202         (second_parm_is_size_t, build_op_delete_call): Likewise.
1203         (non_placement_deallocation_fn_p): Likewise. Rename to
1204         usual_deallocation_fn_p.
1205         (aligned_allocation_fn_p, aligned_deallocation_fn_p): New.
1206         * decl.c (cxx_init_decl_processing): Add aligned new support.
1207         * init.c (type_has_new_extended_alignment): New.
1208         (build_new_1): Handle aligned new.
1209         * tree.c (vec_copy_and_insert): New.
1211 2016-09-02  Jakub Jelinek  <jakub@redhat.com>
1213         PR sanitizer/77396
1214         * decl2.c (do_static_initialization_or_destruction): Only
1215         call asan_dynamic_init_call if INITP is true.
1217 2016-09-01  Martin Sebor  <msebor@redhat.com>
1219         * mangle.c: Increase buffer size to guarantee it fits the output
1220         of the formatted function regardless of its arguments.
1222 2016-09-01  Marek Polacek  <polacek@redhat.com>
1224         PR c/7652
1225         * error.c (dump_type): Fix falls through comment.
1226         (dump_decl): Likewise.
1227         (dump_expr): Likewise.
1229 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
1231         * parser.c (cp_parser_enclosed_template_argument_list): Add fix-it
1232         hint to ">>" within nested template argument list error.
1234 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
1236         * name-lookup.c (suggest_alternatives_for): Use add_fixit_replace
1237         rather than add_fixit_misspelled_id.
1238         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
1240 2016-08-29  Jason Merrill  <jason@redhat.com>
1242         PR c++/77379
1243         * mangle.c (maybe_check_abi_tags): Add version parm, handle thunks.
1244         (mangle_thunk): Add thunk parameter.
1245         * method.c (finish_thunk): Pass it.
1246         * cp-tree.h: Declare it.
1248 2016-08-15  Jason Merrill  <jason@redhat.com>
1250         Avoid calling a trivial default constructor.
1251         * class.c (default_ctor_p): New.
1252         (in_class_defaulted_default_constructor): Use it.
1253         (type_has_non_user_provided_default_constructor): Use it.
1254         * call.c (build_over_call): Handle trivial default constructor.
1255         * cp-tree.h: Declare default_ctor_p.
1257         PR c++/57728
1258         * pt.c (do_type_instantiation): Don't mess with non-user-provided
1259         member functions.
1261 2016-08-25  Marek Polacek  <polacek@redhat.com>
1263         * parser.c (cp_parser_binary_expression): Pass LHS to
1264         warn_logical_not_parentheses.
1266 2016-08-18  Marek Polacek  <polacek@redhat.com>
1268         PR c/7652
1269         * call.c (add_builtin_candidate): Add gcc_fallthrough.
1270         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
1271         * parser.c (cp_parser_skip_to_end_of_statement): Likewise.
1272         (cp_parser_cache_defarg): Likewise.
1274 2016-08-12  Marek Polacek  <polacek@redhat.com>
1276         PR c/7652
1277         * call.c (add_builtin_candidate): Add FALLTHRU.
1278         (build_integral_nontype_arg_conv): Adjust fall through comment.
1279         (build_new_op_1): Add FALLTHRU.
1280         (convert_like_real): Adjust fall through comment.
1281         * class.c (fixed_type_or_null): Likewise.
1282         * constexpr.c (cxx_eval_constant_expression): Likewise.
1283         (potential_constant_expression_1): Likewise.  Add FALLTHRU.
1284         * cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment.
1285         (cp_fold): Add FALLTHRU.
1286         * cvt.c (build_expr_type_conversion): Adjust fall through comment.
1287         * cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU.
1288         (pp_cxx_qualified_id): Likewise.
1289         (cxx_pretty_printer::constant): Adjust fall through comment.
1290         (cxx_pretty_printer::primary_expression): Add FALLTHRU.
1291         (pp_cxx_pm_expression): Adjust fall through comment.
1292         (cxx_pretty_printer::expression): Add FALLTHRU.
1293         (cxx_pretty_printer::declaration_specifiers): Reformat code.
1294         (pp_cxx_type_specifier_seq): Adjust fall through comment.
1295         (pp_cxx_ptr_operator): Likewise.  Add FALLTHRU.
1296         * error.c (dump_type): Adjust fall through comment.
1297         (dump_decl): Likewise.
1298         * mangle.c (write_type): Likewise.
1299         * method.c (synthesized_method_walk): Add FALLTHRU.
1300         * name-lookup.c (arg_assoc_type): Likewise.
1301         * parser.c (cp_lexer_print_token): Adjust fall through comment.
1302         (cp_parser_primary_expression): Add FALLTHRU.
1303         (cp_parser_operator): Likewise.
1304         * pt.c (find_parameter_packs_r): Likewise.
1305         (tsubst_aggr_type): Adjust fall through comment.
1306         * semantics.c (finish_omp_clauses): Add FALLTHRU.
1307         * tree.c (lvalue_kind): Likewise.
1309 2016-08-12  Alexandre Oliva  <aoliva@redhat.com>
1311         PR debug/63240
1312         * cp-objcp-common.c (cp_function_decl_defaulted): New.
1313         (cp_function_decl_explicit_p): Const_tree-ify.
1314         (cp_function_decl_deleted_p): Likewise.
1315         * cp-objcp-common.h (cp_function_decl_defaulted): Declare.
1316         (cp_function_decl_explicit_p): Const_tree-ify.
1317         (cp_function_decl_deleted_p): Likewise.
1318         (LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine.
1320 2016-08-11  Jakub Jelinek  <jakub@redhat.com>
1322         PR c++/72868
1323         * constexpr.c (label_matches): Handle case range expressions.
1325 2016-08-11  Jason Merrill  <jason@redhat.com>
1327         PR c++/73456
1328         * logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION.
1330 2016-08-10  Jason Merrill  <jason@redhat.com>
1332         Implement C++17 constexpr if.
1333         * cp-tree.h (IF_STMT_CONSTEXPR_P): New.
1334         * name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it.
1335         * parser.h (struct cp_parser): Add in_discarded_stmt field.
1336         * parser.c (cp_parser_selection_statement): Handle 'if constexpr'.
1337         (cp_parser_jump_statement): Avoid deducing from a discarded return.
1338         * pt.c (tsubst_expr): Only instantiate taken branch of constexpr if.
1339         * semantics.c (begin_if_stmt): Set the binding level this_entity.
1340         (finish_if_stmt_cond): Require the condition of a
1341         constexpr if to be constant.
1342         * decl.c (level_for_constexpr_if): New.
1343         (named_label_entry): Add in_constexpr_if field.
1344         (poplevel_named_label_1): Set it.
1345         (check_goto): Check it.
1346         (check_previous_goto_1): Check level_for_constexpr_if.
1348 2016-08-09  Jason Merrill  <jason@redhat.com>
1350         PR c++/68703
1351         * decl2.c (any_dependent_type_attributes_p): New.
1352         * pt.c (dependent_type_p_r, type_dependent_expression_p): Check it.
1353         * semantics.c (finish_id_expression): Check it.
1354         * typeck.c (finish_class_member_access_expr): Check it.
1356         PR c++/71712
1357         * class.c (check_abi_tags): Don't duplicate tags for conversion ops.
1359         Adjust mangling of ABI tags on class template member functions.
1360         * class.c (missing_abi_tags): New.
1361         (check_abi_tags): Don't check template. Add just_checking mode.
1362         * mangle.c (abi_flag_at_least, any_abi_below, equal_abi_tags): New.
1363         (sorted_abi_tags): Split out from write_abi_tags.
1364         (struct releasing_vec): New.
1365         (write_unqualified_name): Only look for the primary
1366         template for types.  Implement backward compatibility.
1368         PR c++/72849
1369         * constexpr.c (cxx_eval_constant_expression): Check
1370         COMPLETE_TYPE_P before calling is_really_empty_class.
1371         * class.c (is_really_empty_class): Don't call complete_type.
1373         PR c++/56701
1374         * typeck.c (cp_build_addr_expr_1): Remove special *this handling.
1376 2016-08-09  Jakub Jelinek  <jakub@redhat.com>
1378         PR c++/72809
1379         * rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for
1380         builtin aggregate types without TYPE_BINFO.
1382 2016-08-08  Jason Merrill  <jason@redhat.com>
1384         Implement C++17 constexpr lambda.
1385         * class.c (finalize_literal_type_property): Handle lambdas.
1386         * constexpr.c (is_valid_constexpr_fn): Likewise.  No longer static.
1387         (explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle
1388         lambdas.
1389         (cxx_eval_constant_expression): Handle capture proxy.
1390         (var_in_constexpr_fn): Don't check for C++14.
1391         (var_in_maybe_constexpr_fn): New.
1392         (potential_constant_expression_1): Use it.  Check DECL_EXPR for
1393         declarations not allowed in constexpr function.  Handle
1394         STATIC_ASSERT, RANGE_FOR_STMT.
1395         * decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn.
1396         (finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members.
1397         * lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P.
1398         (maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location.
1399         (lambda_static_thunk_p): New.
1400         * parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR.
1401         (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator.
1402         (cp_parser_decl_specifier_seq): Handle it.
1403         (cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq.
1404         * pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P.
1405         (tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P.
1406         * error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS.
1407         (dump_expr) [FUNCTION_DECL]: Pass it.
1409 2016-08-08  Jason Merrill  <jason@redhat.com>
1411         PR c++/67131
1412         * class.c (is_really_empty_class): Call complete_type.
1413         * constexpr.c (cxx_eval_constant_expression): Check
1414         is_really_empty_class.
1415         (potential_constant_expression_1): Likewise.  Check for error type.
1417 2016-08-08  Jakub Jelinek  <jakub@redhat.com>
1419         PR c++/58706
1420         * parser.c: Include tree-iterator.h.
1421         (cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init
1422         to FOR_BLOCK.
1423         (cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK
1424         entries.
1426 2016-08-06  Jonathan Wakely  <jwakely@redhat.com>
1428         * call.c (convert_like_real): Harmonize diagnostics for invalid
1429         reference binding.
1431 2016-08-05  Martin Sebor  <msebor@redhat.com>
1433         * constexpr.c (cxx_eval_store_expression): Remove hyphen from
1434         the spelling of "constant-expression" in diagnostic messages
1435         for consistency.
1436         (cxx_eval_constant_expression): Same.
1437         (cxx_eval_outermost_constant_expr): Same.
1438         (potential_constant_expression_1): Same.
1440 2016-08-05  Nathan Sidwell  <nathan@acm.org>
1442         PR c++/68724
1443         * pt.c (unify): TRAIT_EXPR is an expr.
1445 2016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
1447         PR c++/72800
1448         * lambda.c (add_capture): Check lambda_capture_field_type return
1449         value for error_mark_node.
1451 2016-08-04  Patrick Palka  <ppalka@gcc.gnu.org>
1453         PR c++/72759
1454         * pt.c (tsubst_qualified_id): Return error_mark_node if
1455         template_args is error_mark_node.
1457 2016-08-04  Jason Merrill  <jason@redhat.com>
1459         PR c++/72415
1460         * pt.c (tsubst_pack_expansion): Pull a single pack expansion out
1461         of the TREE_VEC.
1463         * cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P.
1464         (TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS.
1465         * class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c,
1466         name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust.
1468         PR c++/72796
1469         * typeck.c (finish_class_member_access_expr): Avoid stripping
1470         SCOPE_REF to dependent base.
1472 2016-08-04  Thomas Schwinge  <thomas@codesourcery.com>
1474         * parser.c (cp_ensure_no_oacc_routine): Improve diagnostics.
1475         (cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics.
1476         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
1477         Simplify code, and improve diagnostics.
1478         (cp_parser_oacc_routine): Likewise.  Move pragma context
1479         checking...
1480         (cp_parser_pragma): ... here.
1482         * parser.h (struct cp_omp_declare_simd_data): New.
1483         (struct cp_parser): Use it for oacc_routine member.
1484         * parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine)
1485         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
1486         Use it.  Simplify code.
1487         (cp_parser_new): Initialize all members pointing to special
1488         parsing data structures.
1489         (cp_parser_cilk_simd_fn_vector_attrs): Initialize
1490         parser->cilk_simd_fn_info->clauses.
1491         (cp_parser_omp_declare_simd): Initialize
1492         parser->omp_declare_simd->clauses.
1493         (cp_parser_late_parsing_omp_declare_simd): Simplify code.
1495 2016-08-04  Marek Polacek  <polacek@redhat.com>
1497         PR c++/70229
1498         * constexpr.c (check_constexpr_ctor_body_1): Allow typedef
1499         declarations.
1501 2016-08-01  Jason Merrill  <jason@redhat.com>
1503         * mangle.c (mangle_decl): Warn about mangled name change even if
1504         DECL_REALLY_EXTERN.
1506         * mangle.c (get_abi_tags): New.
1507         (find_substitution, write_unqualified_name, write_abi_tags)
1508         (maybe_check_abi_tags): Use it.
1510         * mangle.c (mangle_decl): Fix mangled name change warning.
1512         PR c++/72766
1513         * constexpr.c (cxx_eval_pointer_plus_expression): Check constancy
1514         of nelts.
1515         * cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in
1516         C++11 and up.
1518 2016-07-30  Martin Sebor  <msebor@redhat.com>
1520         PR c++/60760
1521         PR c++/71091
1522         * constexpr.c (cxx_eval_binary_expression): Reject invalid expressions
1523         involving null pointers.
1524         (cxx_eval_component_reference): Reject null pointer dereferences.
1525         (cxx_eval_indirect_ref): Reject indirecting through null pointers.
1526         (cxx_eval_constant_expression): Reject invalid expressions involving
1527         null pointers.
1529 2016-07-29  Marek Polacek  <polacek@redhat.com>
1531         PR c/71926
1532         * semantics.c (maybe_convert_cond): Use the location of COND for the
1533         parentheses warning.
1535 2016-07-29  Jason Merrill  <jason@redhat.com>
1537         * decl.c (build_enumerator): Tweak diagnostic.
1539         PR c++/72457
1540         * init.c (expand_aggr_init_1): Only handle value-init of bases.
1541         * constexpr.c (build_data_member_initialization): Handle multiple
1542         initializers for the same field.
1544 2016-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
1546         PR c++/71665
1547         * decl.c (build_enumerator): Check the type of the enumerator before
1548         calling cxx_constant_value.
1550 2016-07-27  Jason Merrill  <jason@redhat.com>
1552         PR c++/71747
1553         * pt.c (get_partial_spec_bindings): Replace tparms and spec_args
1554         parameters with spec_tmpl.  Call push_tinst_level.
1555         (most_specialized_partial_spec): Adjust.
1556         (more_specialized_partial_spec): Adjust.
1558 2016-07-25  Jason Merrill  <jason@redhat.com>
1560         PR c++/65970
1561         * cp-gimplify.c (genericize_cp_loop): Revert location change.
1563         PR c++/71837
1564         * lambda.c (add_capture): Leave a pack expansion in a TREE_LIST.
1565         (build_lambda_object): Call build_x_compound_expr_from_list.
1566         * pt.c (tsubst) [DECLTYPE_TYPE]: Likewise.
1568         PR c++/71833
1569         PR c++/54440
1570         * pt.c (coerce_template_parameter_pack): Fix logic for
1571         pack index.
1573         PR c++/65970
1574         * constexpr.c (cxx_eval_loop_expr): Count iterations.
1575         * cp-gimplify.c (genericize_cp_loop): Use start_locus even for
1576         infinite loops.
1578         PR c++/71972
1579         * constexpr.c (cxx_eval_array_reference): Handle looking for the
1580         value of an element we're currently modifying.
1582 2016-07-24  Jason Merrill  <jason@redhat.com>
1584         PR c++/71515
1585         * pt.c (resolve_typename_type): Try to avoid calling
1586         currently_open_class.
1588 2016-07-23  Jason Merrill  <jason@redhat.com>
1590         PR c++/66617
1591         * call.c (add_list_candidates): Handle VTT parm.
1592         (build_new_method_call_1): Likewise.
1594         PR c++/55922
1595         PR c++/63151
1596         * init.c (expand_aggr_init_1): Handle list-initialization from {}.
1598         PR c++/70709
1599         * class.c (walk_subobject_offsets): Handle 0-length array.
1601         PR c++/70778
1602         * pt.c (tsubst): Also substitute into the template of a
1603         BOUND_TEMPLATE_TEMPLATE_PARM.
1605         PR c++/71738
1606         * pt.c (lookup_template_class_1): Handle getting template from tsubst.
1608         PR c++/71350
1609         * decl.c (reshape_init_r): Check complain for missing braces warning.
1611 2016-07-22  Jason Merrill  <jason@redhat.com>
1613         PR c++/71576
1614         * call.c (convert_like_real): Use lvalue_kind.
1616         PR c++/71748
1617         PR c++/52746
1618         * pt.c (tsubst_baselink): Call
1619         adjust_result_of_qualified_name_lookup for unqualified
1620         destructors.
1622 2016-07-21  Jason Merrill  <jason@redhat.com>
1624         PR c++/69223
1625         * semantics.c (apply_deduced_return_type): Call
1626         complete_type_or_else before building the new RESULT_DECL.
1628         PR c++/71274
1629         * decl2.c (maybe_instantiate_decl): Split out from mark_used.
1630         (decl_constant_var_p): Use it instead.
1632         PR c++/71630
1633         * pt.c (instantiate_decl): Fix pattern_defined for namespace scope
1634         variable templates.
1636         PR c++/71913
1637         * call.c (unsafe_copy_elision_p): It's OK to elide when
1638         initializing an unknown object.
1640         * call.c (build_over_call): Check unsafe_copy_elision_p even for
1641         trivial constructors.
1642         * method.c (do_build_copy_constructor): Don't copy tail padding
1643         even in a trivial constructor.
1645 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
1647         PR c++/71728
1648         * constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>:
1649         Replace assert with test, return false if the goto isn't break
1650         or continue.  Formatting fix.
1652 2016-07-21  Richard Biener  <rguenther@suse.de>
1654         * vtable-class-hierarchy.c (vtv_generate_init_routine): Set
1655         DECL_IGNORED_P.
1657 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
1659         PR c++/71941
1660         * cp-gimplify.c (cp_genericize): For nested cp_genericize calls
1661         save/restore bc_label array.
1663 2016-07-21  Jason Merrill  <jason@redhat.com>
1665         PR c++/70781
1666         * parser.c (cp_parser_lambda_expression): Unset OK if there was an
1667         error parsing the lambda-declarator.
1669         PR c++/71896
1670         * constexpr.c (cxx_eval_binary_expression): Handle comparison
1671         between lowered and unlowered PTRMEM_CST.
1673         PR c++/65168
1674         * typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr.
1675         Don't set c_inhibit_evaluation_warnings.
1677         PR c++/71121
1678         * cp-gimplify.c (cp_fully_fold): First call maybe_constant_value.
1680 2016-07-21  Andrew Sutton  <andrew.n.sutton@gmail.com>
1681             Jason Merrill  <jason@redhat.com>
1683         Improving concepts performance and diagnostics.
1684         PR c++/67565
1685         PR c++/67579
1686         PR c++/71843
1687         * cp-tree.def (CHECK_CONSTR): New.
1688         * cp-tree.h (CHECK_CONSTR_CONCEPT): New.
1689         (CHECK_CONSTR_ARGS): New.
1690         * constraint.cc (make_predicate_constraint): Remove in favor of
1691         normalize_expression.
1692         (resolve_constraint_check): Actually return error_mark_node when
1693         resolution fails.
1694         (resolve_variable_concept_check): Perform coercion as if processing
1695         a template. Also return errors on resolution failure.
1696         (lift_*): Remove all of these functions. Don't unnecessarily inline
1697         concepts.
1698         (learn_*): Add facilities to memoize implications for subsumption
1699         during normalization.
1700         (expanding_concept): New.
1701         (expand_concept): New. Return the inlined and normalized definition
1702         of a concept when needed.
1703         (transform_*, xform_*): Rename to normalize_* to better reflect the
1704         responsibility of those functions.
1705         (normalize_template_id_expression): Check for non-boolean operands
1706         when possible. Generate check constraints instead of normal variable
1707         references.
1708         (normalize_call_expression): Report errors when resolution fails.
1709         (check_for_logical_overloads): Rewrite this check to more accurately
1710         report the error.
1711         (normalize_atom): Check for overloaded calls and invalid types before
1712         determining if the expression refers to a concept.
1713         (build_constraints): Don't cache normalized constraints or decomposed
1714         assumptions.
1715         (finish_shorthand_constraint): Return a normalized expression instead
1716         of a predicate constraint.
1717         (finish_template_introduction): Same.
1718         (placeholder_extract_concept_and_args): Rewrite this since we only
1719         ever get check constraints here.
1720         (equivalent_placeholder_constraints): Rewrite in terms of check
1721         constraints, and handle error_mark_nodes correctly.
1722         (tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr)
1723         (tsubst_implicit_conversion_constr)
1724         (tsubst_argument_deduction_constr, tsubst_exception_constr)
1725         (tsubst_parameterized_constraint, tsubst_constraint): New.
1726         (tsbust_conjunection): Replace with tsubst_logical_operator and
1727         actually generate the right kind of constraint.
1728         (tsubst_requirement_body): Reverse the order of substituted arguments
1729         so that they appear in the order written (helps diagnostics).
1730         (satisfy_check_constraint): New.
1731         (satisfy_conjunction): Simplify.
1732         (satisfy_disjunction): Same.
1733         (satisfy_constraint_1): Handle check constraints.
1734         (eval_constr): New (private) global state.
1735         (evaluating_constraints_sentinel): New. Manages eval_constr.
1736         (satisfy_constraint): Add timing variables.
1737         (satisfy_associated_constraints): Add hooks for memoization.
1738         (evaluate_function_concept): Build a check constraint instead of
1739         normalizing its definition.
1740         (evaluate_variable_concept): Same.
1741         (evaluate_constraint_expression): Normalize, but in the current
1742         declaration processing context.
1743         (evaluating_constraints_p): New.
1744         (elide_constraint_failure_p): Actually emit constraint_thresh errors.
1745         (diagnose_*): Remove artificial indentation. Add a new parameter to
1746         each that tracks the current (complete) constraint prior to any
1747         substitutions.
1748         (diagnose_expression): Removed.
1749         (diagnose_call_expression): Same.
1750         (diagnose_template_id): Same.
1751         (diagnose_template_id): New.
1752         (diagnose_logical_constraint): New.
1753         (diagnose_expression_constraint): Show the original expression.
1754         (diagnose_type_constraint): Show the original type.
1755         (diagnose_implicit_conversion_constraint): Be specific about
1756         failures, don't re-diagnose a known-to-be-failed substitutions,
1757         and manage elisions properly.
1758         (diagnose_argument_deduction_constraint): Same.
1759         (diagnose_exception_constraint): Same.
1760         (diagnose_parameterized_constraint): Same.
1761         (constraint_p): Allow EXPR_PACK_EXPANSION.
1762         * logic.cc (next_by_distance): Removed. No longer used.
1763         (any_p): Renamed from any_of.
1764         (term_entry, term_hasher): New.
1765         (term_list): Rewrite to include a hash table for quick lookup.
1766         Also, make less stateful.
1767         (proof_state): Extend to allow goals to be discharged once
1768         satisfied.
1769         (non_atomic_constraint_p): New.
1770         (any_non_atomic_constraints_p): New.
1771         (...rest...): Previous implementation completely replaced with an
1772         iterative algorithm that opportunistically prunes the search space
1773         before committing to using more memory.
1774         * parser.c: (cp_parser_type_parameter): Normalize constraints.
1775         (cp_parser_explicit_template_declaration): Same.
1776         * pt.c: (finish_template_variable): Be less redundant with this error
1777         message.
1778         (template_args_equal): No longer static.
1779         (tsubst_decl): Don't try to find specializations of variables that
1780         have already been instantiated.
1781         (build_non_dependent_expr): Avoid infinite recursion during concept
1782         expansion.
1783         (make_constrained_auto): Normalize constraints.
1784         (do_auto_deduction): When doing auto deduction from a
1785         partial-concept-id, be sure to include the explicit args checking
1786         the constraints.
1787         (constraint_sat_*): New. Memoize satisfied constraints.
1788         (concept_spec_*): New. Memoize expressions associated with a concept
1789         specialization.
1790         (constraint_memos, concept_memos): New.
1791         (lookup_constraint_satisfaction, memoize_constraint_satisfaction): New.
1792         (lookup_concept_satisfaction, memoize_concept_satisfaction): New.
1793         (get_concept_expansion, save_concept_expansion): New.
1794         (hash_subsumption_args): New.
1795         (comp_subsumption_args): New.
1796         (subsumption_*): New. Memoize parts of the subsumption relation.
1797         (lookup_subsumption_result, save_subsumption_result): New.
1798         (init_constraint_processing): Initialize memo tables.
1799         (get_constraints): Shortcut if !flag_concepts.
1800         * decl.c (grokfndecl): Normalize constraints.
1801         * error.c (dump_simple_decl): Print "concept" when appropriate.
1802         (dump_function_decl): Same.
1803         (dump_template_decl): Don't write requirements when we're not
1804         printing the header.
1805         (dump_expr): Handle fold expressions.
1806         * cxx-pretty-print.c (cxx_pretty_printer::expression): Handle
1807         fold expressions.
1808         (get_fold_operator): New.
1809         (pp_cxx_unary_left_fold_expression): New.
1810         (pp_cxx_unary_right_fold_expression): New.
1811         (pp_cxx_binary_fold_expression): New.
1812         (pp_cxx_check_constraint): New.
1813         (pp_cxx_*_constraint): Rewrite the grammar of internal constraints
1814         to make them easier to read when debugging.
1815         * search.c (accessible_p): Don't shortcut when evaluating constraints.
1816         * tree.c (cp_tree_equal): Handle CHECK_CONSTR.
1818 2016-07-20  David Malcolm  <dmalcolm@redhat.com>
1820         PR c/70339
1821         PR c/71858
1822         * name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h,
1823         and parser.h.
1824         (suggest_alternatives_for): If no candidates are found, try
1825         lookup_name_fuzzy and report if if finds a suggestion.
1826         (consider_binding_level): New function.
1827         (lookup_name_fuzzy) New function.
1828         * parser.c: Include gcc-rich-location.h.
1829         (cp_lexer_next_token_is_decl_specifier_keyword): Move most of
1830         logic into...
1831         (cp_keyword_starts_decl_specifier_p): ...this new function.
1832         (cp_parser_diagnose_invalid_type_name): When issuing
1833         "does not name a type" errors, attempt to make a suggestion using
1834         lookup_name_fuzzy.
1835         * parser.h (cp_keyword_starts_decl_specifier_p): New prototype.
1836         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject
1837         types that are not CLASS_TYPE_P, rather than rejecting individual
1838         tree codes.
1840 2016-07-20  Jakub Jelinek  <jakub@redhat.com>
1842         PR c++/71909
1843         * parser.c (cp_parser_save_member_function_body): Consume
1844         __transaction_relaxed or __transaction_atomic with optional
1845         attribute.  Only skip catch with block if try keyword is seen.
1847         PR c++/50060
1848         * constexpr.c (cxx_eval_builtin_function_call): Pass false as lval
1849         when evaluating call arguments.  Use fold_builtin_call_array instead
1850         of fold_build_call_array_loc, return t if it returns NULL.  Otherwise
1851         check the result with potential_constant_expression and call
1852         cxx_eval_constant_expression on it.
1854 2016-07-19  Jason Merrill  <jason@redhat.com>
1856         PR c++/67164
1857         * pt.c (iterative_hash_template_arg, template_args_equal): Don't
1858         handle ARGUMENT_PACK_SELECT.
1860 2016-07-18  Jakub Jelinek  <jakub@redhat.com>
1862         PR c++/70869
1863         PR c++/71054
1864         * cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change.
1865         * tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL
1866         non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and
1867         DECL_SIZE_UNIT.
1869         PR c++/71835
1870         * call.c (build_op_call_1): Use convert_like_with_context only
1871         if cand->fn is a decl.
1873         PR c++/71828
1874         * constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
1875         For lval don't use cxx_eval_unary_expression and instead recurse
1876         and if needed rebuild the reference.
1878         PR c++/71826
1879         * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.
1881         PR c++/71822
1882         * cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively
1883         fold *expr_p before genericizing it.
1885         PR c++/71871
1886         * typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change.
1888 2016-07-15  Jason Merrill  <jason@redhat.com>
1890         PR c++/71495
1891         * call.c (convert_like_real): Mask complain.
1892         * semantics.c (perform_koenig_lookup): Likewise.
1894         PR c++/71092
1895         * constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph
1896         threw away DECL_SAVED_TREE.
1898         PR c++/71117
1899         Core 2189
1900         * call.c (add_template_conv_candidate): Disable if there are
1901         viable candidates.
1903         PR c++/71511
1904         * typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE.
1906         PR c++/71513
1907         * pt.c (tsubst_attributes): Fix loop logic.
1909         PR c++/71604
1910         PR c++/54430
1911         * parser.c (cp_parser_range_for): Modify IDENTIFIER_BINDING directly.
1912         (cp_parser_simple_declaration): Diagnose type definition in
1913         for-range-declaration.
1915         PR c++/71711
1916         * operators.def: Add *_FOLD_EXPR.
1917         * cp-tree.h (FOLD_EXPR_P): Parenthesize.
1918         * mangle.c (write_expression): Handle fold-expressions.
1919         * pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold)
1920         (tsubst_unary_right_fold, tsubst_binary_right_fold): Handle
1921         partial instantiation.
1923         PR c++/71814
1924         * mangle.c (write_expression): Handle sizeof... an argument pack.
1926         PR c++/71718
1927         * pt.c (push_tinst_level_loc): Set at_eof before fatal_error.
1929         PR c++/70824
1930         * init.c (constant_value_1): Don't instantiated DECL_INITIAL of
1931         artificial variables.
1933 2016-07-15  Cesar Philippidis  <cesar@codesourcery.com>
1935         * parser.c (cp_parser_oacc_declare): Don't scan for
1936         GOMP_MAP_POINTER.
1937         * semantics.c (handle_omp_array_sections): Mark data clauses with
1938         GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having
1939         zero-length subarrays.
1941 2016-07-11  Jason Merrill  <jason@redhat.com>
1943         * decl.c (store_parm_decls): Remove check for void parm.
1945 2016-07-08  Jason Merrill  <jason@redhat.com>
1947         * cp-tree.h: Unpoison lvalue_p.
1948         * call.c, class.c, constexpr.c, cvt.c, init.c, lambda.c, pt.c,
1949         tree.c, typeck.c, typeck2.c: Use lvalue_p instead of
1950         real_lvalue_p.
1952         * tree.c (obvalue_p): Rename from lvalue_p.
1953         (lvalue_p): Define for c-common.
1954         * call.c, cp-tree.h, cvt.c, init.c: Adjust.
1955         * typeck.c: Adjust.
1956         (cp_build_addr_expr_1): Remove obsolete code.
1958         * tree.c (glvalue_p): Rename from lvalue_or_rvalue_with_address_p.
1959         * call.c, cp-tree.h, typeck.c: Adjust.
1961         * lambda.c (maybe_add_lambda_conv_op): Fix null object argument.
1963         P0145R2: Refining Expression Order for C++.
1964         * cp-gimplify.c (lvalue_has_side_effects): New.
1965         (cp_gimplify_expr): Implement assignment ordering.
1966         * call.c (op_is_ordered, build_over_call): Adjust for
1967         -fargs-in-order renaming to -fstrong-eval-order.
1968         * cp-gimplify.c (cp_gimplify_expr): Likewise.
1970 2016-07-07  Jakub Jelinek  <jakub@redhat.com>
1971             Kai Tietz  <ktietz70@googlemail.com>
1973         PR c++/70869
1974         PR c++/71054
1975         * cp-gimplify.c (cp_genericize_r): For DECL_EXPR for non-static
1976         artificial vars, genericize their initializers.
1978 2016-07-05  David Malcolm  <dmalcolm@redhat.com>
1980         PR c++/62314
1981         * parser.c (cp_parser_class_specifier_1): When reporting
1982         missing semicolons, use a fixit-hint to suggest insertion
1983         of a semicolon immediately after the closing brace,
1984         offsetting the reported column accordingly.
1986 2016-07-04  Jan Beulich  <jbeulich@suse.com>
1988         * lang-specs.h ("@c++-header"): Conditionalize "-o".
1990 2016-06-29  Thomas Schwinge  <thomas@codesourcery.com>
1992         * parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>:
1993         Move pragma context checking into...
1994         (cp_parser_omp_cancellation_point): ... here, and improve
1995         diagnostic messages.
1996         * semantics.c (finish_omp_cancel, finish_omp_cancellation_point):
1997         Improve diagnostic messages.
1999 2016-06-28  Jakub Jelinek  <jakub@redhat.com>
2001         * Make-lang.in: Don't cat ../stage_current if it does not exist.
2003 2016-06-24  Jason Merrill  <jason@redhat.com>
2005         P0145R2: Refining Expression Order for C++.
2006         * typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS.
2008         * tree.c (get_target_expr_sfinae): Handle bit-fields.
2009         (build_target_expr): Call mark_rvalue_use.
2011 2016-06-24  Jakub Jelinek  <jakub@redhat.com>
2013         * call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
2014         (build_over_call): For magic == 3, do no conversion only on 3rd
2015         argument.
2017 2016-06-23  Andi Kleen  <ak@linux.intel.com>
2019         * Make-lang.in: Add support for autofdo.
2021 2016-06-21  Jason Merrill  <jason@redhat.com>
2023         * constraint.cc (constraints_satisfied_p): Keep as many levels of
2024         args as our template has levels of parms.
2026         * pt.c (template_parm_outer_level, uses_outer_template_parms): New.
2027         (type_dependent_expression_p): Use uses_outer_template_parms.
2029 2016-06-20  David Malcolm  <dmalcolm@redhat.com>
2031         * parser.c (cp_parser_string_literal): Convert non-standard
2032         concatenation error to directly use a rich_location, and
2033         use that to add the location of the first literal to the
2034         diagnostic.
2036 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
2038         * decl.c (validate_constexpr_redeclaration): Change pair of errors
2039         to error + inform.
2040         * error.c (dump_function_decl): Save the constexpr specifier too.
2042 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
2044         * tree.c (builtin_valid_in_constant_expr_p): Test for
2045         DECL_BUILT_IN_CLASS equal to BUILT_IN_NORMAL instead of just
2046         DECL_BUILT_IN.
2047         (bot_manip): Likewise.
2048         * call.c (magic_varargs_p): Likewise.
2050 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
2052         * decl.c (grokfndecl): Change pair of errors to error + inform.
2054 2016-06-17  Jason Merrill  <jason@redhat.com>
2056         PR c++/71209
2057         * typeck.c (finish_class_member_access_expr): Avoid "not a base"
2058         warning when there are dependent bases.
2060 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
2062         * semantics.c (handle_omp_array_sections_1): Don't ICE when
2063         processing_template_decl when checking for bitfields and unions.
2064         Look through REFERENCE_REF_P as base of COMPONENT_REF.
2065         (finish_omp_clauses): Look through REFERENCE_REF_P even for
2066         array sections with COMPONENT_REF bases.
2068 2016-06-16  Jakub Jelinek  <jakub@redhat.com>
2070         * parser.c (cp_parser_omp_var_list_no_open): Call
2071         convert_from_reference before cp_parser_postfix_dot_deref_expression.
2072         * semantics.c (finish_omp_clauses): Don't ICE when
2073         processing_template_decl when checking for bitfields and unions.
2074         Look through REFERENCE_REF_P as base of COMPONENT_REF.
2076 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
2078         * decl.c (wrapup_globals_for_namespace): Use DECL_SOURCE_LOCATION and
2079         "%qF" in warning_at instead of "%q+F" in warning.
2080         (check_redeclaration_exception_specification): Likewise in pedwarn
2081         (and error, inform, for consistency).
2082         * call.c (joust): Likewise.
2084 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
2086         PR c++/70202
2087         * decl.c (xref_basetypes): Revert r117839 changes; add fix-up
2088         code at the end of the for loop; also revert r159637 changes,
2089         add back the gcc_assert.
2090         * cp-tree.h (xref_basetypes): Adjust declaration.
2091         * parser.c (cp_parser_class_head): Adjust xref_basetypes call.
2093 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
2095         * search.c: Include spellcheck-tree.h rather than spellcheck.h.
2097 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
2099         * typeck.c: Include "gcc-rich-location.h".
2100         (finish_class_member_access_expr): Simplify fixit code by
2101         using gcc_rich_location::add_fixit_misspelled_id.
2103 2016-06-14  Jason Merrill  <jason@redhat.com>
2105         P0145R2: Refining Expression Order for C++.
2106         * cp-tree.h (CALL_EXPR_OPERATOR_SYNTAX, CALL_EXPR_ORDERED_ARGS)
2107         (CALL_EXPR_REVERSE_ARGS): New.
2108         * call.c (build_new_op_1): Set them.
2109         (extract_call_expr, op_is_ordered): New.
2110         (build_over_call): Set CALL_EXPR_ORDERED_ARGS.
2111         * cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Handle new flags.
2112         * pt.c (tsubst_copy_and_build): Copy new flags.
2113         * semantics.c (simplify_aggr_init_expr): Likewise.
2114         * tree.c (build_aggr_init_expr): Likewise.
2115         (build_min_non_dep_op_overload): Likewise.
2117 2016-06-14  Jakub Jelinek  <jakub@redhat.com>
2119         PR c++/71528
2120         * decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external
2121         olddecl vars, preserve their TREE_READONLY bit.
2123         PR c++/71516
2124         * decl.c (complete_vars): Handle gracefully type == error_mark_node.
2126 2016-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
2128         * typeck2.c (digest_init_r): Use EXPR_LOC_OR_LOC on init.
2130 2016-06-13  Paolo Carlini  <paolo.carlini@oracle.com>
2132         * decl.c (grokdeclarator): Fix typo in pedwarn text.
2134 2016-06-10  Thomas Schwinge  <thomas@codesourcery.com>
2136         PR c/71381
2137         * parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>:
2138         Loosen checking.
2140 2016-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
2142         PR c++/71465
2143         Revert:
2144         2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
2146         PR c++/70202
2147         * parser.c (cp_parser_class_head): When xref_basetypes fails and
2148         emits an error do not zero the type.
2150 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
2152         * decl.c (maybe_deduce_size_from_array_init): Use
2153         DECL_SOURCE_LOCATION in error_at.
2154         (layout_var_decl): Likewise.
2155         (check_array_initializer): Likewise.
2156         (check_initializer): Likewise.
2157         (duplicate_decls, check_elaborated_type_specifier): Tidy.
2159 2016-06-08  Martin Sebor  <msebor@redhat.com>
2160             Jakub Jelinek  <jakub@redhat.com>
2162         PR c++/70507
2163         PR c/68120
2164         * constexpr.c: Include gimple-fold.h.
2165         (cxx_eval_internal_function): New function.
2166         (cxx_eval_call_expression): Call it.
2167         (potential_constant_expression_1): Handle integer arithmetic
2168         overflow built-ins.
2169         * tree.c (builtin_valid_in_constant_expr_p): Handle
2170         BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P.
2172 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
2174         * pt.c (tsubst, case TYPENAME_TYPE): Don't delay checking the
2175         return value of tsubst_aggr_type for error_mark_node.
2177 2016-06-08  Jakub Jelinek  <jakub@redhat.com>
2179         PR c++/71442
2180         * pt.c (tsubst_copy): Only set TREE_USED on DECLs.
2182 2016-06-06  Jakub Jelinek  <jakub@redhat.com>
2183             Patrick Palka  <ppalka@gcc.gnu.org>
2185         PR c++/70847
2186         PR c++/71330
2187         PR c++/71393
2188         * cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL
2189         right after cp_fold call if cp_fold has returned the same stmt
2190         already in some earlier cp_fold_r call.
2191         (cp_fold_function): Add pset automatic variable, pass its address
2192         to cp_walk_tree.
2194 2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
2196         PR c++/70202
2197         * parser.c (cp_parser_class_head): When xref_basetypes fails and
2198         emits an error do not zero the type.
2200 2016-06-03  Patrick Palka  <ppalka@gcc.gnu.org>
2202         PR c++/27100
2203         * decl.c (duplicate_decls): Properly copy the
2204         DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and
2205         DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL.
2207 2016-06-03  Chung-Lin Tang  <cltang@codesourcery.com>
2209         * semantics.c (finish_omp_clauses): Mark OpenACC reduction
2210         arguments as addressable when async clause exists.
2212 2016-06-02  Jan Hubicka  <jh@suse.cz>
2214         * cp-gimplify.c (genericize_continue_stmt): Force addition of
2215         predict stmt.
2217 2016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
2219         * decl.c (xref_tag_1): Change pairs of errors to error + inform.
2220         (start_enum): Likewise.
2221         * parser.c (cp_parser_class_head): Likewise.
2223 2016-06-02  Jakub Jelinek  <jakub@redhat.com>
2225         PR c++/71372
2226         * cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression
2227         is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS
2228         and TREE_THIS_VOLATILE flags.  For ARRAY_REF and ARRAY_RANGE_REF, copy
2229         over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags
2230         to the newly built tree.
2232 2016-05-31  Jason Merrill  <jason@redhat.com>
2234         * pt.c (instantiate_decl): Avoid recalculation.
2236         PR c++/60095
2237         PR c++/69515
2238         PR c++/69009
2239         * pt.c (instantiate_template_1): Don't put the partial
2240         specialization in DECL_TI_TEMPLATE.
2241         (partial_specialization_p, impartial_args): Remove.
2242         (regenerate_decl_from_template): Add args parm.
2243         (instantiate_decl): Look up the partial specialization again.
2245         PR c++/71227
2246         * pt.c (check_explicit_specialization): Give better diagnostic about
2247         specializing a hidden friend.
2249 2016-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
2251         PR c++/71248
2252         * decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION
2253         to obtain correct locations; avoid redundant diagnostics on
2254         out-of-class definitions.
2256 2016-05-30  Martin Sebor  <msebor@redhat.com>
2258         PR c++/71306
2259         * init.c (warn_placement_new_too_small): Handle placement new arguments
2260         that are elements of arrays more carefully.  Remove a pointless loop.
2262 2016-05-30  Jakub Jelinek  <jakub@redhat.com>
2264         PR c++/71349
2265         * parser.c (cp_parser_omp_for): Don't disallow nowait clause
2266         when combined with target construct.
2267         (cp_parser_omp_parallel): Pass cclauses == NULL as last argument
2268         to cp_parser_omp_all_clauses.
2270 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
2272         PR c++/71238
2273         * lex.c (unqualified_name_lookup_error): Take a location too.
2274         (unqualified_fn_lookup_error): Take a cp_expr.
2275         * cp-tree.h (unqualified_name_lookup_error,
2276         unqualified_fn_lookup_error): Adjust declarations.
2277         * semantics.c (perform_koenig_lookup): Adjust
2278         unqualified_fn_lookup_error call, pass the location of
2279         the identifier too as part of a cp_expr.
2281 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
2283         PR c++/71099
2284         * parser.c (cp_parser_function_specifier_opt): Use current_class_type
2285         to improve the diagnostic about wrong uses of 'virtual'.
2287 2016-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
2289         PR c++/71105
2290         * lambda.c (maybe_add_lambda_conv_op): Early return also when
2291         LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE.
2293 2016-05-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
2295         Revert:
2296         PR c++/69855
2297         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
2298         decls into the global scope after stripping template bits
2299         and setting DECL_ANTICIPATED.
2301 2016-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
2303         PR c++/60385
2304         * name-lookup.c (push_namespace): Return bool, false when pushdecl
2305         fails.
2306         * name-lookup.h (push_namespace): Adjust declaration.
2307         * parser.c (cp_parser_namespace_definition): Check push_namespace
2308         return value.
2310 2016-05-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
2312         PR c++/69855
2313         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
2314         decls into the global scope after stripping template bits
2315         and setting DECL_ANTICIPATED.
2317 2016-05-26  Jakub Jelinek  <jakub@redhat.com>
2319         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn
2320         if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive.
2322 2016-05-26  Patrick Palka  <ppalka@gcc.gnu.org>
2324         PR c++/70822
2325         PR c++/70106
2326         * cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to
2327         SCOPE_REFs too.
2328         * pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set
2329         on the qualified_id then propagate it to the resulting
2330         expression.
2331         (do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs
2332         too.
2333         * semantics.c (force_paren_expr): If given a SCOPE_REF, just set
2334         its REF_PARENTHESIZED_P flag.
2336 2016-05-25  Jason Merrill  <jason@redhat.com>
2338         PR c++/71173
2339         PR c++/70522
2340         * cp-tree.h (enum tag_types): Add scope_type.
2341         * parser.c (cp_parser_class_name): Use scope_type.
2342         (prefer_type_arg): Handle scope_type.
2343         (cp_parser_lookup_name): Use prefer_type_arg.
2344         * name-lookup.c (lookup_qualified_name): Change bool is_type_p to
2345         int prefer_type, use lookup_flags.
2346         * name-lookup.h: Adjust.
2348 2016-05-24  Cesar Philippidis  <cesar@codesourcery.com>
2350         * parser.c (cp_parser_oacc_declare): Add support for
2351         GOMP_MAP_FIRSTPRIVATE_POINTER.
2352         * semantics.c (handle_omp_array_sections_1): Replace bool is_omp
2353         argument with enum c_omp_region_type ort.  Don't privatize OpenACC
2354         non-static members.
2355         (handle_omp_array_sections): Replace bool is_omp argument with enum
2356         c_omp_region_type ort.  Update call to handle_omp_array_sections_1.
2357         (finish_omp_clauses): Add specific errors and warning messages for
2358         OpenACC.  Use firsrtprivate pointers for OpenACC subarrays.  Update
2359         call to handle_omp_array_sections.
2361 2016-05-24  Jason Merrill  <jason@redhat.com>
2363         PR c++/70584
2364         * cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold
2365         returns a decl.
2366         (cp_fold) [INDIRECT_REF]: Don't fold to an rvalue.
2368 2016-05-24  Martin Sebor  <msebor@redhat.com>
2370         PR c++/71147
2371         * decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p.
2372         * pt.c (instantiate_class_template_1): Try to complete the element
2373         type of a flexible array member.
2374         (can_complete_type_without_circularity): Handle arrays of unknown bound.
2375         * typeck.c (complete_type): Also complete the type of the elements of
2376         arrays with an unspecified bound.
2378 2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
2380         PR c++/69872
2381         * typeck2.c (check_narrowing): Check pedwarn return value.
2383 2016-05-24  Jakub Jelinek  <jakub@redhat.com>
2385         PR c++/71257
2386         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>:
2387         For OMP_CLAUSE_LINEAR_REF don't require type to be
2388         integral or pointer.
2390 2016-05-24  Richard Biener  <rguenther@suse.de>
2392         PR middle-end/70434
2393         PR c/69504
2394         * expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.
2395         * constexpr.c (cxx_eval_array_reference): Handle indexed
2396         vectors.
2397         * typeck.c (cp_build_array_ref): Adjust.
2399 2016-05-23  Jason Merrill  <jason@redhat.com>
2401         PR c++/70344
2402         * constexpr.c (cxx_eval_call_expression): Check for
2403         fun == current_function_decl again.
2405         PR c++/70584
2406         * cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call
2407         maybe_undo_parenthesized_ref.
2409         PR c++/70735
2410         * pt.c (tsubst_copy): Just return a local variable from
2411         non-template context.  Don't call rest_of_decl_compilation for
2412         duplicated static locals.
2413         (tsubst_decl): Set DECL_CONTEXT of local static from another
2414         function.
2416 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2418         PR c++/70972
2419         * method.c (forward_parm): Use cp_build_reference_type.
2421 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2423         PR c++/69095
2424         * parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs.
2426 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2428         * pt.c (check_for_bare_parameter_packs): Improve error message
2429         location for expressions.
2431 2016-05-20  Nathan Sidwell  <nathan@acm.org>
2433         * constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if
2434         ... goto.
2435         (cxx_eval_call_expression): Fix comment grammar.
2437 2016-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
2439         PR c++/70572
2440         * decl.c (cp_finish_decl): Check do_auto_deduction return value
2441         and return immediately in case of erroneous code.
2443 2016-05-19  Marek Polacek  <polacek@redhat.com>
2445         PR c++/71075
2446         * pt.c (unify_template_argument_mismatch): Use %qE instead of %qD.
2448 2016-05-19  Jason Merrill  <jason@redhat.com>
2450         PR c++/10200
2451         * pt.c (fn_type_unification): Add outer template args if needed.
2452         (type_unification_real): Handle getting full args.
2454 2016-05-19  David Malcolm  <dmalcolm@redhat.com>
2456         PR c++/71184
2457         * parser.c (cp_parser_operator): For array new/delete, check that
2458         cp_parser_require returned a non-NULL token before dereferencing
2459         it.
2461 2016-05-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2463         * decl.c (finish_enum_value_list): Use the specified mode.
2465 2016-05-18  Jason Merrill  <jason@redhat.com>
2467         * pt.c (value_dependent_expression_p): Tweak new cases to better
2468         match the wording in the standard.
2470 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
2472         PR c++/69793
2473         * parser.c (cp_parser_template_id): Don't call cp_lexer_peek_nth_token
2474         when the previous cp_lexer_peek_token returns CPP_EOF.
2476 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
2478         PR c++/70466
2479         * call.c (convert_like_real): Check that we are actually converting
2480         from an init list.
2482 2016-05-16  Matthew Wahab  <matthew.wahab@arm.com>
2484         * decl.c (grokdeclarator): Remove errmsg and use of
2485         targetm.invalid_return_type.
2486         (grokparms): Remove errmsg and use of
2487         targetm.invalid_parameter_type.
2489 2016-05-13  Jason Merrill  <jason@redhat.com>
2491         PR c++/10200
2492         PR c++/69753
2493         * pt.c (tsubst_decl): Use uses_template_parms.
2494         (instantiate_template_1): Handle non-dependent calls in templates.
2495         (value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL.
2496         (type_dependent_expression_p): Only consider innermost template args.
2497         (dependent_template_arg_p): Check enclosing class of a template here.
2498         (dependent_template_p): Not here.
2499         (type_dependent_object_expression_p): New.
2500         * typeck.c (finish_class_member_access_expr): Use it.
2501         * parser.c (cp_parser_postfix_expression): Use it.
2502         (cp_parser_postfix_dot_deref_expression): Use it.  Use comptypes
2503         to detect the current instantiation.
2504         (cp_parser_lookup_name): Really implement DR 141.
2505         * search.c (lookup_field_r): Prefer a dependent using-declaration.
2506         (any_dependent_bases_p): Split out from...
2507         * name-lookup.c (do_class_using_decl): ...here.
2508         * call.c (build_new_method_call_1): Use it.
2509         * semantics.c (finish_call_expr): 'this' doesn't make a call dependent.
2510         * tree.c (non_static_member_function_p): Remove.
2511         * typeck2.c (build_x_arrow): Use dependent_scope_p.
2513         * parser.c (cp_parser_postfix_dot_deref_expression): Use
2514         complete_type_or_else for unknown_type_node, too.
2516 2016-05-12  Marek Polacek  <polacek@redhat.com>
2518         PR c/70756
2519         * call.c (build_new_op_1): Pass LOC to cp_build_modify_expr.
2520         * cp-tree.h (cp_build_modify_expr): Update declaration.
2521         (cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline
2522         overloads.
2523         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to
2524         cp_build_modify_expr.
2525         * decl2.c (set_guard): Likewise.
2526         (handle_tls_init): Likewise.
2527         * init.c (perform_member_init): Likewise.
2528         (expand_virtual_init): Likewise.
2529         (build_new_1): Likewise.
2530         (build_vec_delete_1): Likewise.
2531         (get_temp_regvar): Likewise.
2532         (build_vec_init): Likewise.
2533         * method.c (do_build_copy_assign): Likewise.
2534         (assignable_expr): Likewise.
2535         * semantics.c (finish_omp_for): Likewise.
2536         * typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and
2537         cp_pointer_int_sum.
2538         (cp_pointer_int_sum): Add location parameter.  Pass it down to
2539         pointer_int_sum.
2540         (pointer_diff): Add location parameter.  Use it.
2541         (build_modify_expr): Pass location down to cp_build_modify_expr.
2542         (cp_build_modify_expr): Add location parameter.  Use it.
2543         (build_x_modify_expr): Pass location down to cp_build_modify_expr.
2544         * typeck2.c (cxx_incomplete_type_diagnostic,
2545         cxx_incomplete_type_error): Add location parameter.
2547 2016-05-11  Marek Polacek  <polacek@redhat.com>
2549         PR c++/71024
2550         * decl.c (duplicate_decls): Call diagnose_mismatched_decls.
2552 2016-05-05  Jakub Jelinek  <jakub@redhat.com>
2554         * parser.c (cp_parser_selection_statement): For RID_SWITCH,
2555         pass if_p instead of NULL to cp_parser_implicitly_scoped_statement.
2557 2016-05-04  Marek Polacek  <polacek@redhat.com>
2559         * parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses
2560         with OPT_Wdangling_else.
2562 2016-05-03  Martin Sebor  <msebor@redhat.com>
2564         PR c++/66561
2565         * tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE,
2566         BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions.
2568 2016-05-03  Marek Polacek  <polacek@redhat.com>
2570         PR c/70859
2571         * call.c (build_cxx_call): Pass location and vNULL down to
2572         check_builtin_function_arguments.
2574 2016-05-03  Richard Biener  <rguenther@suse.de>
2576         * Make-lang.in (cc1plus-checksum.c): For stage-final re-use
2577         the checksum from the previous stage.
2579 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
2581         PR c++/62314
2582         * typeck.c (finish_class_member_access_expr): When
2583         giving a hint about a possibly-misspelled member name,
2584         add a fix-it replacement hint.
2586 2016-05-02  Cesar Philippidis  <cesar@codesourcery.com>
2588         * cp-tree.h (finish_omp_clauses): Update prototype.
2589         * parser.c (cp_parser_oacc_all_clauses): Update call to
2590         finish_omp_clauses.
2591         (cp_parser_omp_all_clauses): Likewise.
2592         (cp_parser_omp_for_loop): Likewise.
2593         (cp_omp_split_clauses): Likewise.
2594         (cp_parser_oacc_cache): Likewise.
2595         (cp_parser_oacc_loop): Likewise.
2596         (cp_parser_omp_declare_target):
2597         (cp_parser_cilk_simd_all_clauses): Likewise.
2598         (cp_parser_cilk_for): Likewise.
2599         * pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd
2600         arguments with enum c_omp_region_type ort.
2601         (tsubst_omp_clauses): Update calls to finish_omp_clauses.
2602         (tsubst_omp_attribute): Update calls to tsubst_omp_clauses.
2603         (tsubst_omp_for_iterator): Update calls to finish_omp_clauses.
2604         (tsubst_expr): Update calls to tsubst_omp_clauses.
2605         * semantics.c (finish_omp_clauses): Replace bool arguments
2606         allow_fields, declare_simd, and is_cilk with bitmask ort.
2607         (finish_omp_for): Update call to finish_omp_clauses.
2609 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
2611         PR c++/62314
2612         * parser.c (cp_parser_class_head): Capture the start location;
2613         use it to emit a fix-it insertion hint when complaining
2614         about missing "template <> " in explicit specializations.
2616 2016-05-02  Richard Sandiford  <richard.sandiford@arm.com>
2618         * init.c (build_new_1): Use shift operators instead of wi:: shifts.
2620 2016-05-02  Richard Biener  <rguenther@suse.de>
2622         * decl.c (grokdeclarator): Properly insert a DECL_EXPR for
2623         anonymous VLAs.
2625 2016-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
2627         PR c++/66644
2628         * class.c (check_field_decl): Remove final int* parameter, change
2629         the return type to bool; fix logic in order not to reject multiple
2630         initialized fields in anonymous struct.
2631         (check_field_decls): Adjust call.
2633 2016-04-29  Cesar Philippidis  <cesar@codesourcery.com>
2635         PR middle-end/70626
2636         * parser.c (cp_parser_oacc_loop): Don't augment mask with
2637         OACC_LOOP_CLAUSE_MASK.
2638         (cp_parser_oacc_kernels_parallel): Update call to
2639         c_oacc_split_loop_clauses.
2641 2016-04-28  Jason Merrill  <jason@redhat.com>
2643         Implement C++17 [[nodiscard]] attribute.
2644         PR c++/38172
2645         PR c++/54379
2646         * parser.c (cp_parser_std_attribute): Handle [[nodiscard]].
2647         * tree.c (handle_nodiscard_attribute): New.
2648         (cxx_attribute_table): Add [[nodiscard]].
2649         * cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New.
2650         (maybe_warn_nodiscard): New.
2651         (convert_to_void): Call it.
2653         * cvt.c (cp_get_callee): New.
2654         * constexpr.c (get_function_named_in_call): Use it.
2655         * cxx-pretty-print.c (postfix_expression): Use it.
2656         * except.c (check_noexcept_r): Use it.
2657         * method.c (check_nontriv): Use it.
2658         * tree.c (build_aggr_init_expr): Use it.
2659         * cp-tree.h: Declare it.
2661 2015-04-27  Ryan Burn  <contact@rnburn.com>
2662             Jeff Law  <law@redhat.com>
2664         PR c++/69024
2665         PR c++/68997
2666         * cp-gimplify.c (cp_gimplify_expr): Call cilk_cp_detect_spawn_and_unwrap
2667         instead of cilk_detect_spawn_and_unwrap.
2668         * cp-cilkplus.c (is_conversion_operator_function_decl_p): New.
2669         (find_spawn): New.
2670         (cilk_cp_detect_spawn_and_unwrap): New.
2671         * lambda.c: Include cp-cilkplus.h.
2672         * parser.c: Include cp-cilkplus.h.
2673         * cp-tree.h (cpp_validate_cilk_plus_loop): Move prototype into...
2674         * cp-cilkpus.h: New file.
2676 2016-04-27  Nathan Sidwell  <nathan@acm.org>
2678         * constexpr.c (get_fundef_copy): Use the original function for
2679         non-recursive evaluations.
2680         (save_fundef_copy): Always expect a slot to be available.
2682 2016-04-27  Bernd Schmidt  <bschmidt@redhat.com>
2684         * parser.c (cp_parser_postfix_expression): Call
2685         warn_for_memset instead of warning directly here.
2687 2016-04-26  Patrick Palka  <ppalka@gcc.gnu.org>
2689         PR c++/70241
2690         * decl.c (build_enumerator): Set current_access_specifier when
2691         declaring an enumerator belonging to an in-class enumeration.
2692         * parser.c (cp_parser_check_access_in_redecleration): Also
2693         consider in-class enumerations.
2695 2016-04-26  Marek Polacek  <polacek@redhat.com>
2697         PR c++/70744
2698         * call.c (build_conditional_expr_1): Call cp_stabilize_reference
2699         instead of stabilize_reference.
2700         (build_over_call): Likewise.
2701         * cp-tree.h (cp_stabilize_reference): Declare.
2702         * tree.c (cp_stabilize_reference): New function.
2703         * typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of
2704         stabilize_reference.
2705         (unary_complex_lvalue): Likewise.
2706         (cp_build_modify_expr): Likewise.
2708 2016-04-26  Jakub Jelinek  <jakub@redhat.com>
2710         PR bootstrap/70704
2711         * pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of
2712         just flag_checking.
2714 2016-04-25  Jason Merrill  <jason@redhat.com>
2716         * tree.c (std_attribute_table): New.
2717         (init_tree): Register it.
2719 2016-04-22  Jason Merrill  <jason@redhat.com>
2721         * parser.c (cp_parser_perform_range_for_lookup): Decay the array.
2723 2016-04-21  Patrick Palka  <ppalka@gcc.gnu.org>
2725         * name-lookup.c (free_saved_scope): New free list of saved_scope
2726         structures.
2727         (push_to_top_level): Attempt to reuse a saved_scope struct
2728         from free_saved_scope instead of allocating a new one each time.
2729         (pop_from_top_level_1): Chain the now-unused saved_scope structure
2730         onto free_saved_scope.
2732 2016-04-21  Paolo Carlini  <paolo.carlini@oracle.com>
2734         PR c++/70540
2735         * semantics.c (process_outer_var_ref): Unconditionally return
2736         error_mark_node when mark_used returns false.
2738 2016-04-21  Marek Polacek  <polacek@redhat.com>
2740         PR c++/70513
2741         * parser.c (cp_parser_enum_specifier): Check and possibly error for
2742         extra qualification.
2744 2016-04-20  Nathan Sidwell  <nathan@acm.org>
2746         PR c++/55635
2747         * init.c (build_vec_delete_1): Protect operator delete call in try
2748         finally.
2749         (build_delete): Likewise.
2750         * optimize.c (build_delete_destructor_body): Likewise.
2752 2016-04-20  Ilya Verbin  <ilya.verbin@intel.com>
2754         PR c++/69363
2755         * cp-tree.h (finish_omp_clauses): Add new default argument.
2756         * parser.c (cp_parser_cilk_simd_all_clauses): Use finish_omp_clauses
2757         instead of c_finish_cilk_clauses.
2758         * semantics.c (finish_omp_clauses): Add new argument.  Allow
2759         floating-point variables in the linear clause for Cilk Plus.
2761 2016-04-20  Nathan Sidwell  <nathan@acm.org>
2763         * semantics.c (finish_compound_lteral): Don't wrap VECTOR_TYPEs in a
2764         TARGET_EXPR.
2766 2016-04-19  Jason Merrill  <jason@redhat.com>
2768         PR c++/66543
2769         * expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR.
2770         * pt.c (make_pack_expansion): Call mark_exp_read.
2771         * semantics.c (finish_id_expression): Call mark_type_use in
2772         unevaluated context.
2774         DR 2137
2775         * call.c (implicit_conversion): If we choose a copy constructor
2776         for list-initialization from the same type, the conversion is an
2777         exact match.
2779         * constexpr.c (breaks): Handle EXIT_EXPR.
2780         (cxx_eval_loop_expr): Handle COMPOUND_EXPR body.
2781         (cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling
2782         of COMPOUND_EXPR.
2784         PR c++/68206
2785         PR c++/68530
2786         * constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR
2787         and GOTO_EXPR.
2789         * pt.c (tsubst_expr): Remove shadowing declaration.
2790         (tsubst_pack_expansion): Add assert.
2792         * semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION.
2794         PR c++/70522
2795         * name-lookup.c (qualified_lookup_using_namespace): Look through
2796         hidden names.
2798 2016-04-18  Michael Matz  <matz@suse.de>
2800         * class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
2801         (layout_class_type): Ditto.
2802         (build_base_field): Use SET_DECL_ALIGN.
2803         (fixup_attribute_variants): Use SET_TYPE_ALIGN.
2804         * decl.c (duplicate_decls): Use SET_DECL_ALIGN.
2805         (record_unknown_type): Use SET_TYPE_ALIGN.
2806         (cxx_init_decl_processing): Ditto.
2807         (copy_type_enum): Ditto.
2808         (grokfndecl): Use SET_DECL_ALIGN.
2809         (copy_type_enum): Use SET_TYPE_ALIGN.
2810         * pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN.
2811         (tsubst): Ditto.
2812         * tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN.
2813         * lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN.
2814         * method.c (implicitly_declare_fn): Use SET_DECL_ALIGN.
2815         * rtti.c (emit_tinfo_decl): Ditto.
2817 2016-04-18  Jason Merrill  <jason@redhat.com>
2819         PR c++/70690
2820         PR c++/70528
2821         * class.c (type_maybe_constexpr_default_constructor): New.
2822         (type_has_constexpr_default_constructor): Revert.
2824 2016-04-16  Sandra Loosemore  <sandra@codesourcery.com>
2826         PR target/1078
2828         * tree.c (cxx_attribute_table): Remove "com_interface" entry.
2829         (handle_com_interface_attribute): Delete.
2831 2016-04-15  Jason Merrill  <jason@redhat.com>
2833         PR c++/70685
2834         * constexpr.c (get_fundef_copy): Handle null *slot.
2836         PR c++/70505
2837         * pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR
2838         unknown_type_node, too.
2840 2016-04-15  Jason Merrill  <jason@redhat.com>
2841             Nathan Sidwell  <nathan@acm.org>
2843         PR c++/70594
2844         * constexpr.c (constexpr_call_table): Preserve in GC.
2845         (struct fundef_copy, struct fundef_copies_table_t):     Delete.
2846         (fundef_copies_table): Preserve in GC. Change to pointer to
2847         tree->tree hash.
2848         (maybe_initialize_fundef_copies_table): Adjust.
2849         (get_fundef_copy): Return a TREE_LIST.  Use non-inserting search.
2850         (save_fundef_copy): Adjust for a TREE_LIST.
2851         (cxx_eval_call_expression): Adjust for a fundef_copy TREE_LIST.
2852         (fini_constexpr): New.
2853         * cp-tree.h (fini_constexpr): Declare.
2854         * decl2.c (c_parse_final_cleanups): Call fini_constexpr.
2856 2016-04-15  Jakub Jelinek  <jakub@redhat.com>
2858         PR c/70436
2859         * parser.c (cp_parser_pragma): Add IF_P argument, pass it down
2860         where needed.
2861         (cp_parser_declaration_seq_opt, cp_parser_member_specification_opt,
2862         cp_parser_objc_interstitial_code, cp_parser_omp_declare_simd,
2863         cp_parser_oacc_routine): Adjust cp_parser_pragma callers.
2864         (cp_parser_statement): Likewise.  Adjust cp_parser_cilk_for caller.
2865         (cp_parser_omp_structured_block): Add IF_P argument, pass it down to
2866         cp_parser_statement.
2867         (cp_parser_oacc_data, cp_parser_oacc_host_data, cp_parser_oacc_loop,
2868         cp_parser_oacc_kernels_parallel, cp_parser_omp_critical,
2869         cp_parser_omp_simd, cp_parser_omp_for, cp_parser_omp_master,
2870         cp_parser_omp_ordered, cp_parser_omp_parallel, cp_parser_omp_single,
2871         cp_parser_omp_task, cp_parser_omp_taskgroup, cp_parser_omp_distribute,
2872         cp_parser_omp_teams, cp_parser_omp_target_data, cp_parser_omp_target,
2873         cp_parser_omp_taskloop, cp_parser_omp_construct,
2874         cp_parser_cilk_grainsize, cp_parser_cilk_simd, cp_parser_cilk_for):
2875         Add IF_P argument, pass it down where needed.
2876         (cp_parser_omp_for_loop): Likewise.  Clear IF_P if nbraces.
2877         (cp_parser_omp_sections_scope): Adjust cp_parser_omp_structured_block
2878         calls.
2880 2016-04-14  Jason Merrill  <jason@redhat.com>
2882         PR c++/70494
2883         * decl.c (cxx_maybe_build_cleanup): Handle non-decls.
2884         * typeck2.c (split_nonconstant_init_1): Use it.
2886         PR c++/70528
2887         * class.c (type_has_constexpr_default_constructor): Return true
2888         for an implicitly declared constructor.
2890         PR c++/70622
2891         * parser.c (cp_parser_init_declarator): Add auto_result parm.
2892         (cp_parser_simple_declaration): Pass it.
2893         (strip_declarator_types): New.
2895         PR c++/70543
2896         * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent
2897         initializer also makes the variable value-dependent.
2899         PR c++/70648
2900         * constexpr.c (cxx_eval_store_expression): Also copy
2901         CONSTRUCTOR_NO_IMPLICIT_ZERO.
2903 2016-04-14  Martin Sebor  <msebor@redhat.com>
2905         PR c++/69517
2906         PR c++/70019
2907         PR c++/70588
2908         * cp-tree.h, decl.c, init.c, typeck2.c: Revert.
2910 2016-04-14  Jason Merrill  <jason@redhat.com>
2912         * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty
2913         parameter ABI change.
2915 2016-04-13  Martin Sebor  <msebor@redhat.com>
2917         PR c++/69517
2918         PR c++/70019
2919         PR c++/70588
2920         * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new
2921         functions.
2922         * decl.c (check_initializer, cp_finish_decl): Call them.
2923         (reshape_init_r): Reject incompletely braced intializer-lists
2924         for VLAs.
2925         * init.c (throw_bad_array_length, build_vla_check)
2926         (build_vla_size_check, build_vla_init_check): Define new functions.
2927         * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p()
2928         to detect a VLA.
2929         (store_init_value): Same.
2931 2016-04-13  Jason Merrill  <jason@redhat.com>
2933         Warn about empty parameter ABI with -Wabi=9.
2934         * call.c (empty_class_msg, mark_for_abi_warning)
2935         (warn_empty_class_abi): New.
2936         (build_call_a): Use them.
2937         * decl.c (store_parm_decls): Use mark_for_abi_warning.
2938         * error.c (pp_format_to_string): New.
2940         Pass empty class parameters like C.
2941         * call.c (pass_as_empty_struct, empty_class_arg): New.
2942         (type_passed_as, build_x_va_arg): Use pass_as_empty_struct.
2943         (build_call_a): Use empty_class_arg.
2944         * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New.
2945         * decl.c (cxx_init_decl_processing): Create empty_struct_type.
2947 2016-04-13  Jason Merrill  <jason@redhat.com>
2949         PR c++/70627
2950         * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE.
2952 2016-04-13  Paolo Carlini  <paolo.carlini@oracle.com>
2954         PR c++/70635
2955         * pt.c (resolve_typename_type): Fix typos in infinite recursion
2956         avoidance mechanism.
2958 2016-04-13  Jason Merrill  <jason@redhat.com>
2960         PR c++/70634
2961         * pt.c (instantiation_dependent_uneval_expression_p): Split out
2962         from instantiation_dependent_expression_p.
2963         (value_dependent_expression_p): Use it for unevaluated operands.
2964         (instantiation_dependent_r): Don't check value-dependence.
2965         (instantiation_dependent_expression_p): Check
2966         value-dependence of the expression as a whole.
2967         * cp-tree.h: Declare instantiation_dependent_uneval_expression_p.
2968         * semantics.c (finish_decltype_type): Use it.
2970         * constexpr.c (potential_nondependent_constant_expression): New.
2971         (potential_nondependent_static_init_expression): New.
2972         (maybe_constant_value_1, fold_non_dependent_expr)
2973         (maybe_constant_init): Use them.
2974         * pt.c (instantiate_non_dependent_expr_sfinae)
2975         (instantiate_non_dependent_or_null, convert_nontype_argument): Use
2976         them.
2977         * cp-tree.h: Declare them.
2979 2016-04-13  Jakub Jelinek  <jakub@redhat.com>
2981         PR c++/70594
2982         * decl.c (pop_labels_1): Removed.
2983         (note_label, sort_labels): New functions.
2984         (pop_labels): During named_labels traversal, just push the slot
2985         pointers into a vector, then qsort it by DECL_UID and only then
2986         call pop_label and chain it into BLOCK_VARS.
2988 2016-04-13  Jason Merrill  <jason@redhat.com>
2990         PR c++/70615
2991         * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here.
2992         (cp_gimplify_expr): Not here.
2994 2016-04-12  Patrick Palka  <ppalka@gcc.gnu.org>
2996         PR c++/70610
2997         * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally
2998         recurse into it.
2999         * typeck.c (build_x_conditional_expr): Unconditionally remember
3000         that the result is an lvalue or xvalue.
3002 2016-04-12  Jason Merrill  <jason@redhat.com>
3004         * class.c (is_really_empty_class): A zero-length array is empty.
3005         An unnamed bit-field doesn't make a class non-empty.
3007 2016-04-12  Paolo Carlini  <paolo.carlini@oracle.com>
3009         PR c++/68722
3010         * parser.c (cp_parser_cache_defarg): When file ends in default
3011         argument simply return error_mark_node.
3013 2016-04-12  Nathan Sidwell  <nathan@acm.org>
3015         PR c++/70501
3016         * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE
3017         similarly to PMF.
3019 2016-04-11  Jason Merrill  <jason@redhat.com>
3021         * mangle.c (decl_is_template_id): The template itself counts as a
3022         template-id.
3024 2016-04-08  Patrick Palka  <ppalka@gcc.gnu.org>
3026         PR c++/70590
3027         PR c++/70452
3028         * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr
3029         on the result if it's not a CONSTRUCTOR.
3031 2016-04-07  Patrick Palka  <ppalka@gcc.gnu.org>
3033         PR c++/70452
3034         * constexpr.c (find_constructor): New function.
3035         (unshare_constructor): New function.
3036         (cxx_eval_call_expression): Use unshare_constructor instead of
3037         unshare_expr.
3038         (find_array_ctor_elt): Likewise.
3039         (cxx_eval_vec_init_1): Likewise.
3040         (cxx_eval_store_expression): Likewise.
3041         (cxx_eval_constant_expression): Likewise.
3043 2016-04-06  Patrick Palka  <ppalka@gcc.gnu.org>
3045         PR c/70436
3046         * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid
3047         potentially generating a future -Wparentheses warning in its
3048         callers.
3050 2016-04-06  Jason Merrill  <jason@redhat.com>
3052         * class.c (check_abi_tags): Fix function template handling.
3054 2016-04-05  Nathan Sidwell  <nathan@acm.org>
3056         PR c++/70512
3057         * class.c (fixup_may_alias): New.
3058         (fixup_attribute_variants): Call it.
3060 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
3062         PR c++/70452
3063         * constexpr.c (struct fundef_copy): New struct.
3064         (struct fundef_copies_table_t): New struct.
3065         (fundef_copies_table): New static variable.
3066         (maybe_initialize_fundef_copies_table): New static function.
3067         (get_fundef_copy): New static function.
3068         (save_fundef_copy): New static function.
3069         (cxx_eval_call_expression): Use get_fundef_copy, and
3070         save_fundef_copy.
3071         (constexpr_call_table): Add "deletable" GTY marker.
3073 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
3075         PR c++/70452
3076         * cp-tree.h (class cache_map): Remove.
3077         * constexpr.c (cv_cache): Change type to
3078         GTY((deletable)) hash_map<tree, tree> *.
3079         (maybe_constant_value): Adjust following the change to cv_cache.
3080         (clear_cv_cache): New static function.
3081         (clear_cv_and_fold_caches): Use it.
3082         * cp-gimplify.c (fold_cache): Change type to
3083         GTY((deletable)) hash_map<tree, tree> *.
3084         (clear_fold_cache): Adjust following the change to fold_cache.
3085         (cp_fold): Likewise.
3087 2016-04-02  Martin Sebor  <msebor@redhat.com>
3089         PR c++/67376
3090         PR c++/70170
3091         PR c++/70172
3092         PR c++/70228
3093         * constexpr.c (diag_array_subscript): New function.
3094         (cxx_eval_array_reference): Detect out of bounds array indices.
3096 2016-04-01  Jason Merrill  <jason@redhat.com>
3098         PR c++/70449
3099         PR c++/70344
3100         * pt.c (instantiate_decl): A function isn't fully defined if
3101         DECL_INITIAL is error_mark_node.
3102         * constexpr.c (cxx_eval_call_expression): Likewise.
3104 2016-04-01  Jakub Jelinek  <jakub@redhat.com>
3105             Marek Polacek  <polacek@redhat.com>
3107         PR c++/70488
3108         * init.c (warn_placement_new_too_small): Test whether
3109         DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi.
3111 2016-04-01  Nathan Sidwell  <nathan@acm.org>
3113         PR c++/68475
3114         * decl.c (check_redeclaration_exception_specification): Check
3115         regardless of -fno-exceptions.
3116         * typeck2.c (merge_exception_specifiers): Relax assert by checking
3117         flag_exceptions too.
3119 2016-03-31  Nathan Sidwell  <nathan@acm.org>
3121         * decl.c (start_preparsed_function): Remove unnecessary bracing.
3122         (finish_destructor_body): Don't emit operator delete here.
3124 2016-03-31  Nathan Sidwell  <nathan@acm.org>
3126         PR c++/70393
3127         * constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR
3128         elements in field order.
3130 2016-03-31  Marek Polacek  <polacek@redhat.com>
3132         PR c/70297
3133         * decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN.
3135 2016-03-31  Richard Biener  <rguenther@suse.de>
3137         PR c++/70430
3138         * typeck.c (cp_build_binary_op): Fix operand order of vector
3139         conditional in truth op handling.
3141 2016-03-29  Jason Merrill  <jason@redhat.com>
3143         PR c++/70353
3144         * decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics
3145         in constexpr functions.
3147 2016-03-28  Jason Merrill  <jason@redhat.com>
3149         PR c++/70422
3150         PR c++/64266
3151         PR c++/70353
3152         * decl.c, pt.c, constexpr.c: Revert last patch.
3154 2016-03-25  Jason Merrill  <jason@redhat.com>
3155             Martin LiÅ¡ka  <mliska@suse.cz>
3157         PR c++/64266
3158         PR c++/70353
3159         Core issue 1962
3160         * decl.c (cp_fname_init): Decay the initializer to pointer.
3161         (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
3162         DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
3163         Don't call cp_finish_decl.
3164         * pt.c (tsubst_expr) [DECL_EXPR]: Set DECL_VALUE_EXPR,
3165         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.  Don't call cp_finish_decl.
3166         * constexpr.c (cxx_eval_constant_expression) [VAR_DECL]:
3167         Handle DECL_VALUE_EXPR.
3169 2016-03-24  Jason Merrill  <jason@redhat.com>
3171         PR c++/70386
3172         * constexpr.c (cxx_eval_bare_aggregate): Handle PMFs.
3174         PR c++/70323
3175         * constexpr.c (cxx_eval_call_expression): Don't cache result if
3176         *overflow_p.
3178 2016-03-24  Patrick Palka  <ppalka@gcc.gnu.org>
3180         PR c++/62212
3181         * tree.c (build_cplus_array_type): Determine type-dependentess
3182         with uses_template_parms instead of with dependent_type_p.
3184 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
3186         PR c++/70347
3187         * typeck.c (process_init_constructor_union): If the initializer
3188         is empty, use the union's NSDMI if it has one.
3190 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
3192         PR c++/70332
3193         * pt.c (tsubst_copy) [PARM_DECL]: Handle the use of 'this' in an
3194         NSDMI that's part of an aggregrate initialization.
3196 2016-03-23  Jakub Jelinek  <jakub@redhat.com>
3198         PR c++/70001
3199         * constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers
3200         for 1..max even for multi-dimensional arrays.  Call unshare_expr
3201         on it.
3203         PR c++/70323
3204         * constexpr.c (cxx_eval_constant_expression): Diagnose overflow
3205         on TREE_OVERFLOW constants.
3207         PR c++/70376
3208         * cp-gimplify.c (genericize_omp_for_stmt): Don't walk OMP_FOR_CLAUSES
3209         for OMP_TASKLOOP here.
3210         (cp_genericize_r): Handle OMP_TASKLOOP like OMP_TASK, except do call
3211         genericize_omp_for_stmt instead of cp_walk_tree on OMP_BODY.
3213 2016-03-23  Alexandre Oliva  <aoliva@redhat.com>
3214             Jason Merrill  <jason@redhat.com>
3215             Jakub Jelinek  <jakub@redhat.com>
3217         PR c++/69315
3218         * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): Remove.
3219         * decl.c (defer_mark_used_calls, deferred_mark_used_calls): Remove.
3220         (finish_function): Don't set or test them.
3221         * decl2.c (mark_used): Don't handle defer_mark_used_calls.
3223 2016-03-23  Jason Merrill  <jason@redhat.com>
3225         PR c++/70344
3226         * constexpr.c (cxx_eval_call_expression): Catch invalid recursion.
3228 2016-03-23  Marek Polacek  <polacek@redhat.com>
3230         PR c++/69884
3231         * pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes.
3233 2016-03-22  Ilya Enkovich  <enkovich.gnu@gmail.com>
3235         * call.c (build_conditional_expr_1): Always use original
3236         condition type for vector type checks and build.
3238 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
3240         PR c++/70096
3241         * pt.c (tsubst_decl): Clear the DECL_MODE of the new decl.
3243 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
3245         PR c++/70204
3246         * constexpr.c (non_const_var_error): Check
3247         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
3249 2016-03-21  Richard Henderson  <rth@redhat.com>
3251         PR c++/70273
3252         * decl.c (notice_forced_label_r): New.
3253         (cp_finish_decl): Use it.
3255 2016-03-21  Jason Merrill  <jason@redhat.com>
3257         PR c++/70285
3258         * cp-gimplify.c (cp_fold) [COND_EXPR]: Handle bit-fields.
3260 2016-03-18  Jason Merrill  <jason@redhat.com>
3262         PR c++/70139
3263         * constexpr.c (cxx_eval_call_expression): Fix trivial copy.
3265         PR c++/70147
3266         * class.c (vptr_via_virtual_p): New.
3267         (most_primary_binfo): Factor out of build_rtti_vtbl_entries.
3268         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Don't clear
3269         a vptr from any virtual base in a not-in-charge 'structor.
3271         * decl.c (build_clobber_this): Factor out of
3272         start_preparsed_function and begin_destructor_body.  Handle
3273         virtual bases better.
3275         * class.c (build_if_in_charge): Split out from build_base_path.
3276         * init.c (expand_virtual_init, expand_default_init): Use it.
3277         * call.c (build_special_member_call): Use it.
3279 2016-03-18  Jakub Jelinek  <jakub@redhat.com>
3281         PR c++/70267
3282         * init.c (build_new_1): Complain and return error_mark_node
3283         if alloc_fn is not _Jv_AllocObject function returning pointer.
3285 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
3287         PR c++/70205
3288         * search.c (adjust_result_of_qualified_name_lookup): Don't
3289         update the BASELINK_BINFO of DECL if the second call
3290         to lookup_base fails.
3292 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
3294         PR c++/70218
3295         * parser.c (cp_parser_lambda_expression): Move call to
3296         pop_deferring_access_checks ahead of the call to
3297         cp_parser_end_tentative_firewall.
3299 2016-03-17  Jakub Jelinek  <jakub@redhat.com>
3301         PR c++/70144
3302         * cp-tree.h (magic_varargs_p): Return int instead of bool.
3303         * call.c (magic_varargs_p): Return int instead of bool, return 2 for
3304         Cilk+ reductions, otherwise 1 for magic varargs and 0 for normal
3305         varargs.
3306         (build_over_call): If magic_varargs_p == 2, call reject_gcc_builtin,
3307         if magic_varargs_p == 1, call decay_conversion
3308         instead of mark_type_use.  Don't store error_mark_node arguments to
3309         argarray, instead return error_mark_node.
3311         PR c++/70272
3312         * decl.c (begin_destructor_body): Don't insert clobber if
3313         is_empty_class (current_class_type).
3315 2016-03-17  Marek Polacek  <polacek@redhat.com>
3317         PR c++/70194
3318         * typeck.c (warn_for_null_address): New function.
3319         (cp_build_binary_op): Call it.
3321 2016-03-16  Jason Merrill  <jason@redhat.com>
3323         PR c++/70259
3324         * decl.c (start_preparsed_function): Don't clobber an empty base.
3326 2016-03-16  Jakub Jelinek  <jakub@redhat.com>
3328         PR c++/70147
3329         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Conditionalize
3330         BINFO_VIRTUAL_P vtable clearing on current_in_charge_parm.
3332         PR c++/70147
3333         * cp-ubsan.c (cp_ubsan_maybe_initialize_vtbl_ptrs): Temporarily
3334         set in_base_initializer.
3336 2016-03-15  Marek Polacek  <polacek@redhat.com>
3338         PR c++/70209
3339         * tree.c (strip_typedefs): Call strip_typedefs again on the
3340         DECL_ORIGINAL_TYPE result.
3342 2016-03-15  Jason Merrill  <jason@redhat.com>
3344         PR c++/70095
3345         * pt.c (instantiate_decl): Fix call to variable_template_p.
3347         PR c++/70141
3348         * pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE.
3350 2016-03-14  Casey Carter  <casey@carter.net>
3351             Jason Merrill  <jason@redhat.com>
3353         P0184R0: Generalizing the Range-Based For Loop
3354         * parser.c (cp_convert_range_for): Set the type of __end separately.
3355         (cp_parser_perform_range_for_lookup): Allow different begin/end
3356         types if they are comparable.
3358 2016-03-12  Patrick Palka  <ppalka@gcc.gnu.org>
3360         PR c++/70106
3361         * semantics.c (force_paren_expr): Just build a PAREN_EXPR when
3362         processing_template_decl and EXPR is a SCOPE_REF.
3364 2016-03-10  Patrick Palka  <ppalka@gcc.gnu.org>
3365             Jakub Jelinek  <jakub@redhat.com>
3367         PR c++/70001
3368         * constexpr.c (cxx_eval_vec_init_1): For pre_init case, reuse
3369         return value from cxx_eval_constant_expression from earlier
3370         elements if it is valid constant initializer requiring no
3371         relocations.
3373 2016-03-10  Marek Polacek  <polacek@redhat.com>
3375         PR c++/70153
3376         * cp-gimplify.c (cp_fold): Handle UNARY_PLUS_EXPR.
3378 2016-03-09  Cesar Philippidis  <cesar@codesourcery.com>
3380         * parser.c (cp_parser_oacc_loop): Update cclauses and clauses
3381         when calling c_finish_omp_clauses.
3383 2016-03-08  Jason Merrill  <jason@redhat.com>
3385         * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful
3386         diagnostic for use of "concept".
3387         (cp_parser_requires_clause_opt): And "requires".
3388         (cp_parser_type_parameter, cp_parser_late_return_type_opt)
3389         (cp_parser_explicit_template_declaration): Adjust.
3390         * Make-lang.in (check-c++-all): Add "concepts" to std list.
3392         P0036R0: Unary Folds and Empty Parameter Packs
3393         * pt.c (expand_empty_fold): Remove special cases for *,+,&,|.
3395 2016-03-08  Jakub Jelinek  <jakub@redhat.com>
3397         PR c++/70135
3398         * constexpr.c (cxx_eval_loop_expr): Forget saved values of SAVE_EXPRs
3399         even after the last iteration of the loop.
3401         * decl.c (duplicate_decls): Fix spelling - becuase -> because.
3403 2016-03-07  Patrick Palka  <ppalka@gcc.gnu.org>
3405         PR c++/66786
3406         * pt.c (get_template_info): Handle PARM_DECL.
3407         (template_class_depth): Check DECL_P instead of
3408         VAR_OR_FUNCTION_DECL_P.
3410 2016-03-05  Jason Merrill  <jason@redhat.com>
3412         PR c++/67364
3413         * constexpr.c (cxx_eval_store_expression): Replace
3414         CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too.
3416 2016-03-05  Patrick Palka  <ppalka@gcc.gnu.org>
3418         PR c++/66786
3419         * pt.c (template_class_depth): Given a lambda type, iterate
3420         into its LAMBDA_TYPE_EXTRA_SCOPE field instead of its
3421         TYPE_CONTEXT.  Given a VAR_DECL, iterate into its
3422         CP_DECL_CONTEXT.
3424 2016-03-04  Jason Merrill  <jason@redhat.com>
3426         PR c++/69203
3427         * cp-tree.h (COND_EXPR_IS_VEC_DELETE): New.
3428         * init.c (build_vec_delete_1): Set it.
3429         * constexpr.c (potential_constant_expression_1) [COND_EXPR]: Check it.
3431 2016-03-04  Jakub Jelinek  <jakub@redhat.com>
3433         * decl.c (start_preparsed_function): Don't emit start clobber at the
3434         start of constructor clones.
3436         PR c++/70035
3437         * cp-tree.h (cp_ubsan_maybe_initialize_vtbl_ptrs): New prototype.
3438         * decl.c (start_preparsed_function): Call
3439         cp_ubsan_maybe_initialize_vtbl_ptrs if needed.
3440         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs,
3441         cp_ubsan_maybe_initialize_vtbl_ptrs): New functions.
3443 2016-03-04  Jason Merrill  <jason@redhat.com>
3445         PR c++/67364
3446         * constexpr.c (cxx_eval_component_reference): Further tweak.
3448         * constexpr.c (struct constexpr_ctx): Add save_exprs field.
3449         (cxx_eval_loop_expr): Discard SAVE_EXPR values before looping.
3450         (cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set.
3451         (cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize.
3453         PR c++/70067
3454         * tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the
3455         same type.
3457 2016-03-03  Jason Merrill  <jason@redhat.com>
3459         * method.c (synthesized_method_walk): operator= can also be constexpr.
3461         * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get
3462         LAMBDA_EXPR_RETURN_TYPE from the instantiated closure.
3464         PR c++/67164
3465         * pt.c (copy_template_args): New.
3466         (tsubst_pack_expansion): Use it.
3468         * call.c (build_aggr_conv): Use get_nsdmi.
3470         PR c++/51406
3471         * typeck.c (build_static_cast_1): Avoid folding back to lvalue.
3473         PR c++/67364
3474         * constexpr.c (cxx_eval_component_reference): Just return an empty
3475         CONSTRUCTOR for an empty class.
3477 2016-03-01  Jason Merrill  <jason@redhat.com>
3479         PR c++/70036
3480         * parser.c (cp_parser_requires_clause): Call
3481         check_for_bare_parameter_packs.
3483         PR c++/51489
3484         * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
3485         the operands.
3487         PR c++/69995
3488         * constexpr.c (cxx_eval_call_expression): Unshare arg.
3489         (cxx_eval_constant_expression) [DECL_EXPR]: Unshare init.
3490         [TARGET_EXPR]: Unshare init.
3492 2016-03-01  Patrick Palka  <ppalka@gcc.gnu.org>
3494         PR c++/68948
3495         PR c++/69961
3496         * pt.c (tsubst_baselink): Reinstate the check for an invalid
3497         constructor call.
3499 2016-02-28  Jason Merrill  <jason@redhat.com>
3501         PR c++/69995
3502         * constexpr.c (cxx_eval_store_expression): Unshare init.
3504 2016-02-26  Jason Merrill  <jason@redhat.com>
3506         PR c++/69958
3507         * pt.c (make_argument_pack): New.
3508         (tsubst_copy) [SIZEOF_EXPR]: Handle partial expansion.
3509         (tsubst_copy_and_build): Likewise.
3511 2016-02-25  Jason Merrill  <jason@redhat.com>
3513         PR c++/69889
3514         * cp-tree.h (AGGR_INIT_FROM_THUNK_P): New.
3515         * tree.c (build_aggr_init_expr): Set it.
3516         * semantics.c (simplify_aggr_init_expr): Check it.
3517         * cp-gimplify.c (cp_genericize_r): Don't walk into
3518         a call/aggr_init from a thunk.
3520         PR c++/69842
3521         * method.c (forward_parm): Handle parameter packs.
3522         * lambda.c (maybe_add_lambda_conv_op): Use it for them.
3524         PR c++/67364
3525         * constexpr.c (cxx_eval_component_reference): Don't complain about
3526         unevaluated empty classes.
3528         PR c++/68049
3529         * tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE.
3531 2016-02-25  Patrick Palka  <ppalka@gcc.gnu.org>
3533         PR c++/69736
3534         * cp-tree.h (REF_PARENTHESIZED_P): Adjust documentation.
3535         (maybe_undo_parenthesized_ref): Declare.
3536         * semantics.c (maybe_undo_parenthesized_ref): Split out from
3537         check_return_expr.
3538         (finish_call_expr): Use it.
3539         * typeck.c (check_return_expr): Use it.
3540         * pt.c (tsubst_copy_and_build) [INDIRECT_REF]: Retain the
3541         REF_PARENTHESIZED_P flag.
3543 2016-02-24  Jakub Jelinek  <jakub@redhat.com>
3545         PR c++/69922
3546         * class.c (build_base_path): Set TREE_NO_WARNING on the null_test.
3547         Avoid folding it.
3548         * init.c (build_vec_delete_1, build_delete): Don't fold the non-NULL
3549         tests.
3550         * cp-gimplify.c (cp_fold): For TREE_NO_WARNING comparisons with NULL,
3551         unless they are folded into INTEGER_CST, error_mark_node or some
3552         comparison with NULL, avoid folding them and use either the original
3553         comparison or non-folded comparison of folded arguments.
3554         * cp-ubsan.c (cp_ubsan_instrument_vptr): Set TREE_NO_WARNING on the
3555         comparison, don't fold the comparison right away.
3557 2016-02-24  Jason Merrill  <jason@redhat.com>
3559         PR c++/69323
3560         * friend.c (make_friend_class): Likewise.
3561         * decl.c (lookup_and_check_tag): Diagnose invalid dependent friend.
3563 2016-02-24  Jason Merrill  <jason@redhat.com>
3565         PR c++/69323
3566         * pt.c (instantiate_class_template_1): Set
3567         processing_template_decl before substituting friend_type.
3569 016-02-24  Martin Sebor  <msebor@redhat.com>
3571         PR c++/69912
3572         * tree.c (build_ctor_subob_ref): Compare types' main variants
3573         instead of the types as they are.
3575 2016-02-24  Jason Merrill  <jason@redhat.com>
3577         * decl.c (start_preparsed_function): Condition ctor clobber on
3578         flag_lifetime_dse > 1.
3580         * cp-gimplify.c (cp_fold): Don't fold constexpr calls if -fno-inline.
3582 2016-02-19  Jason Merrill  <jason@redhat.com>
3584         PR c++/69743
3585         * call.c (remaining_arguments): No longer static.
3586         * cp-tree.h: Declare it.
3587         * pt.c (more_specialized_fn): Use it.
3589 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
3590             Bernd Edlinger  <bernd.edlinger@hotmail.de>
3592         * Make-lang.in: Invoke gperf with -L C++.
3593         * cfns.gperf: Remove prototypes for hash and libc_name_p
3594         inlines.
3595         * cfns.h: Regenerated.
3596         * except.c (nothrow_libfn_p): Adjust.
3598 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
3600         PR c++/69850
3601         * rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use
3602         NE_EXPR instead of EQ_EXPR and swap last two arguments on COND_EXPR.
3604 2016-02-19  Patrick Palka  <ppalka@gcc.gnu.org>
3606         PR c++/68948
3607         * pt.c (tsubst_baselink): Don't diagnose an invalid constructor
3608         call here.
3609         * semantics.c (finish_call_expr): Don't assume a constructor
3610         call is dependent if only the "this" pointer is dependent.  When
3611         building a constructor call, always use a dummy object.
3613 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
3615         PR c++/69850
3616         * init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR
3617         condition.
3618         * cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary
3619         operators if folding preserved the binop, just with different
3620         arguments.
3622         PR c++/67767
3623         * parser.c (cp_parser_std_attribute_spec_seq): Don't assume
3624         attr_spec is always single element chain, chain all the attributes
3625         properly together in the right order.
3627 2016-02-18  Jason Merrill  <jason@redhat.com>
3629         * mangle.c (maybe_check_abi_tags): Add for_decl parm.  Call
3630         mangle_decl.
3631         (mangle_decl): Call maybe_check_abi_tags for function scope.
3632         (mangle_guard_variable): Call maybe_check_abi_tags here.
3633         (write_guarded_var_name): Not here.
3635 2016-02-17  Jason Merrill  <jason@redhat.com>
3637         PR c++/65985
3638         * constexpr.c (build_constexpr_constructor_member_initializers):
3639         Handle an additional STATEMENT_LIST.
3641         PR c++/68585
3642         * constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection.
3644         PR c++/68679
3645         * decl2.c (reset_type_linkage_2): Look through member templates.
3647 2016-02-17  Jakub Jelinek  <jakub@redhat.com>
3649         PR c++/69850
3650         * init.c (build_delete): Set TREE_NO_WARNING on ifexp.
3652 2016-02-17  Jason Merrill  <jason@redhat.com>
3654         PR c++/69842
3655         * method.c (forward_parm): Split out from...
3656         (add_one_base_init): ...here.
3657         * lambda.c (maybe_add_lambda_conv_op): Use it.
3659 2016-02-16  Jason Merrill  <jason@redhat.com>
3661         PR c++/10200
3662         PR c++/69753
3663         * call.c, cp-tree.h, name-lookup.c, pt.c, search.c, semantics.c,
3664         tree.c, typeck2.c: Revert earlier changes.
3665         * parser.c (cp_parser_lookup_name): Ignore namespace-scope
3666         non-type templates after -> or .
3668 2016-02-16  Jakub Jelinek  <jakub@redhat.com>
3670         PR c/69835
3671         * typeck.c (cp_build_binary_op): Revert 2015-09-09 change.
3673 2016-02-16  Jason Merrill  <jason@redhat.com>
3675         PR c++/69657
3676         * name-lookup.c (lookup_qualified_name): Add find_hidden parm.
3677         (set_decl_namespace): Pass it.  Complain about finding a hidden friend.
3678         * name-lookup.h: Adjust.
3680 2016-02-16  James Norris  <jnorris@codesourcery.com>
3682         * parser.c (cp_parser_oacc_data_clause_deviceptr): Remove checking.
3683         * semantics.c (finish_omp_clauses): Add deviceptr checking.
3685 2016-02-15  Jakub Jelinek  <jakub@redhat.com>
3687         PR c++/69658
3688         * init.c (expand_default_init): Only call reshape_init
3689         in the direct-initialization from an initializer list case.
3691 2016-02-15  Jason Merrill  <jason@redhat.com>
3693         PR c++/69753
3694         * semantics.c (finish_call_expr): Implicit 'this' does not make
3695         the call dependent.
3696         * search.c (any_dependent_bases_p): Split out...
3697         * name-lookup.c (do_class_using_decl): ...from here.
3698         * call.c (build_new_method_call_1): Don't complain about missing object
3699         if there are dependent bases.  Tweak error.
3700         * tree.c (non_static_member_function_p): Remove.
3701         * pt.c (type_dependent_expression_p): A member template of a
3702         dependent type is dependent.
3703         * cp-tree.h: Adjust.
3705         PR c++/68890
3706         * constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check.
3708 2016-02-12  Patrick Palka  <ppalka@gcc.gnu.org>
3710         PR c++/69098
3711         * pt.c (lookup_and_finish_template_variable): New function,
3712         extracted from ...
3713         (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: ... here.  Use it.
3714         (tsubst_qualified_id): Consider that EXPR might be a variable
3715         template.
3716         * typeck.c (check_template_keyword): Don't emit an error
3717         if DECL is a variable template.
3719 2016-02-12  Jakub Jelinek  <jakub@redhat.com>
3721         * error.c: Spelling fixes - behaviour -> behavior and
3722         neighbour -> neighbor.
3723         * decl.c: Likewise.
3724         * typeck.c (cp_build_binary_op): Fix up behavior spelling in
3725         diagnostics.
3726         * init.c (build_delete): Likewise.
3728 2016-02-11  Jakub Jelinek  <jakub@redhat.com>
3730         PR c/69768
3731         * typeck.c (cp_build_binary_op): cp_fully_fold integer_zerop
3732         arguments for -Waddress warning.  Fix up formatting.
3734 2016-02-11  Paolo Carlini  <paolo.carlini@oracle.com>
3736         PR c++/68726
3737         * pt.c (lookup_template_class_1): Check tsubst return value for
3738         error_mark_node.
3740 2016-02-10  Jason Merrill  <jason@redhat.com>
3742         PR c++/68926
3743         * pt.c (resolve_nondeduced_context): Add complain parm.
3744         (do_auto_deduction): Pass it.
3745         * cvt.c (convert_to_void): Likewise.
3746         * decl.c (cp_finish_decl): Likewise.
3747         * init.c (build_new): Likewise.
3748         * rtti.c (get_tinfo_decl_dynamic): Likewise.
3749         * semantics.c (finish_decltype_type): Likewise.
3750         * typeck.c (decay_conversion): Likewise.
3751         * cp-tree.h: Adjust declaration.
3752         * call.c (standard_conversion): Add complain parm, pass it along.
3753         (implicit_conversion): Pass it.
3755         PR c++/69657
3756         * name-lookup.c (ambiguous_decl): Call remove_hidden_names.
3757         (lookup_name_real_1): Likewise.
3758         (remove_hidden_names): Handle non-functions too.
3760         PR c++/10200
3761         * parser.c (cp_parser_lookup_name): When looking for a template
3762         after . or ->, only consider class templates.
3763         (cp_parser_postfix_dot_deref_expression): Handle the current
3764         instantiation.  Remember a dependent object expression.
3765         * typeck2.c (build_x_arrow): Handle the current instantiation.
3767         * ptree.c (debug_tree): Implement for cp_expr.
3769 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
3771         PR c++/69139
3772         * parser.c (cp_parser_simple_type_specifier): Make the check
3773         for disambiguating between an 'auto' placeholder and an implicit
3774         template parameter more robust.
3776 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
3778         PR c++/69283
3779         PR c++/67835
3780         * decl2.c (mark_used): When given a TEMPLATE_DECL, return after
3781         setting its TREE_USED flag.
3783 2016-02-08  Jason Merrill  <jason@redhat.com>
3785         PR c++/69657
3786         * name-lookup.c (do_nonmember_using_decl): Leave anticipated
3787         built-ins alone.
3789 2016-02-08  Jakub Jelinek  <jakub@redhat.com>
3791         PR c++/59627
3792         * parser.c (cp_parser_omp_declare_reduction): Set assembler name
3793         of the DECL_OMP_DECLARE_REDUCTION_P decls.
3795 2016-02-08  Marek Polacek  <polacek@redhat.com>
3797         PR c++/69688
3798         * constexpr.c (clear_cv_and_fold_caches): Renamed from clear_cv_cache.
3799         Call clear_fold_cache.
3800         * cp-tree.h: Adjust declaration.
3801         * decl.c (finish_enum_value_list): Call clear_cv_and_fold_caches
3802         rather than clear_cv_cache and clear_fold_cache.
3803         * typeck2.c (store_init_value): Call clear_cv_and_fold_caches.
3805 2016-02-08  Jason Merrill  <jason@redhat.com>
3807         * cp-tree.h (CONV_FOLD, CONV_BACKEND_CONVERT): New.
3808         * cvt.c (convert): Pass CONV_BACKEND_CONVERT.
3809         (ocp_convert): Use *_maybe_fold.
3810         (cp_convert_to_pointer): Add dofold parameter.
3811         * cp-gimplify.c (cp_fold) [CONVERT_EXPR]: Call convert.
3813 2016-02-05  Martin Sebor  <msebor@redhat.com>
3815         PR c++/69662
3816         * init.c (find_field_init): New function.
3817         (warn_placement_new_too_small): Call it.  Handle one-element arrays
3818         at ends of structures special.
3820 2016-02-05  Jason Merrill  <jason@redhat.com>
3822         PR c++/68948
3823         * semantics.c (finish_expr_stmt): If expr is error_mark_node,
3824         make sure we've seen_error().
3826 2016-02-05  Patrick Palka  <ppalka@gcc.gnu.org>
3828         PR c++/68948
3829         * pt.c (tsubst_baselink): Diagnose an invalid constructor call
3830         if lookup_fnfields returns NULL_TREE and the name being looked
3831         up has the form A::A.
3833 2016-02-04  Patrick Palka  <ppalka@gcc.gnu.org>
3835         * constexpr.c (cxx_eval_binary_expression): Fold equality
3836         comparisons involving PTRMEM_CSTs.
3838 2016-02-04  Jakub Jelinek  <jakub@redhat.com>
3840         * class.c (find_flexarrays): Don't declare dom variable.
3841         (diagnose_flexarray): Likewise.
3843 2016-02-02  Martain Sebor  <msebor@redhat.com>
3845         PR c++/69251
3846         PR c++/69253
3847         PR c++/69290
3848         PR c++/69277
3849         PR c++/69349
3850         * class.c (walk_subobject_offsets): Avoid testing the upper bound
3851         of a flexible array member for equality to null.
3852         (find_flexarrays): Remove spurious whitespace introduced in r231665.
3853         (diagnose_flexarrays): Avoid checking the upper bound of arrays.
3854         (check_flexarrays): Same.
3855         * decl.c (compute_array_index_type): Avoid special case for flexible
3856         array members.
3857         (grokdeclarator): Avoid calling compute_array_index_type for flexible
3858         array members.
3859         * error.c (dump_type_suffix): Revert changes introduced in r231665
3860         and rendered unnecessary by the changes above.
3861         * pt.c (tsubst):  Same.
3862         * tree.c (build_ctor_subob_ref): Handle flexible array members.
3863         * typeck2.c (digest_init_r): Revert changes introduced in r231665.
3864         (process_init_constructor_array): Same.
3865         (process_init_constructor_record): Same.
3867 2016-02-03  Patrick Palka  <ppalka@gcc.gnu.org>
3869         PR c++/69056
3870         * pt.c (try_one_overload): Handle comparing argument packs so
3871         that there is no conflict if we deduced more arguments of an
3872         argument pack than were explicitly specified.
3874 2016-01-31  Jakub Jelinek  <jakub@redhat.com>
3875             Jason Merrill  <jason@redhat.com>
3877         PR c++/68763
3878         * tree.c (strip_typedefs) [FUNCTION_TYPE]: Avoid building a new
3879         function type if nothing is changing.
3881 2016-01-31  Jason Merrill  <jason@redhat.com>
3883         PR c++/69009
3884         * pt.c (partial_specialization_p, impartial_args): New.
3885         (instantiate_decl): Call impartial_args.
3887         * mangle.c (maybe_check_abi_tags): New.
3888         (write_guarded_var_name): Call it.
3889         (mangle_ref_init_variable): Call check_abi_tags.
3891         * pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES
3892         between template and instantiation.
3894 2016-01-29  Jakub Jelinek  <jakub@redhat.com>
3896         PR debug/66869
3897         * decl.c (wrapup_globals_for_namespace): Warn about unused static
3898         function declarations.
3900 2016-01-29  Marek Polacek  <polacek@redhat.com>
3902         PR c++/69509
3903         PR c++/69516
3904         * constexpr.c (cxx_eval_array_reference): Give the "array subscript
3905         out of bound" error earlier.
3906         * init.c (build_vec_init): Change NE_EXPR into GT_EXPR.  Update the
3907         commentary.
3909 2016-01-29  Patrick Palka  <ppalka@gcc.gnu.org>
3911         * name-lookup.c (begin_scope): After reusing a cp_binding_level
3912         structure, update free_binding_level before the structure's
3913         level_chain field gets cleared, not after.
3915 2016-01-28  Jason Merrill  <jason@redhat.com>
3917         PR c++/67407
3918         * search.c (dfs_walk_once, dfs_walk_once_r)
3919         (dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use
3920         hash_set instead of BINFO_MARKED.
3921         (dfs_unmark_r): Remove.
3923 2016-01-28  Patrick Palka  <ppalka@gcc.gnu.org>
3925         PR c++/24208
3926         * parser.c (LEXER_DEBUGGING_ENABLED_P): New macro.
3927         (cp_lexer_debugging_p): Use it.
3928         (cp_lexer_start_debugging): Likewise.
3929         (cp_lexer_stop_debugging): Likewise.
3931 2016-01-27  Marek Polacek  <polacek@redhat.com>
3933         PR c/68062
3934         * typeck.c (cp_build_binary_op): Promote operand to unsigned, if
3935         needed.  Add -Wsign-compare warning.
3937 2016-01-27  Ryan Burn  <contact@rnburn.com>
3939         PR cilkplus/69267
3940         * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed
3941         superfluous post_p argument in call to
3942         cilk_gimplify_call_params_in_spawned_fn.
3944 2016-01-27  Marek Polacek  <polacek@redhat.com>
3946         PR c++/69379
3947         * constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs
3948         wrapped in NOP_EXPRs.
3950 2016-01-27  Martin Sebor  <msebor@redhat.com>
3952         PR c++/69317
3953         * mangle.c (mangle_decl): Reference the correct (saved) version
3954         of the ABI in -Wabi diagnostics.
3956 2016-01-27  Marek Polacek  <polacek@redhat.com>
3958         PR c++/69496
3959         * constexpr.c (cxx_eval_array_reference): Evaluate the number of
3960         elements of the array.
3962 2016-01-26  Jason Merrill  <jason@redhat.com>
3964         PR c++/68949
3965         * constexpr.c (register_constexpr_fundef): Keep the un-massaged body.
3966         (cxx_eval_call_expression): Don't look through clones.
3967         * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias.
3968         * semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of
3969         maybe-in-charge *tor.
3971 2016-01-26  Jason Merrill  <jason@redhat.com>
3973         PR c++/68782
3974         * constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT
3975         and TREE_SIDE_EFFECTS.
3976         (cxx_eval_constant_expression) [CONSTRUCTOR]: Call
3977         verify_constructor_flags.
3979 2016-01-26  Jakub Jelinek  <jakub@redhat.com>
3981         PR c++/68357
3982         * cp-gimplify.c (cp_fold): If some operand folds to error_mark_node,
3983         return error_mark_node instead of building trees with error_mark_node
3984         operands.
3986 2016-01-26  David Malcolm  <dmalcolm@redhat.com>
3988         PR other/69006
3989         * error.c (print_instantiation_partial_context_line): Add missing
3990         newlines from output for the t == NULL case.
3991         (print_instantiation_partial_context): Remove call to pp_newline.
3993 2016-01-24  Patrick Palka  <ppalka@gcc.gnu.org>
3995         Revert:
3996         2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
3998         PR c++/11858
3999         PR c++/24663
4000         PR c++/24664
4001         * decl.c (grokdeclarator): Don't decay array parameter type to
4002         a pointer type if it's dependent.
4003         (grokparms): Invoke strip_top_quals instead of directly invoking
4004         cp_build_qualified_type.
4005         * pt.c (decay_dependent_array_parm_type): New static function.
4006         (type_unification_real): Call decay_dependent_array_parm_type
4007         to decay a dependent array parameter type to its corresponding
4008         pointer type before unification.
4009         (more_specialized_fn): Likewise.
4010         (get_bindings): Likewise.
4011         * tree.c (cp_build_qualified_type): Trivial typofix in
4012         documentation.
4014 2016-01-23  Martin Sebor  <msebor@redhat.com>
4016         PR c++/58109
4017         PR c++/69022
4018         * decl2.c (is_late_template_attribute): Handle dependent argument
4019         to attribute align and attribute vector_size.
4021 2016-01-21  Jason Merrill  <jason@redhat.com>
4023         PR c++/69392
4024         * lambda.c (lambda_capture_field_type): Handle 'this' specially
4025         for init-capture, too.
4027         PR c++/65687
4028         * decl.c (type_is_deprecated): Don't look into a typedef.
4030         PR c++/40751
4031         PR c++/64987
4032         * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN.
4034         PR c++/43407
4035         * decl.c (start_enum): Add attributes parameter.
4036         * parser.c (cp_parser_enum_specifier): Pass it.
4037         * pt.c (lookup_template_class_1): Pass it.
4038         * cp-tree.h: Adjust.
4040 2016-01-19  Jason Merrill  <jason@redhat.com>
4042         PR c++/59759
4043         * pt.c (convert_template_argument): Handle VAR_DECL properly.
4045 2016-01-19  Marek Polacek  <polacek@redhat.com>
4047         PR c++/68586
4048         * constexpr.c (clear_cv_cache): New.
4049         * cp-gimplify.c (clear_fold_cache): New.
4050         * cp-tree.h (clear_cv_cache, clear_fold_cache): Declare.
4051         * decl.c (finish_enum_value_list): Call them.
4053         PR c++/68965
4054         * pt.c (tsubst_copy): Mark elements in expanded vector as used.
4056 2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
4058         PR c++/11858
4059         PR c++/24663
4060         PR c++/24664
4061         * decl.c (grokdeclarator): Don't decay array parameter type to
4062         a pointer type if it's dependent.
4063         (grokparms): Invoke strip_top_quals instead of directly invoking
4064         cp_build_qualified_type.
4065         * pt.c (decay_dependent_array_parm_type): New static function.
4066         (type_unification_real): Call decay_dependent_array_parm_type
4067         to decay a dependent array parameter type to its corresponding
4068         pointer type before unification.
4069         (more_specialized_fn): Likewise.
4070         (get_bindings): Likewise.
4071         * tree.c (cp_build_qualified_type): Trivial typofix in
4072         documentation.
4074 2016-01-18  Jason Merrill  <jason@redhat.com>
4076         * cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input.
4078         * cp-gimplify.c (cp_fold): Remove unnecessary special cases.
4080         PR c++/68767
4081         * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify.  Do fold COND_EXPR.
4082         (contains_label_1, contains_label_p): Remove.
4084 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4086         PR c++/69091
4087         * pt.c (type_dependent_expression_p): For a function template
4088         specialization, a type is dependent iff any of its template
4089         arguments are.
4091 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4093         * cp-array-notation.c (cp_expand_cond_array_notations): Return
4094         error_mark_node only if find_rank failed, not if it was
4095         successful.
4097 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4099         PR c++/68936
4100         * tree.c (build_min_non_dep_call_vec): Don't retain the
4101         KOENIG_LOOKUP_P flag of the non-dependent expression that's
4102         been built.
4103         (build_min_non_dep_op_overload): Instead, do it here.
4105 2016-01-15  Jakub Jelinek  <jakub@redhat.com>
4107         PR bootstrap/68271
4108         * parser.h (cp_token): Remove pragma_kind field.  Add comment
4109         with number of unused bits.
4110         * parser.c (eof_token): Remove pragma_kind field initializer.
4111         (cp_lexer_get_preprocessor_token): Don't set pragma_kind
4112         field, don't clear CPP_PRAGMA u.value.
4113         (cp_parser_pragma_kind): New function.
4114         (cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel,
4115         cp_parser_omp_construct, cp_parser_initial_pragma,
4116         cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing
4117         pragma_kind field.
4119 2016-01-15  Jason Merrill  <jason@redhat.com>
4121         PR c++/68847
4122         * call.c (build_cxx_call): Use fold_non_dependent_expr.
4124         * typeck2.c (cxx_incomplete_type_diagnostic): Use the location of
4125         value.
4127         PR c++/69257
4128         * typeck.c (decay_conversion): Don't call mark_rvalue_use for
4129         array/function-to-pointer conversion.  Call
4130         complete_type_or_maybe_complain for lvalue-to-rvalue conversion.
4131         * call.c (convert_like_real): Print call context if
4132         decay_conversion errors.
4134 2016-01-14  Tom de Vries  <tom@codesourcery.com>
4136         PR tree-optimization/68773
4137         * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't
4138         set force_output.
4140 2016-01-14  Jason Merrill  <jason@redhat.com>
4142         PR c++/69261
4143         * constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR.
4145 2016-01-12  Marek Polacek  <polacek@redhat.com>
4147         PR c++/68979
4148         * constexpr.c (cxx_eval_check_shift_p): Use permerror rather than
4149         error_at and adjust the return value.
4151 2016-01-12  Jakub Jelinek  <jakub@redhat.com>
4153         PR objc++/68511
4154         PR c++/69213
4155         * cp-gimplify.c (cp_gimplify_expr) <case INIT_EXPR>: Don't return
4156         GS_ERROR whenever seen_error (), only if *expr_p contains
4157         cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed.
4159         PR c++/66808
4160         PR c++/69000
4161         * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO.
4163 2016-01-11  Jason Merrill  <jason@redhat.com>
4165         PR c++/69131
4166         * method.c (walk_field_subobs): Add dtor_from_ctor parm.
4167         (process_subob_fn): Likewise.  Don't consider triviality if true.
4168         (synthesize_method_walk): Pass it.
4170 2016-01-11  David Malcolm  <dmalcolm@redhat.com>
4172         PR c++/68795
4173         * parser.c (cp_parser_postfix_expression): Initialize
4174         close_paren_loc to UNKNOWN_LOCATION; only use it if
4175         it has been written to by
4176         cp_parser_parenthesized_expression_list.
4177         (cp_parser_parenthesized_expression_list): Document the behavior
4178         with respect to the CLOSE_PAREN_LOC param.
4180 2016-01-11  Jakub Jelinek  <jakub@redhat.com>
4182         PR c++/69211
4183         * cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR
4184         folded operands have side-effects, but folding changed any of them,
4185         build a new tree with the folded operands instead of returning the
4186         unfolded tree.
4188 2016-01-09  Marek Polacek  <polacek@redhat.com>
4190         PR c++/69113
4191         * decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set.
4193 2016-01-09  Jakub Jelinek  <jakub@redhat.com>
4195         PR c++/69164
4196         * class.c (layout_class_type): Use copy_node to copy FIELD_DECLs.
4198 2016-01-08  Jason Merrill  <jason@redhat.com>
4200         PR c++/69158
4201         * constexpr.c (cxx_fold_indirect_ref): Handle array type differing
4202         in completion.
4204 2016-01-08  Marek Polacek  <polacek@redhat.com>
4206         PR c++/68449
4207         * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer.
4209 2016-01-08  Jason Merrill  <jason@redhat.com>
4211         * constexpr.c (cxx_eval_call_expression): Remove convert_to_void
4212         workaround.
4214         PR c++/68983
4215         PR c++/67557
4216         * cvt.c (convert_to_void): Don't strip a TARGET_EXPR of
4217         TREE_ADDRESSABLE type.
4219         PR c++/68983
4220         PR c++/67557
4221         * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR.
4223 2016-01-05  Nathan Sidwell  <nathan@acm.org>
4225         PR c++/58583
4226         * pt.c (build_non_dependent_expr): Don't try a checking fold when
4227         parsing an nsdmi.
4229 2016-01-04  Jakub Jelinek  <jakub@redhat.com>
4231         Update copyright years.
4233 Copyright (C) 2016 Free Software Foundation, Inc.
4235 Copying and distribution of this file, with or without modification,
4236 are permitted in any medium without royalty provided the copyright
4237 notice and this notice are preserved.