Improve C++ debug_tree.
[official-gcc.git] / gcc / cp / ChangeLog
blob20677fd79f39730e5b3a8aa0262d9efeb73c9589
1 2016-12-21  Jason Merrill  <jason@redhat.com>
3         * ptree.c (cxx_print_type): Print args of
4         BOUND_TEMPLATE_TEMPLATE_PARM.
5         (cxx_print_decl): Print DECL_TEMPLATE_PARMS.
7         PR c++/78767 - ICE with inherited constructor default argument
8         * method.c (strip_inheriting_ctors): Strip template as appropriate.
10         PR c++/78749 - friend in anonymous namespace
11         * decl.c (wrapup_globals_for_namespace): Don't complain about friend
12         pseudo-template instantiations.
14 2016-12-16  Richard Biener  <rguenther@suse.de>
16         PR c++/71694
17         * cp-objcp-common.h (cp_unit_size_without_reusable_padding): Declare.
18         (LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define.
19         * cp-objcp-common.c (cp_unit_size_without_reusable_padding): New.
21 2016-12-15  Jakub Jelinek  <jakub@redhat.com>
23         P0490R0 GB 20: decomposition declaration should commit to tuple
24         interpretation early
25         * decl.c (get_tuple_size): Make static.  If inst is error_mark_node
26         or non-complete type, return NULL_TREE, otherwise if
27         lookup_qualified_name fails or doesn't fold into INTEGER_CST, return
28         error_mark_node.
29         (get_tuple_element_type, get_tuple_decomp_init): Make static.
30         (cp_finish_decomp): Pass LOC to get_tuple_size.  If it returns
31         error_mark_node, complain and fail.
33 2016-12-15  Nathan Sidwell  <nathan@acm.org>
35         PR c++/77585
36         * pt.c (instantiate_decl): Push to class scope lambda resides
37         within when instantiating a generic lambda function.
39 2016-12-14  Martin Sebor  <msebor@redhat.com>
41         PR c++/78774
42         * pt.c (convert_template_argument): Avoid assuming operand type
43         is non-null since that of SCOPE_REF is not.
45 2016-12-14  Martin Jambor  <mjambor@suse.cz>
47         * parser.c: Include omp-general.h and omp-offload.h instead of
48         omp-low.h.
49         (cp_parser_omp_simd): Adjusted calls to find_omp_clause to use its new
50         name.
51         (cp_parser_omp_target_update): Likewise.
52         (cp_parser_oacc_declare): Likewise.
53         (cp_parser_oacc_enter_exit_data): Likewise.
54         (cp_parser_oacc_update): Likewise.
55         (cp_finalize_oacc_routine): Adjusted call to get_oacc_fn_attrib,
56         build_oacc_routine_dims and replace_oacc_fn_attrib to use their new
57         names.
58         * semantics.c: Include omp-general insteda of omp-low.h.
59         (finish_omp_for): Adjusted calls to find_omp_clause to use its new
60         name.
61         (finish_omp_cancel): Likewise.
62         (finish_omp_cancellation_point): Likewise.
64 2016-12-14  Marek Polacek  <polacek@redhat.com>
66         PR c++/72775
67         * init.c (perform_member_init): Diagnose member initializer for
68         flexible array member. 
70 2016-12-14  Nathan Sidwell  <nathan@acm.org>
72         PR c++/78701
73         * pt.c (type_unification_real): Check tsubst arg doesn't have
74         remaining template parms before converting it.
76         PR c++/69481
77         * cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use
78         TYPE_ALIAS_TEMPLATE_INFO for aliases.
80 2016-12-13  Nathan Sidwell  <nathan@acm.org>
82         PR c++/69481
83         * cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking.
84         (TYPE_ALIAS_TEMPLATE_INFO): New.
85         (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New.  Use those macros.
86         * error.c (dump_alias_template_specialization): Adjust.
87         * pt.c (maybe_process_partial_specialization,
88         iterative_has_template_arg, find_parameter_packs_r,
89         alias_template_specialization_p, dependent_alias_template_spec_p,
90         get_underlying_template, lookup_template_class_1, unify): Adjust
91         template using decl access.
93 2016-12-11  Paolo Carlini  <paolo.carlini@oracle.com>
95         PR c++/78637
96         * parser.c (cp_parser_namespace_definition): Increment
97         nested_definition_count only if push_namespace succeeds.
99 2016-12-08  Nathan Sidwell  <nathan@acm.org>
101         PR c++/78551
102         * constexpr.c (extract_string_elt): New.  Broken out of ...
103         (cxx_eval_array_reference): ... here.  Call it.
104         (cxx_eval_store_expression): Convert init by STRING_CST into
105         CONSTRUCTOR, if needed.
107 2016-12-08  Jakub Jelinek  <jakub@redhat.com>
109         P0003R5 - removal of dynamic exception specification from C++17
110         * parser.c (cp_parser_exception_specification_opt): For C++17
111         error out on throw ( type-id-list ), for C++11 and C++14 issue
112         -Wdeprecated warning on it.  Formatting fix.  Treat throw()
113         in C++17 as noexcept(true).
115 2016-12-07  Martin Jambor  <mjambor@suse.cz>
117         PR c++/78589
118         * error.c (dump_decl): Use dump_function_name to dump
119         !DECL_LANG_SPECIFIC function decls with no or self-referencing
120         abstract origin.
122 2016-12-07  Nathan Sidwell  <nathan@acm.org>
124         * pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow
125         and avoid re-tsubsting type.
127         * cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER &
128         CPTI_DECLTYPE_AUTO_IDENTIFIER.
129         (auto_identifier, decltype_auto_identifier): New.
130         *decl.c (initialize_predefined_identifiers): Add 'auto' and
131         'decltype(auto)'.
132         (grokdeclarator): Use cached identifier.
133         * pt.c (make_decltype_auto, make_auto, make_constrained_auto,
134         is_auto): Likewise.
136 2016-12-02  Jakub Jelinek  <jakub@redhat.com>
138         PR c++/78649
139         * pt.c (tsubst_init): Don't call build_value_init if decl's type
140         is error_mark_node.
142 2016-12-02  Cesar Philippidis  <cesar@codesourcery.com>
143             James Norris  <jnorris@codesourcery.com>
145         * parser.c (cp_parser_oacc_enter_exit_data): Update diagnostics.
146         (cp_parser_pragma): Error when PRAGMA_OACC_{ENTER_DATA,
147         EXIT_DATA,WAIT} are not used in compound statements.
149 2016-12-01  Jason Merrill  <jason@redhat.com>
151         * call.c (add_function_candidate): Also exclude inherited ctors
152         that take a type reference-related to the derived class.
154         * call.c (add_function_candidate): Exclude inherited copy/move
155         ctors.
157 2016-11-29  David Malcolm  <dmalcolm@redhat.com>
159         PR c++/77922
160         * name-lookup.c (lookup_name_fuzzy): Filter out reserved words
161         that were filtered out by init_reswords.
163 2016-11-28  Jakub Jelinek  <jakub@redhat.com>
164             Jason Merrill  <jason@redhat.com>
166         PR c++/72808
167         * decl.c (finish_enum_value_list): Call fixup_type_variants on
168         current_class_type after
169         insert_late_enum_def_into_classtype_sorted_fields.
171 2016-11-28  Jakub Jelinek  <jakub@redhat.com>
173         PR c++/77591
174         * typeck.c (maybe_warn_about_returning_address_of_local): Optimize
175         whats_returned through fold_for_warn.
177 2016-11-27  Jason Merrill  <jason@redhat.com>
179         PR c++/77907
180         * constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.
182 2016-11-24  Martin Liska  <mliska@suse.cz>
184         PR bootstrap/78493
185         * parser.c (cp_parser_range_for): Use safe_push instead of quick_push.
187 2016-11-23  Jakub Jelinek  <jakub@redhat.com>
189         PR c++/77907
190         * cp-gimplify.c (cp_fold) <case CALL_EXPR>: When calling constructor
191         and maybe_constant_value returns non-CALL_EXPR, create INIT_EXPR
192         with the object on lhs and maybe_constant_value returned expr on rhs.
194         PR c++/71450
195         * pt.c (tsubst_copy): Return error_mark_node when mark_used
196         fails, even when complain & tf_error.
198         PR c++/77739
199         * cp-gimplify.c (cp_gimplify_tree) <case VEC_INIT_EXPR>: Pass
200         false as handle_invisiref_parm_p to cp_genericize_tree.
201         (struct cp_genericize_data): Add handle_invisiref_parm_p field.
202         (cp_genericize_r): Don't wrap is_invisiref_parm into references
203         if !wtd->handle_invisiref_parm_p.
204         (cp_genericize_tree): Add handle_invisiref_parm_p argument,
205         set wtd.handle_invisiref_parm_p to it.
206         (cp_genericize): Pass true as handle_invisiref_parm_p to
207         cp_genericize_tree.  Formatting fix.
209 2016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>
211         PR c++/71973
212         * decl.c (duplicate_decls): Warn when a built-in function is redefined.
213         Don't overload builtin functions with C++ functions.
214         Handle const_tm_ptr_type_node like file_ptr_node.
215         Copy the TREE_NOTHROW flag unmodified to the old decl.
217 2016-11-18  Jason Merrill  <jason@redhat.com>
219         PR objc++/78418 - ICE in string tests on darwin
220         * tree.c (lvalue_kind): Guard DECL_HAS_VALUE_EXPR_P.
222 2016-11-18  Jakub Jelinek  <jakub@redhat.com>
224         PR c++/77285
225         * mangle.c (mangle_tls_init_fn, mangle_tls_wrapper_fn): Call
226         check_abi_tags.
228 2016-11-18  Jason Merrill  <jason@redhat.com>
230         PR c++/67631 - list-init and explicit conversions
231         * semantics.c (finish_compound_literal): Call digest_init_flags.
232         * typeck2.c (digest_init_flags): Add complain parm.
233         (store_init_value): Pass it.
235 2016-11-18  Richard Sandiford  <richard.sandiford@arm.com>
236             Alan Hayward  <alan.hayward@arm.com>
237             David Sherwood  <david.sherwood@arm.com>
239         * class.c (finish_struct_bits): Use SET_DECL_MODE.
240         (build_base_field_1, layout_class_type, finish_struct_1): Likewise.
241         * decl.c (make_label_decl): Likewise.
242         * pt.c (tsubst_decl): Likewise.
244 2016-11-17  Jason Merrill  <jason@redhat.com>
246         PR c++/78193 - inherited ctor regressions on sparc32.
247         * call.c (build_over_call): Don't set CALL_FROM_THUNK_P here.
248         (build_call_a): Set it here, and don't insert EMPTY_CLASS_EXPR.
249         (convert_like_real) [ck_rvalue]: Also pass non-addressable
250         types along directly.
252 2016-11-17  Paolo Carlini  <paolo.carlini@oracle.com>
254         PR c++/55080
255         * parser.c (cp_parser_non_integral_constant_expression): Issue a
256         pedwarn instead of an error for case NIC_FLOAT.
258 2016-11-17  Jason Merrill  <jason@redhat.com>
260         PR c++/78124 - list-initialization and inherited ctor
261         * name-lookup.c (do_class_using_decl): Set CLASSTYPE_NON_AGGREGATE.
263         PR c++/78369 - {} as default argument
264         * call.c (build_special_member_call): Handle CONSTRUCTOR.
266         PR c++/68377
267         * parser.c (cp_parser_fold_expression): Check TREE_NO_WARNING.
269 2016-11-16  Jason Merrill  <jason@redhat.com>
271         PR c++/78373
272         * decl.c (cp_finish_decl): Don't set TREE_CONSTANT on a reference.
273         * typeck2.c (store_init_value): Likewise.
275         * decl.c (store_decomp_type, lookup_decomp_type): New.
276         (cp_finish_decomp): Call store_decomp_type.
277         * semantics.c (finish_decltype_type): Call lookup_decomp_type.
278         * cp-tree.h: Declare lookup_decomp_type.
280 2016-11-15  Jakub Jelinek  <jakub@redhat.com>
282         * decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl,
283         set DECL_ASSEMBLER_NAME.
284         * parser.c (cp_parser_decomposition_declaration): Likewise
285         if returning error_mark_node.
286         * mangle.c (mangle_decomp): New function.
287         * cp-tree.h (mangle_decomp): New declaration.
289 2016-11-15  Jason Merrill  <jason@redhat.com>
291         PR c++/78358
292         * semantics.c (finish_decltype_type): Strip references for a tuple
293         decomposition.
294         * cp-tree.h (DECL_DECOMPOSITION_P): False for non-variables.
296         * decl2.c (decl_maybe_constant_var_p): References qualify.
297         * constexpr.c (non_const_var_error): Handle references.
298         * init.c (constant_value_1): Always check decl_constant_var_p.
299         * cp-gimplify.c (cp_fold_maybe_rvalue): Don't fold references.
300         * error.c (dump_decl_name): Split out from dump_decl.
302 2016-11-14  Jason Merrill  <jason@redhat.com>
304         * tree.c (bitfield_p): New.
305         * cp-tree.h: Declare it.
306         * typeck.c (cxx_sizeof_expr, cxx_alignof_expr)
307         (cp_build_addr_expr_1): Use it instead of DECL_C_BIT_FIELD.
308         * decl.c (cp_finish_decomp): Look through reference.  Always
309         SET_DECL_DECOMPOSITION_P.
310         * semantics.c (finish_decltype_type): Adjust decomposition handling.
312 2016-11-13  Jakub Jelinek  <jakub@redhat.com>
313             Jason Merrill  <jason@redhat.com>
315         Implement P0217R3 - C++17 structured bindings
316         * cp-tree.h (struct lang_decl_base): Add decomposition_p.
317         (DECL_DECOMPOSITION_P): New
318         (enum auto_deduction_context): Add adc_decomp_type.
319         (enum cp_declarator_kind): Add cdk_decomp.
320         * constexpr.c (cxx_eval_constant_expression): Look through
321         DECL_VALUE_EXPR.
322         (potential_constant_expression_1): Likewise.
323         * decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT.
324         (check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P.
325         (cp_finish_decl): Pass adc_decomp_type for decomposition.
326         (find_decomp_class_base, get_tuple_size, get_tuple_element_type)
327         (get_tuple_decomp_init, cp_finish_decomp): New.
328         (grokdeclarator): Handle decomposition.
329         * init.c (build_aggr_init): Handle decomposition array.
330         (build_vec_init): Handle initialization from { array }.
331         * name-lookup.c (add_function): Always wrap TEMPLATE_DECL in
332         OVERLOAD.
333         * parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp.
334         (function_declarator_p, strip_declarator_types)
335         (cp_parser_check_declarator_template_parameters): Likewise.
336         (cp_parser_range_for, cp_convert_range_for): Handle decomposition.
337         (cp_parser_simple_declaration): Parse decomposition.
338         (cp_parser_decomposition_declaration): New.
339         * pt.c (tsubst_decomp_names): New.
340         (subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition.
341         (do_auto_deduction): Handle adc_decomp_type.
342         * semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR.
343         * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
344         * tree.c (lvalue_kind): Likewise.
345         (cp_build_reference_type): Handle reference collapsing.
347 2016-11-13  Jason Merrill  <jason@redhat.com>
349         * call.c (build_new_method_call_1): Include template arguments in
350         error message.
351         (print_error_for_call_failure): Likewise.
352         (build_new_function_call): Pass them in.
353         * name-lookup.c (supplement_binding_1): Don't complain about a
354         conflict with an erroneous declaration.
355         * error.c (dump_decl): Fix printing of alias declaration.
356         * decl.c (make_typename_type): Call cxx_incomplete_type_error.
357         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
358         * semantics.c (perform_koenig_lookup): Don't wrap an error in
359         TEMPLATE_ID_EXPR.
361 2016-11-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
363         PR c/35503
364         * parser.c (cp_parser_postfix_pexpression): Call warn_for_restrict.
366 2016-11-12  Jason Merrill  <jason@redhat.com>
368         CWG 2233
369         * typeck.c (convert_arguments): Handle default arg followed by none.
371         * constexpr.c (potential_constant_expression_1): REALPART_EXPR and
372         IMAGPART_EXPR can be lvalues.
374         DR 374
375         PR c++/56480
376         * pt.c (check_specialization_namespace): Allow any enclosing
377         namespace.
378         (check_unqualified_spec_or_inst): New.
379         (check_explicit_specialization): Call it.
380         * parser.c (cp_parser_elaborated_type_specifier)
381         (cp_parser_class_head): Call it.
383 2016-11-10  Jason Merrill  <jason@redhat.com>
385         PR c++/77337
386         * pt.c (tsubst_friend_function): Don't set DECL_INITIAL.
387         (instantiate_decl): It's OK to defer a constexpr function.
388         * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): Check
389         DECL_LANG_SPECIFIC.
390         * decl2.c (decl_defined_p): Use it.  No longer static.
391         * decl.c (redeclaration_error_message): Use decl_defined_p.
392         * constexpr.c (cxx_eval_call_expression): Set input_location around
393         call to instantiate_decl.
395 2016-11-10  Jakub Jelinek  <jakub@redhat.com>
397         * mangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for
398         public or external symbols.
400 2016-11-09  Jakub Jelinek  <jakub@redhat.com>
402         PR c++/78283
403         * mangle.c (start_mangling): Reset G.need_cxx1z_warning.
405 2016-11-09  Jason Merrill  <jason@redhat.com>
407         * parser.c (cp_parser_simple_type_specifier): Allow placeholder
408         for template template parameter.
409         (cp_parser_type_id_1): Improve diagnostic.
410         * decl.c (grokdeclarator): Handle class deduction diagnostics here.
411         * pt.c (splice_late_return_type): Not here.
412         (tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template.
413         (do_class_deduction): Handle non-class templates.
415         Implement P0127R2, Declaring non-type parameters with auto.
416         * cp-tree.h (enum auto_deduction_context): Add adc_unify.
417         * decl.c (grokdeclarator): Allow 'auto' in C++17 template non-type
418         parameter types.
419         * pt.c (do_auto_deduction): Add outer_targs parameter.
420         (convert_template_argument): Call do_auto_deduction.  If adc_unify,
421         don't give up on dependent init.
422         (unify): Likewise.  In C++17, walk into the type of a
423         TEMPLATE_PARM_INDEX.
424         (for_each_template_parm): Add any_fn parameter.
425         (struct pair_fn_data): Likewise.
426         (for_each_template_parm_r): Call it for any tree.  In C++17, walk
427         into the type of a TEMPLATE_PARM_INDEX.
428         (zero_r, array_deduction_r, try_array_deduction): New.
429         (type_unification_real): Call try_array_deduction.
430         (get_partial_spec_bindings): Likewise.
432 2016-11-07  Jason Merrill  <jason@redhat.com>
434         Implement P0012R1, Make exception specifications part of the type
435         system.
436         * cp-tree.h (enum tsubst_flags): Add tf_fndecl_type.
437         (flag_noexcept_type, ce_type): New.
438         * call.c (build_conv): Add ck_fnptr.
439         (enum conversion_kind): Change ck_tsafe to ck_fnptr.
440         (convert_like_real): Likewise.
441         (standard_conversion): Likewise.  Allow function pointer
442         conversions for pointers to member functions.
443         (reference_compatible_p): Allow function pointer conversions.
444         (direct_reference_binding): Likewise.
445         (reference_binding): Reference-compatible is no longer a subset of
446         reference-related.
447         (is_subseq): Also strip ck_lvalue after next_conversion.
448         * class.c (instantiate_type): Check fnptr_conv_p.
449         (resolve_address_of_overloaded_function): Likewise.
450         * cvt.c (can_convert_tx_safety): Now static.
451         (noexcept_conv_p, fnptr_conv_p, strip_fnptr_conv): New.
452         * decl.c (flag_noexcept_type): Define.
453         (cxx_init_decl_processing): Set it.
454         (bad_specifiers): Check it.
455         (grokdeclarator) [cdk_function]: Add exception-spec to type here.
456         * lambda.c (maybe_add_lambda_conv_op): Add exception-spec to
457         returned pointer.
458         * mangle.c (struct globals): Add need_cxx1z_warning.
459         (mangle_decl): Check it.
460         (write_exception_spec): New.
461         (write_function_type): Call it.
462         (canonicalize_for_substitution): Handle exception spec.
463         (write_type): Likewise.
464         (write_encoding): Set processing_template_decl across mangling of
465         partially-instantiated type.
466         * pt.c (determine_specialization): Pass tf_fndecl_type.
467         (tsubst_decl, fn_type_unification): Likewise.
468         (tsubst): Strip tf_fndecl_type, pass it to
469         tsubst_exception_specification.
470         (convert_nontype_argument_function): Handle function pointer
471         conversion.
472         (convert_nontype_argument): Likewise.
473         (unify, for_each_template_parm_r): Walk into noexcept-specifier.
474         * rtti.c (ptr_initializer): Encode noexcept.
475         * tree.c (canonical_eh_spec): New.
476         (build_exception_variant): Use it.
477         * typeck.c (composite_pointer_type): Handle fnptr conversion.
478         (comp_except_specs): Compare canonical EH specs.
479         (structural_comptypes): Call it.
481         * call.c (standard_conversion): Reorganize pointer conversions.
482         * pt.c (convert_nontype_argument_function): Convert to ref here.
483         (convert_nontype_argument): Not here.
484         (convert_template_argument): Add original type to error message.
485         (RECUR_AND_CHECK_FAILURE): Remove trailing semicolon.
486         (unify): Compare function-qualifiers.
487         * typeck.c (same_type_ignoring_top_level_qualifiers_p): Use
488         cp_build_qualified_type rather than TYPE_MAIN_VARIANT.
490         * pt.c (push_tinst_level_loc): Add template instantiations to the
491         announce_function stream.
493 2016-11-04  Paolo Carlini  <paolo.carlini@oracle.com>
495         PR c++/67980
496         * pt.c (tsubst_expr, case IF_STMT): Use fold_non_dependent_expr
497         to suppress unwanted warnings.
499 2016-11-03  Jason Merrill  <jason@redhat.com>
501         PR c++/78198
502         * call.c (convert_default_arg): Look through inheriting ctors.
504 2016-11-03  Jakub Jelinek  <jakub@redhat.com>
505             Alexandre Oliva  <aoliva@redhat.com>
506             Jason Merrill  <jason@redhat.com>
508         PR debug/28767
509         PR debug/56974
510         * tree.c (cp_check_qualified_type): Use check_base_type and
511         TYPE_QUALS comparison instead of check_qualified_type.
512         (cxx_type_hash_eq): Return false if type_memfn_rqual don't match.
513         * cp-objcp-common.c (cp_get_debug_type): New function.
514         (cp_decl_dwarf_attribute): Don't handle types here.
515         (cp_type_dwarf_attribute): New function.
516         * cp-objcp-common.h (cp_get_debug_type, cp_type_dwarf_attribute):
517         Declare.
518         (LANG_HOOKS_GET_DEBUG_TYPE, LANG_HOOKS_TYPE_DWARF_ATTRIBUTE):
519         Define.
521 2016-11-03  Jason Merrill  <jason@redhat.com>
523         * tree.c (cp_check_qualified_type): Call check_base_type instead
524         of check_qualified_type.
525         (cxx_type_hash_eq): Check ref-qualifiers.
526         * typeck.c (apply_memfn_quals): No need to mess with TYPE_CANONICAL.
528 2016-11-01  Jason Merrill  <jason@redhat.com>
530         Implement P0136R1, Rewording inheriting constructors.
531         * call.c (enum rejection_reason_code): Add rr_inherited_ctor.
532         (inherited_ctor_rejection): New.
533         (add_function_candidate): Reject inherited ctors for copying.
534         (enforce_access): Use strip_inheriting_ctors.
535         (print_z_candidate): Likewise.  Handle rr_inherited_ctor.
536         (convert_like_real): Avoid copying inheriting ctor parameters.
537         (build_over_call): Likewise.  A base ctor inheriting from vbase
538         has no parms.  Sorry about varargs.
539         (joust): A local constructor beats inherited with the same convs.
540         * class.c (add_method): Handle hiding inheriting ctors.
541         (one_inherited_ctor): Handle new semantics.
542         (add_implicitly_declared_members): Pass using_decl down.
543         (build_clone): A base ctor inheriting from vbase has no parms.
544         * cp-tree.h (DECL_INHERITED_CTOR): Store this instead of the base.
545         (SET_DECL_INHERITED_CTOR): Likewise.
546         (DECL_INHERITED_CTOR_BASE): Adjust.
547         * constexpr.c: Adjust.
548         * error.c (dump_function_decl): Decorate inheriting ctors.
549         * init.c (emit_mem_initializers): Suppress access control in
550         inheriting ctor.
551         * mangle.c (write_special_name_constructor): Handle new inheriting
552         ctor mangling.
553         * method.c (strip_inheriting_ctors, inherited_ctor_binfo)
554         (ctor_omit_inherited_parms, binfo_inherited_from): New.
555         (synthesized_method_walk): Use binfo_inherited_from.  Suppress
556         access control in inheriting ctor.
557         (deduce_inheriting_ctor): Deleted if ambiguous ctor inheritance.
558         (maybe_explain_implicit_delete): Explain ambigous ctor inheritance.
559         (add_one_base_init, do_build_copy_constructor): Adjust.
560         (locate_fn_flags, explain_implicit_non_constexpr): Adjust.
561         (implicitly_declare_fn): Adjust.
562         (get_inherited_ctor): Remove.
563         * name-lookup.c (do_class_using_decl): Check for indirect ctor
564         inheritance.
565         * optimize.c (cdtor_comdat_group): Adjust for new mangling.
566         (maybe_clone_body): Handle omitted parms in base clone.
567         (maybe_thunk_body): Don't thunk if base clone omits parms.
568         * pt.c (tsubst_decl): Adjust.
569         (instantiate_template_1): Suppress access control in inheriting
570         ctor.
571         (fn_type_unification): Do deduction with inherited ctor.
572         * tree.c (special_function_p): Adjust.
574 2016-11-01  Jakub Jelinek  <jakub@redhat.com>
576         * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_inline.
578 2016-11-01  Jason Merrill  <jason@redhat.com>
580         * class.c (declared_access): Split out from handle_using_decl.
582 2016-10-31  Jakub Jelinek  <jakub@redhat.com>
584         PR c++/78089
585         * parser.c (cp_parser_postfix_expression): Replace return statement in
586         the first switch with setting postfix_expression to the return
587         expression and break;.
589         PR c++/77886
590         * pt.c (tsubst_expr) <case CASE_LABEL_EXPR> Copy over
591         FALLTHROUGH_LABEL_P flag to the new LABEL_DECL.
592         (tsubst_expr) <case LABEL_EXPR>: Likewise.
594 2016-09-11  Le-Chun Wu  <lcwu@google.com>
595             Mark Wielaard  <mjw@redhat.com>
597         * name-lookup.c (pushdecl_maybe_friend): When emitting a
598         shadowing warning, use the code corresponding to the
599         given -Wshadow= variant.
601 2016-10-26  Jason Merrill  <jason@redhat.com>
603         * class.c (add_method): Allow using-declarations to coexist.
605 2016-10-25  Jason Merrill  <jason@redhat.com>
607         * constexpr.c (maybe_constant_init): Pull out TARGET_EXPR_INITIAL.
608         (cxx_eval_outermost_constant_expr): Don't return a CONSTRUCTOR
609         with CONSTRUCTOR_NO_IMPLICIT_ZERO.
610         (cxx_eval_call_expression): Clear CONSTRUCTOR_NO_IMPLICIT_ZERO.
612 2016-10-25  Jakub Jelinek  <jakub@redhat.com>
614         * parser.c (cp_parser_postfix_expression): Adding missing break;.
616         * cp-tree.h (finish_builtin_launder): Declare.
617         * parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_LAUNDER.
618         * semantics.c (finish_builtin_launder): New function.
619         * pt.c (tsubst_copy_and_build): Handle instantiation of IFN_LAUNDER.
620         * constexpr.c (cxx_eval_internal_function): Handle IFN_LAUNDER.
621         (potential_constant_expression_1): Likewise.
623 2016-10-24  Jakub Jelinek  <jakub@redhat.com>
625         * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_reference
626         and DW_AT_rvalue_reference.
628         * cxx-pretty-print.c (pp_cxx_check_constraint): Use VAR_P (x)
629         instead of TREE_CODE (x) == VAR_DECL.
630         * constraint.cc (get_concept_definition): Likewise.
631         (finish_shorthand_constraint): Likewise.
632         * init.c (warn_placement_new_too_small): Likewise.
633         * cp-gimplify.c (cp_genericize_r): Likewise.
635 2016-10-21  Jason Merrill  <jason@redhat.com>
637         PR c++/77656
638         * pt.c (convert_template_argument): Call convert_nontype_argument
639         on value-dependent but not type-dependent arguments.
640         (convert_nontype_argument): Handle value-dependent arguments.
641         (canonicalize_expr_argument): New.
642         (deducible_expression, unify): Skip CONVERT_EXPR.
643         * error.c (dump_template_argument): Likewise.
644         * mangle.c (write_expression): Likewise.
646         * ptree.c (cxx_print_xnode) [TEMPLATE_PARM_INDEX]: Dump the decl.
648 2016-10-21  Jakub Jelinek  <jakub@redhat.com>
650         * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle
651         DW_AT_const_expr.
653 2016-10-17  Jakub Jelinek  <jakub@redhat.com>
655         * cp-objcp-common.h (cp_function_decl_explicit_p,
656         cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove.
657         (cp_decl_dwarf_attribute): Declare.
658         (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P,
659         LANG_HOOKS_FUNCTION_DECL_DELETED_P,
660         LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Remove.
661         (LANG_HOOKS_DECL_DWARF_ATTRIBUTE): Redefine.
662         * cp-objcp-common.c (cp_function_decl_explicit_p,
663         cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove.
664         (cp_decl_dwarf_attribute): New function.
666 2016-10-15  Jason Merrill  <jason@redhat.com>
668         PR c++/77945
669         * constexpr.c (maybe_simplify_trivial_copy): New.
670         (cxx_eval_store_expression): Call it.
671         * call.c (build_over_call): Use unsigned char for trivial copy.
673 2016-10-14  Jason Merrill  <jason@redhat.com>
675         Implement P0017R1, C++17 aggregates with bases.
676         * class.c (build_base_field_1): Split out from...
677         (build_base_field): ...here.  In C++17 mode, build a field for
678         empty bases.
679         * decl.c (xref_basetypes): In C++17 aggregates can have bases.
680         (next_initializable_field): Allow base fields in C++17.
681         * typeck2.c (process_init_constructor_record): Likewise.
683 2016-10-14  Jakub Jelinek  <jakub@redhat.com>
685         DR 1511 - const volatile variables and ODR
686         * decl.c (grokvardecl): Change flags argument to type_quals,
687         add conceptp argument.  Set TREE_PUBLIC for non-static volatile vars.
688         (grokdeclarator): Adjust grokvardecl caller.
690 2016-10-13  Martin Sebor  <msebor@redhat.com>
692         PR c++/71912
693         * class.c (struct flexmems_t):  Add members.
694         (find_flexarrays): Add arguments.  Correct handling of anonymous
695         structs.
696         (diagnose_flexarrays): Adjust to issue warnings in addition to errors.
697         (check_flexarrays): Add argument.
698         (diagnose_invalid_flexarray): New functions.
700 2016-10-13  Jakub Jelinek  <jakub@redhat.com>
701             Jason Merrill  <jason@redhat.com>
703         Implement P0386R2 - C++17 inline variables
704         * cp-tree.h (struct lang_type): Shrink language field to 1 bit
705         from 4.  Add var_declared_inline_p field.  Mention 2 spare bits.
706         (DECL_VAR_DECLARED_INLINE_P): Define.
707         (SET_DECL_VAR_DECLARED_INLINE_P): Define.
708         (DECL_INLINE_VAR_P): Define.
709         (diagnose_inline_vars_for_namespace): Declare.
710         * decl.c (diagnose_inline_vars_for_namespace): New function.
711         (duplicate_decls): For static data members copy
712         DECL_DECLARED_CONSTEXPR_P.
713         (redeclaration_error_message): Handle C++17 redundant redeclaration
714         of constexpr static data member outside of class.
715         (maybe_commonize_var): Handle inline variables.
716         (check_initializer): Ignore inline variables for diagnostics.
717         Adjust diagnostic wording for C++17.
718         (make_rtl_for_nonlocal_decl): Allow in-class definition of
719         inline static data members.
720         (bad_specifiers): Don't diagnose inline on variables here.
721         (grokvardecl): Add inlinep argument, non-static const inline variables
722         are TREE_PUBLIC.
723         (check_static_variable_definition): Return early also for inline
724         variables.
725         (mark_inline_variable): New.
726         (grokdeclarator): Handle inline variables and inline static data
727         members.
728         * typeck2.c (store_init_value): Don't diagnose non-constant
729         initializers for non-constexpr inline static data members.
730         * decl2.c (vague_linkage_p): Return true for inline variables.
731         (c_parse_final_cleanups): In-class declaration of inline static
732         data members is a definition.  Call diagnose_inline_vars_for_namespace
733         through walk_namespaces.
734         * pt.c (instantiate_decl): Set pattern_defined for in-class definitions
735         of inline static data members.
737 2016-10-13  Jason Merrill  <jason@redhat.com>
739         * decl.c (mark_inline_variable): New.
741 >>>>>>> .r241142
742 2016-10-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
744         * decl2.c: Include memmodel.h.
745         * rtti.c: Likewise.
747 2016-10-11  Jason Merrill  <jason@redhat.com>
749         PR c++/77742
750         * init.c (build_new_1): Don't -Waligned-new about placement new.
751         (malloc_alignment): New.  Consider MALLOC_ABI_ALIGNMENT.
752         * decl.c (cxx_init_decl_processing): New.
754 2016-10-10  Jason Merrill  <jason@redhat.com>
756         PR c++/77890
757         PR c++/77912
758         * pt.c (do_class_deduction): Set cp_unevaluated_operand.
759         (tsubst) [TEMPLATE_TYPE_PARM]: Copy CLASS_PLACEHOLDER_TEMPLATE.
761 2016-10-08  Jason Merrill  <jason@redhat.com>
763         * cp-gimplify.c (cp_fold): Add variable name.
765         * cp-gimplify.c (cp_fold): Distribute cp_truthvalue_conversion
766         into COND_EXPR.
768 2016-10-07  Jason Merrill  <jason@redhat.com>
770         Further P0135 refinement.
771         * call.c (build_user_type_conversion_1): Consider conversions from
772         a single element in an initializer-list.
773         (build_temp): Undo early_elide_copy change.
774         (build_over_call): Check that we don't try to copy a TARGET_EXPR
775         in C++17 mode.  Set user_conv_p here.
776         (convert_like_real): Not here.
777         (check_self_delegation): Split out from...
778         (build_special_member_call): ...here.  Handle C++17 copy elision.
779         * cvt.c (early_elide_copy): Remove.
780         (ocp_convert): Undo early_elide_copy change.
781         * except.c (build_throw): Likewise.
782         * init.c (expand_default_init): Likewise.
783         * typeck.c (cp_build_modify_expr): Likewise.
785 2016-10-07  Nathan Sidwell  <nathan@acm.org>
787         PR c++/64433
788         DR1658, DR1611
789         * init.c (emit_mem_initializers): Don't construct vbases of
790         abstract classes.
791         (push_base_cleanups): Don't push vbase cleanups for abstract class
792         when in C++14 mode.
793         * method.c (synthethesized_method_walk): Don't walk vbases of
794         abstract classes when in C++14 mode.
796 2016-10-07  Jakub Jelinek  <jakub@redhat.com>
798         Implement LWG2296 helper intrinsic
799         * parser.c (cp_parser_postfix_expression): Handle RID_ADDRESSOF.
800         * cp-objcp-common.c (cp_common_init_ts): Handle ADDRESSOF_EXPR.
801         * constexpr.c (potential_constant_expression_1): Likewise.
802         * error.c (dump_expr): Likewise.
803         * typeck.c (cp_build_addressof): New function.
804         * cp-tree.h (cp_build_addressof): Declare.
805         * cxx-pretty-print.h (pp_cxx_addressof_expression): Declare.
806         * cp-tree.def (ADDRESSOF_EXPR): New tree code.
807         * cxx-pretty-print.c (cxx_pretty_printer::primary_expression): Handle
808         ADDRESSOF_EXPR.  Add __builtin_addressof and
809         __has_unique_object_representations into syntax in function comment.
810         (pp_cxx_addressof_expression): New function.
811         * pt.c (tsubst_copy_and_build): Handle ADDRESSOF_EXPR.
813 2016-10-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>
815         PR c++/77700
816         * parser.c (cp_parser_base_specifier): Fix a warning.
818 2016-10-07  Bernd Schmidt  <bschmidt@redhat.com>
820         PR c++/69733
821         * decl.c (grokdeclarator): Try to find the correct location for an
822         ignored qualifier.
824 2016-10-07  Martin Liska  <mliska@suse.cz>
826         * lambda.c (maybe_add_lambda_conv_op): Set default value.
828 2016-10-06  Jason Merrill  <jason@redhat.com>
830         * call.c (build_temp, convert_like_real): Don't re-copy
831         TARGET_EXPR.  Handle packed fields.
832         (build_x_va_arg): Wrap it in a TARGET_EXPR.
833         (build_over_call): Add sanity check.
834         * cvt.c (early_elide_copy): New.
835         (ocp_convert): Use it.
836         * except.c (build_throw): Use it.
837         * init.c (get_nsdmi): Put back the TARGET_EXPR.
838         (expand_default_init): Call early_elide_copy.
839         * typeck.c (cp_build_modify_expr): Call early_elide_copy.
841 2016-10-06  Jakub Jelinek  <jakub@redhat.com>
843         Implement P0258R2 - helper for C++17
844         std::has_unique_object_representations trait
845         * cp-tree.h (enum cp_trait_kind): Add
846         CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
847         (struct lang_type_class): Add unique_obj_representations
848         and unique_obj_representations_set bitfields.
849         (CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS,
850         CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET): Define.
851         (type_has_unique_obj_representations): Declare.
852         * parser.c (cp_parser_primary_expression): Handle
853         RID_HAS_UNIQUE_OBJ_REPRESENTATIONS.
854         (cp_parser_trait_expr): Likewise.  Formatting fix.
855         * semantics.c (trait_expr_value, finish_trait_expr): Handle
856         CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
857         * tree.c (type_has_unique_obj_representations): New function.
858         (record_has_unique_obj_representations): New function.
859         * cxx-pretty-print.c (pp_cxx_trait_expression): Handle
860         CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
862 2016-10-05  Jason Merrill  <jason@redhat.com>
864         Implement P0135R1, Guaranteed copy elision.
865         * cvt.c (ocp_convert): Don't re-copy a TARGET_EXPR in C++17.
867         PR c++/54293
868         * call.c (reference_binding): Fix binding to member of temporary.
870         * call.c (extend_ref_init_temps): Fix TARGET_EXPR handling.
872         * parser.c (cp_parser_skip_to_end_of_statement): Add missing break.
874         * semantics.c (finish_compound_literal): Handle class placeholder.
876 2016-10-05  Marek Polacek  <polacek@redhat.com>
878         Implement P0305R1, Selection statements with initializer.
879         * cp-array-notation.c (create_an_loop): Call finish_init_stmt
880         instead of finish_for_init_stmt.
881         * cp-tree.h (finish_for_init_stmt): Rename to finish_init_stmt.
882         * decl.c (poplevel): Adjust a comment.
883         * init.c (build_vec_init): Call finish_init_stmt instead of
884         finish_for_init_stmt.
885         * name-lookup.c (pushdecl_maybe_friend_1): Adjust a comment.
886         * name-lookup.h (enum scope_kind): Likewise.
887         * parser.c (cp_parser_statement): Update commentary.
888         (cp_parser_init_statement_p): New function.
889         (cp_parser_selection_statement): Parse the optional init-statement.
890         (cp_parser_for): Call finish_init_stmt instead of finish_for_init_stmt.
891         (cp_parser_c_for): Likewise.
892         (cp_convert_range_for): Call finish_init_stmt instead of finish_for_init_stmt.
893         (cp_parser_range_for_member_function): Update commentary.
894         (cp_parser_iteration_statement):
895         (cp_parser_for_init_statement): Rename to cp_parser_init_statement.
896         * pt.c (tsubst_omp_for_iterator): Update commentary.
897         (tsubst_expr): Call finish_init_stmt instead of finish_for_init_stmt.
898         * semantics.c (finish_for_init_stmt): Rename to finish_init_stmt.
899         Update commentary.
901 2016-10-04  Jason Merrill  <jason@redhat.com>
903         PR c++/77852
904         * pt.c (do_class_deduction): Handle list-initialization.
905         (do_auto_deduction): Call it sooner.
906         (build_deduction_guide): Use tsubst_arg_types.
907         (rewrite_template_parm): Don't copy_type.
909         PR c++/77775
910         * constexpr.c (cxx_eval_component_reference): Use name matching
911         for PMFs.
913         Implement P0091R2, Template argument deduction for class templates.
914         * parser.c (cp_parser_simple_type_specifier): Parse class placeholder.
915         Use the location of the beginning of the type-specifier.
916         (cp_parser_init_declarator): Parse deduction guide.
917         (cp_parser_diagnose_invalid_type_name): Mention class deduction.
918         (cp_parser_type_id_1): Don't accept class placeholder as template arg.
919         * cp-tree.h (CLASS_PLACEHOLDER_TEMPLATE): New.
920         * decl.c (grokdeclarator): Check for uninitialized auto here.
921         (start_decl_1): Not here.
922         (cp_finish_decl): Or here.  Don't collapse a list when doing
923         class deduction.
924         (grokfndecl): Check deduction guide scope and body.
925         * error.c (dump_decl, dump_function_decl, dump_function_name):
926         Handle deduction guides.
927         * pt.c (make_template_placeholder, do_class_deduction): New.
928         (build_deduction_guide, rewrite_template_parm): New.
929         (dguide_name, dguide_name_p, deduction_guide_p): New.
930         (do_auto_deduction): Call do_class_deduction.
931         (splice_late_return_type, is_auto): Handle class placeholders.
932         (template_parms_level_to_args): Split from template_parms_to_args.
933         (tsubst_template_parms_level): Split from tsubst_template_parms.
934         * typeck2.c (build_functional_cast): Handle class placeholder.
936 2016-10-04  Martin Sebor  <msebor@redhat.com>
938         PR c++/77804
939         * init.c (warn_placement_new_too_small): Avoid assuming an array type
940         has a constant size.
942 2016-10-04  Jakub Jelinek  <jakub@redhat.com>
944         PR c++/77791
945         * parser.c (cp_parser_lambda_declarator_opt): Only pedwarn
946         for C++11 on decls in the param_list.  Test cxx_dialect < cxx14 before
947         the loop just once.
949         * cp-tree.h (enum cp_tree_index): Remove CPTI_JAVA_*,
950         CPTI_LANG_NAME_JAVA and CPTI_JCLASS.
951         (java_byte_type_node, java_short_type_node, java_int_type_node,
952         java_long_type_node, java_float_type_node, java_double_type_node,
953         java_char_type_node, java_boolean_type_node, lang_name_java,
954         jclass_node): Remove.
955         (enum languages): Remove lang_java.
956         (TYPE_FOR_JAVA): Remove.
957         (struct lang_type_class): Remove java_interface bit-field.
958         (TYPE_JAVA_INTERFACE): Remove.
959         (pragma_java_exceptions): Remove.
960         (check_java_method, build_java_class_ref): Remove prototypes.
961         * name-lookup.c (pushtag_1): Don't set TYPE_FOR_JAVA.
962         * decl2.c (acceptable_java_type, check_java_method): Remove.
963         (import_export_decl): Remove TYPE_FOR_JAVA handling.
964         (build_java_method_aliases): Remove.
965         (c_parse_final_cleanups): Don't call build_java_method_aliases.
966         (possibly_inlined_p): Don't test pragma_java_exceptions.
967         * init.c (build_new_1): Remove TYPE_FOR_JAVA handling.
968         (build_java_class_ref): Remove.
969         * pt.c (maybe_new_partial_specialization, lookup_template_class_1,
970         instantiate_class_template_1): Don't copy TYPE_FOR_JAVA.
971         * except.c (eh_type_info): Remove java type handling.
972         (decl_is_java_type, choose_personality_routine): Remove.
973         (initialize_handler_parm): Don't call choose_personality_routine.
974         (expand_start_catch_block): Don't handle java types.
975         (build_throw): Likewise.
976         * cp-lang.c (cp_eh_personality): Don't handle pragma_java_exceptions.
977         * typeck.c (structural_comptypes): Don't compare TYPE_FOR_JAVA.
978         * call.c (build_over_call): Don't handle TYPE_JAVA_INTERFACE.
979         (java_iface_lookup_fn): Remove.
980         (build_java_interface_fn_ref): Remove.
981         * tree.c (cxx_attribute_table): Remove java_interface.
982         (handle_java_interface_attribute): Remove.
983         * lex.c (pragma_java_exceptions): Remove.
984         (init_cp_pragma): Don't register GCC java_exceptions pragma.
985         (handle_pragma_java_exceptions): Remove.
986         (retrofit_lang_decl): Don't handle lang_name_java.
987         * method.c (implicitly_declare_fn): Don't handle TYPE_FOR_JAVA.
988         * error.c (language_to_string): Don't handle lang_java.
989         * decl.c (record_builtin_java_type): Remove.
990         (initialize_predefined_identifiers): Remove Java.
991         (cxx_init_decl_processing): Remove java_*_type_node.
992         (cp_finish_decl): Don't handle TYPE_FOR_JAVA.
993         (grokfndecl): Likewise.
994         (check_special_function_return_type): Likewise.
995         (grokdeclarator): Don't set TYPE_FOR_JAVA.
996         (grokparms): Don't handle TYPE_FOR_JAVA.
997         (xref_basetypes): Likewise.
998         (check_function_type): Likewise.
999         (finish_constructor_body): Likewise.
1000         * mangle.c (write_builtin_type): Don't handle TYPE_FOR_JAVA
1001         and java_*_type_node.
1002         (write_bare_function_type): Don't handle TYPE_FOR_JAVA.
1003         (write_java_integer_type_codes): Remove.
1004         * class.c (add_method): Don't handle TYPE_FOR_JAVA.
1005         (add_implicitly_declared_members, determine_key_method,
1006         finish_struct_1): Likewise.
1007         (push_lang_context): Don't handle lang_name_java.
1009 2016-10-03  Marek Polacek  <polacek@redhat.com>
1011         Core 903
1012         * typeck.c (cp_build_binary_op): Pass original operands to
1013         null_ptr_cst_p, not those after the default conversions.
1015 2016-10-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1017         * parser.c (cp_parser_condition): Fix a warning.
1019 2016-09-29  Jakub Jelinek  <jakub@redhat.com>
1021         Implement P0001R1 - C++17 removal of register storage class specifier
1022         * decl.c (cp_finish_decl): Diagnose register storage class
1023         on vars except when used in GNU global or local register variable
1024         extension.
1025         (grokdeclarator): Diagnose register storage class on parameters.
1026         * except.c (expand_start_catch_block): Set DECL_REGISTER only
1027         after cp_finish_decl call.
1029 2016-09-29  Marek Polacek  <polacek@redhat.com>
1031         * rtti.c (involves_incomplete_p): Add fall through comment.
1033 2016-09-28  Jakub Jelinek  <jakub@redhat.com>
1035         PR c++/77467
1036         * constexpr.c (enum constexpr_switch_state): New.
1037         (struct constexpr_ctx): Add css_state field.
1038         (label_matches): Add CTX and STMT arguments, remove I and
1039         DEFAULT_LABEL.  For CASE_LABEL_EXPR assert ctx->css_state != NULL,
1040         handle default labels according to css_state.
1041         (cxx_eval_statement_list): Remove statement skipping, label_matches
1042         and default_label handling code.
1043         (cxx_eval_loop_expr): Exit after first iteration even if
1044         switches (jump_target).
1045         (cxx_eval_switch_expr): Set up css_state field in ctx, if default
1046         label has been seen in the body, but no cases matched, evaluate
1047         the body second time.
1048         (cxx_eval_constant_expression): Handle stmt skipping and label_matches
1049         here.  Handle PREDICT_EXPR.  For MODIFY_EXPR or INIT_EXPR, assert
1050         statement is not skipped.  For COND_EXPR during skipping, don't
1051         evaluate condition, just the then block and if still skipping at the
1052         end also the else block.
1053         (cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer.
1054         (is_sub_constant_expr): Likewise.
1056 2016-09-27  Jakub Jelinek  <jakub@redhat.com>
1058         Implement P0018R3, C++17 lambda capture of *this by value as [=,*this]
1059         * parser.c (cp_parser_lambda_introducer): Formatting fix.  Pass
1060         true instead of false as by_reference_p to add_capture for 'this'.
1061         Parse '*this' simple-capture.
1062         * lambda.c (build_capture_proxy): Handle '*this' capture by value.
1063         (add_capture): Adjust function comment.  For id == this_identifier,
1064         treat by_reference_p as capturing '*this' by reference, i.e. 'this'
1065         by value, and !by_reference_p as capturing '*this' by value.
1066         (add_default_capture): For implicit 'this' capture, always pass
1067         by_reference_p true rather than false.
1069         PR c++/77722
1070         * cp-gimplify.c (cp_ubsan_maybe_instrument_return): Instrument also
1071         functions that have just a STATEMENT_LIST instead of BIND_EXPR, or
1072         BIND_EXPR with some statement rather than STATEMENT_LIST as body.
1074 2016-09-26  Nathan Sidwell  <nathan@acm.org>
1076         * init.c (expand_default_init): Fix } indentation.
1077         * method.c (process_subob_fn): Simplify control structure to
1078         remove gotos.
1079         (implicitly_declare_fn): Remove duplicated lambda ctor check.
1081 2016-09-26  Marek Polacek  <polacek@redhat.com>
1083         PR c/7652
1084         * parser.c (cp_parser_storage_class_specifier_opt): Add
1085         gcc_fallthrough.
1086         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
1087         (cp_parser_cache_defarg): Likewise.
1088         (cp_parser_omp_for_cond): Likewise.
1089         * semantics.c (finish_decltype_type): Likewise.
1090         * typeck.c (structural_comptypes): Likewise.
1091         (cp_build_binary_op): Likewise.
1092         (cp_build_modify_expr): Likewise.
1094 2016-09-26  Marek Polacek  <polacek@redhat.com>
1096         PR c/7652
1097         * constexpr.c (cxx_eval_internal_function): Handle IFN_FALLTHROUGH.
1098         (potential_constant_expression_1): Likewise.
1099         * constraint.cc (function_concept_check_p): Check fn for null.
1100         * parser.c (cp_parser_expression_statement): Handle attribute
1101         fallthrough.
1102         (cp_parser_statement): Likewise.
1103         (cp_parser_label_for_labeled_statement): Set FALLTHROUGH_LABEL_P on
1104         labels.
1105         (cp_parser_std_attribute): Handle fallthrough attribute.
1106         (cp_parser_check_std_attribute): Add %< %> quotes.
1107         * pt.c (tsubst_copy_and_build): Handle internal functions.
1108         (instantiation_dependent_scope_ref_p): Return if the expression is
1109         null.
1111 2016-09-24  Marek Polacek  <polacek@redhat.com>
1113         PR c/77490
1114         * typeck.c (cp_build_unary_op): Warn about bit not on expressions that
1115         have boolean value.
1117 2016-09-23  Jakub Jelinek  <jakub@redhat.com>
1119         Implement P0138R2, C++17 construction rules for enum class values
1120         * cp-tree.h (is_direct_enum_init): Declare.
1121         * decl.c (is_direct_enum_init): New function.
1122         (reshape_init): Use it.
1123         * typeck.c (convert_for_assignment): Likewise.
1125         * Make-lang.in (check-c++1z): Pass RUNTESTFLAGS down to
1126         make check-g++.
1128         * constexpr.c (call_stack): Remove unnecessary
1129         = vNULL initialization of file scope vec.
1131         * name-lookup.c (store_bindings, store_class_bindings): Don't
1132         initialize static local bindings_need_stored to vNULL.
1134         * typeck2.c (process_init_constructor_record): Use
1135         CONSTRUCTOR_NELTS (...) instead of
1136         vec_safe_length (CONSTRUCTOR_ELTS (...)).
1137         * decl.c (reshape_init_r): Likewise.
1138         (check_initializer): Likewise.
1140 2016-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
1142         PR c++/71979
1143         * class.c (build_base_path): Allow for lookup_base returning
1144         NULL_TREE.
1146 2016-09-21  Jason Merrill  <jason@redhat.com>
1148         Core 903
1149         * call.c (null_ptr_cst_p): Check char_type_p.
1151 2016-09-21  Jakub Jelinek  <jakub@redhat.com>
1153         PR c++/77651
1154         * init.c (build_new_1): Don't suggest to use -faligned-new if
1155         aligned_new_threshold is non-zero.
1156         (type_has_new_extended_alignment): Change aligned_new_threshhold
1157         to aligned_new_threshold.
1158         * call.c (second_parm_is_size_t, aligned_allocation_fn_p,
1159         aligned_deallocation_fn_p, build_op_delete_call): Likewise.
1160         * decl.c (cxx_init_decl_processing): Likewise.
1162 2016-09-20  Jakub Jelinek  <jakub@redhat.com>
1164         PR c++/77626
1165         * constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on
1166         FIELD_DECLs with error_mark_node type.  Remove useless break; after
1167         return.
1169         PR c++/77638
1170         * parser.c (cp_parser_template_declaration_after_parameter): For 2
1171         argument operator"" template set ok to false for
1172         parm == error_mark_node.
1174         PR c++/77637
1175         * parser.c (cp_parser_std_attribute_list): Reject ... without
1176         preceding attribute.
1178 2016-09-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1180         PR c++/77434
1181         * cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here.
1183 2016-09-16  Patrick Palka  <ppalka@gcc.gnu.org>
1185         PR c++/77639
1186         * parser.c (cp_parser_class_head): When
1187         processing_template_parmlist, don't assume that the
1188         class-head may start an explicit specialization.
1190 2016-09-16  Jakub Jelinek  <jakub@redhat.com>
1192         PR c++/77482
1193         * error.c (dump_simple_decl): Only check DECL_DECLARED_CONCEPT_P
1194         if DECL_LANG_SPECIFIC is non-NULL.  Fix up formatting.
1196         PR c++/77338
1197         * constexpr.c (cxx_eval_constant_expression) <case PARM_DECL>: Only
1198         call is_really_empty_class on complete types.
1200         PR c++/77375
1201         * class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any
1202         TYPE_HAS_MUTABLE_P for any bases.
1204 2016-09-16  Jason Merrill  <jason@redhat.com>
1206         * class.c (check_bases, set_one_vmethod_tm_attributes): Use
1207         least_bit_hwi.
1208         * decl.c (cxx_init_decl_processing): Use pow2p_hwi.
1209         * parser.c (cp_parser_cilk_simd_vectorlength): Use pow2p_hwi.
1211 2016-09-14  Jakub Jelinek  <jakub@redhat.com>
1213         PR c++/77549
1214         * name-lookup.c (consider_binding_level): Look through TREE_LIST
1215         and OVERLOAD.
1217 2016-09-14  Marek Polacek  <polacek@redhat.com>
1219         * typeck.c (cp_build_unary_op): Diagnose incrementing boolean
1220         expressions.  Tweak an error message.
1222 2016-09-14  Marek Polacek  <polacek@redhat.com>
1224         * cp-tree.h (cp_build_unary_op): Change nonconvert parameter type to
1225         bool.
1226         * decl2.c (one_static_initialization_or_destruction): Use true instead
1227         of 1.
1228         * init.c (build_vec_init): Use false instead of 0.
1229         * pt.c (tsubst_copy_and_build): Likewise.
1230         * semantics.c (simplify_loop_decl_cond): Likewise.
1231         * typeck.c (rationalize_conditional_expr): Likewise.
1232         (cp_build_binary_op): Use true instead of 1.
1233         (cp_build_unary_op): Change nonconvert parameter type to bool.  Use true
1234         instead of 1.
1235         (build_unary_op): Change nonconvert parameter type to bool.
1236         (unary_complex_lvalue): Use false instead of 0.
1238 2016-09-13  Jakub Jelinek  <jakub@redhat.com>
1240         Implement P0028R4, C++17 using attribute namespaces without repetition
1241         * parser.c (cp_parser_std_attribute): Add ATTR_NS argument.  Diagnose
1242         non-NULL ATTR_NS with scoped attribute token.  Handle non-NULL
1243         ATTR_NS with non-scoped attribute tokens.  Allow named ops in
1244         identifier after ::.
1245         (cp_parser_std_attribute_list): Add ATTR_NS argument, pass it down
1246         to cp_parser_std_attribute calls.
1247         (cp_parser_std_attribute_spec): Parse optional C++17
1248         attribute-using-prefix, adjust grammar in function comment.
1250         PR c++/77553
1251         * constexpr.c (cxx_fold_pointer_plus_expression): New function.
1252         (cxx_eval_binary_expression): Use it for POINTER_PLUS_EXPR.
1253         (cxx_eval_pointer_plus_expression): Remove.
1254         (cxx_eval_constant_expression) <case POINTER_PLUS_EXPR>: Don't
1255         call cxx_eval_pointer_plus_expression.
1257 2016-09-13  David Malcolm  <dmalcolm@redhat.com>
1259         * parser.c (cp_parser_class_specifier_1): Update for renaming of
1260         add_fixit_insert to add_fixit_insert_before.
1261         (cp_parser_class_head): Likewise.
1263 2016-09-12  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1265         PR c++/77496
1266         * call.c (build_conditional_expr_1): Call warn_for_omitted_condop.
1267         * class.c (instantiate_type): Look through the SAVE_EXPR.
1269 2016-09-09  Jason Merrill  <jason@redhat.com>
1271         Implement P0035R4, C++17 new of over-aligned types.
1272         * cp-tree.h (enum cp_tree_index): Add CPTI_ALIGN_TYPE.
1273         (align_type_node): New macro.
1274         * call.c (build_operator_new_call): Handle C++17 aligned new.
1275         (second_parm_is_size_t, build_op_delete_call): Likewise.
1276         (non_placement_deallocation_fn_p): Likewise. Rename to
1277         usual_deallocation_fn_p.
1278         (aligned_allocation_fn_p, aligned_deallocation_fn_p): New.
1279         * decl.c (cxx_init_decl_processing): Add aligned new support.
1280         * init.c (type_has_new_extended_alignment): New.
1281         (build_new_1): Handle aligned new.
1282         * tree.c (vec_copy_and_insert): New.
1284 2016-09-02  Jakub Jelinek  <jakub@redhat.com>
1286         PR sanitizer/77396
1287         * decl2.c (do_static_initialization_or_destruction): Only
1288         call asan_dynamic_init_call if INITP is true.
1290 2016-09-01  Martin Sebor  <msebor@redhat.com>
1292         * mangle.c: Increase buffer size to guarantee it fits the output
1293         of the formatted function regardless of its arguments.
1295 2016-09-01  Marek Polacek  <polacek@redhat.com>
1297         PR c/7652
1298         * error.c (dump_type): Fix falls through comment.
1299         (dump_decl): Likewise.
1300         (dump_expr): Likewise.
1302 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
1304         * parser.c (cp_parser_enclosed_template_argument_list): Add fix-it
1305         hint to ">>" within nested template argument list error.
1307 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
1309         * name-lookup.c (suggest_alternatives_for): Use add_fixit_replace
1310         rather than add_fixit_misspelled_id.
1311         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
1313 2016-08-29  Jason Merrill  <jason@redhat.com>
1315         PR c++/77379
1316         * mangle.c (maybe_check_abi_tags): Add version parm, handle thunks.
1317         (mangle_thunk): Add thunk parameter.
1318         * method.c (finish_thunk): Pass it.
1319         * cp-tree.h: Declare it.
1321 2016-08-15  Jason Merrill  <jason@redhat.com>
1323         Avoid calling a trivial default constructor.
1324         * class.c (default_ctor_p): New.
1325         (in_class_defaulted_default_constructor): Use it.
1326         (type_has_non_user_provided_default_constructor): Use it.
1327         * call.c (build_over_call): Handle trivial default constructor.
1328         * cp-tree.h: Declare default_ctor_p.
1330         PR c++/57728
1331         * pt.c (do_type_instantiation): Don't mess with non-user-provided
1332         member functions.
1334 2016-08-25  Marek Polacek  <polacek@redhat.com>
1336         * parser.c (cp_parser_binary_expression): Pass LHS to
1337         warn_logical_not_parentheses.
1339 2016-08-18  Marek Polacek  <polacek@redhat.com>
1341         PR c/7652
1342         * call.c (add_builtin_candidate): Add gcc_fallthrough.
1343         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
1344         * parser.c (cp_parser_skip_to_end_of_statement): Likewise.
1345         (cp_parser_cache_defarg): Likewise.
1347 2016-08-12  Marek Polacek  <polacek@redhat.com>
1349         PR c/7652
1350         * call.c (add_builtin_candidate): Add FALLTHRU.
1351         (build_integral_nontype_arg_conv): Adjust fall through comment.
1352         (build_new_op_1): Add FALLTHRU.
1353         (convert_like_real): Adjust fall through comment.
1354         * class.c (fixed_type_or_null): Likewise.
1355         * constexpr.c (cxx_eval_constant_expression): Likewise.
1356         (potential_constant_expression_1): Likewise.  Add FALLTHRU.
1357         * cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment.
1358         (cp_fold): Add FALLTHRU.
1359         * cvt.c (build_expr_type_conversion): Adjust fall through comment.
1360         * cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU.
1361         (pp_cxx_qualified_id): Likewise.
1362         (cxx_pretty_printer::constant): Adjust fall through comment.
1363         (cxx_pretty_printer::primary_expression): Add FALLTHRU.
1364         (pp_cxx_pm_expression): Adjust fall through comment.
1365         (cxx_pretty_printer::expression): Add FALLTHRU.
1366         (cxx_pretty_printer::declaration_specifiers): Reformat code.
1367         (pp_cxx_type_specifier_seq): Adjust fall through comment.
1368         (pp_cxx_ptr_operator): Likewise.  Add FALLTHRU.
1369         * error.c (dump_type): Adjust fall through comment.
1370         (dump_decl): Likewise.
1371         * mangle.c (write_type): Likewise.
1372         * method.c (synthesized_method_walk): Add FALLTHRU.
1373         * name-lookup.c (arg_assoc_type): Likewise.
1374         * parser.c (cp_lexer_print_token): Adjust fall through comment.
1375         (cp_parser_primary_expression): Add FALLTHRU.
1376         (cp_parser_operator): Likewise.
1377         * pt.c (find_parameter_packs_r): Likewise.
1378         (tsubst_aggr_type): Adjust fall through comment.
1379         * semantics.c (finish_omp_clauses): Add FALLTHRU.
1380         * tree.c (lvalue_kind): Likewise.
1382 2016-08-12  Alexandre Oliva  <aoliva@redhat.com>
1384         PR debug/63240
1385         * cp-objcp-common.c (cp_function_decl_defaulted): New.
1386         (cp_function_decl_explicit_p): Const_tree-ify.
1387         (cp_function_decl_deleted_p): Likewise.
1388         * cp-objcp-common.h (cp_function_decl_defaulted): Declare.
1389         (cp_function_decl_explicit_p): Const_tree-ify.
1390         (cp_function_decl_deleted_p): Likewise.
1391         (LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine.
1393 2016-08-11  Jakub Jelinek  <jakub@redhat.com>
1395         PR c++/72868
1396         * constexpr.c (label_matches): Handle case range expressions.
1398 2016-08-11  Jason Merrill  <jason@redhat.com>
1400         PR c++/73456
1401         * logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION.
1403 2016-08-10  Jason Merrill  <jason@redhat.com>
1405         Implement C++17 constexpr if.
1406         * cp-tree.h (IF_STMT_CONSTEXPR_P): New.
1407         * name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it.
1408         * parser.h (struct cp_parser): Add in_discarded_stmt field.
1409         * parser.c (cp_parser_selection_statement): Handle 'if constexpr'.
1410         (cp_parser_jump_statement): Avoid deducing from a discarded return.
1411         * pt.c (tsubst_expr): Only instantiate taken branch of constexpr if.
1412         * semantics.c (begin_if_stmt): Set the binding level this_entity.
1413         (finish_if_stmt_cond): Require the condition of a
1414         constexpr if to be constant.
1415         * decl.c (level_for_constexpr_if): New.
1416         (named_label_entry): Add in_constexpr_if field.
1417         (poplevel_named_label_1): Set it.
1418         (check_goto): Check it.
1419         (check_previous_goto_1): Check level_for_constexpr_if.
1421 2016-08-09  Jason Merrill  <jason@redhat.com>
1423         PR c++/68703
1424         * decl2.c (any_dependent_type_attributes_p): New.
1425         * pt.c (dependent_type_p_r, type_dependent_expression_p): Check it.
1426         * semantics.c (finish_id_expression): Check it.
1427         * typeck.c (finish_class_member_access_expr): Check it.
1429         PR c++/71712
1430         * class.c (check_abi_tags): Don't duplicate tags for conversion ops.
1432         Adjust mangling of ABI tags on class template member functions.
1433         * class.c (missing_abi_tags): New.
1434         (check_abi_tags): Don't check template. Add just_checking mode.
1435         * mangle.c (abi_flag_at_least, any_abi_below, equal_abi_tags): New.
1436         (sorted_abi_tags): Split out from write_abi_tags.
1437         (struct releasing_vec): New.
1438         (write_unqualified_name): Only look for the primary
1439         template for types.  Implement backward compatibility.
1441         PR c++/72849
1442         * constexpr.c (cxx_eval_constant_expression): Check
1443         COMPLETE_TYPE_P before calling is_really_empty_class.
1444         * class.c (is_really_empty_class): Don't call complete_type.
1446         PR c++/56701
1447         * typeck.c (cp_build_addr_expr_1): Remove special *this handling.
1449 2016-08-09  Jakub Jelinek  <jakub@redhat.com>
1451         PR c++/72809
1452         * rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for
1453         builtin aggregate types without TYPE_BINFO.
1455 2016-08-08  Jason Merrill  <jason@redhat.com>
1457         Implement C++17 constexpr lambda.
1458         * class.c (finalize_literal_type_property): Handle lambdas.
1459         * constexpr.c (is_valid_constexpr_fn): Likewise.  No longer static.
1460         (explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle
1461         lambdas.
1462         (cxx_eval_constant_expression): Handle capture proxy.
1463         (var_in_constexpr_fn): Don't check for C++14.
1464         (var_in_maybe_constexpr_fn): New.
1465         (potential_constant_expression_1): Use it.  Check DECL_EXPR for
1466         declarations not allowed in constexpr function.  Handle
1467         STATIC_ASSERT, RANGE_FOR_STMT.
1468         * decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn.
1469         (finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members.
1470         * lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P.
1471         (maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location.
1472         (lambda_static_thunk_p): New.
1473         * parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR.
1474         (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator.
1475         (cp_parser_decl_specifier_seq): Handle it.
1476         (cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq.
1477         * pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P.
1478         (tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P.
1479         * error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS.
1480         (dump_expr) [FUNCTION_DECL]: Pass it.
1482 2016-08-08  Jason Merrill  <jason@redhat.com>
1484         PR c++/67131
1485         * class.c (is_really_empty_class): Call complete_type.
1486         * constexpr.c (cxx_eval_constant_expression): Check
1487         is_really_empty_class.
1488         (potential_constant_expression_1): Likewise.  Check for error type.
1490 2016-08-08  Jakub Jelinek  <jakub@redhat.com>
1492         PR c++/58706
1493         * parser.c: Include tree-iterator.h.
1494         (cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init
1495         to FOR_BLOCK.
1496         (cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK
1497         entries.
1499 2016-08-06  Jonathan Wakely  <jwakely@redhat.com>
1501         * call.c (convert_like_real): Harmonize diagnostics for invalid
1502         reference binding.
1504 2016-08-05  Martin Sebor  <msebor@redhat.com>
1506         * constexpr.c (cxx_eval_store_expression): Remove hyphen from
1507         the spelling of "constant-expression" in diagnostic messages
1508         for consistency.
1509         (cxx_eval_constant_expression): Same.
1510         (cxx_eval_outermost_constant_expr): Same.
1511         (potential_constant_expression_1): Same.
1513 2016-08-05  Nathan Sidwell  <nathan@acm.org>
1515         PR c++/68724
1516         * pt.c (unify): TRAIT_EXPR is an expr.
1518 2016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
1520         PR c++/72800
1521         * lambda.c (add_capture): Check lambda_capture_field_type return
1522         value for error_mark_node.
1524 2016-08-04  Patrick Palka  <ppalka@gcc.gnu.org>
1526         PR c++/72759
1527         * pt.c (tsubst_qualified_id): Return error_mark_node if
1528         template_args is error_mark_node.
1530 2016-08-04  Jason Merrill  <jason@redhat.com>
1532         PR c++/72415
1533         * pt.c (tsubst_pack_expansion): Pull a single pack expansion out
1534         of the TREE_VEC.
1536         * cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P.
1537         (TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS.
1538         * class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c,
1539         name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust.
1541         PR c++/72796
1542         * typeck.c (finish_class_member_access_expr): Avoid stripping
1543         SCOPE_REF to dependent base.
1545 2016-08-04  Thomas Schwinge  <thomas@codesourcery.com>
1547         * parser.c (cp_ensure_no_oacc_routine): Improve diagnostics.
1548         (cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics.
1549         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
1550         Simplify code, and improve diagnostics.
1551         (cp_parser_oacc_routine): Likewise.  Move pragma context
1552         checking...
1553         (cp_parser_pragma): ... here.
1555         * parser.h (struct cp_omp_declare_simd_data): New.
1556         (struct cp_parser): Use it for oacc_routine member.
1557         * parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine)
1558         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
1559         Use it.  Simplify code.
1560         (cp_parser_new): Initialize all members pointing to special
1561         parsing data structures.
1562         (cp_parser_cilk_simd_fn_vector_attrs): Initialize
1563         parser->cilk_simd_fn_info->clauses.
1564         (cp_parser_omp_declare_simd): Initialize
1565         parser->omp_declare_simd->clauses.
1566         (cp_parser_late_parsing_omp_declare_simd): Simplify code.
1568 2016-08-04  Marek Polacek  <polacek@redhat.com>
1570         PR c++/70229
1571         * constexpr.c (check_constexpr_ctor_body_1): Allow typedef
1572         declarations.
1574 2016-08-01  Jason Merrill  <jason@redhat.com>
1576         * mangle.c (mangle_decl): Warn about mangled name change even if
1577         DECL_REALLY_EXTERN.
1579         * mangle.c (get_abi_tags): New.
1580         (find_substitution, write_unqualified_name, write_abi_tags)
1581         (maybe_check_abi_tags): Use it.
1583         * mangle.c (mangle_decl): Fix mangled name change warning.
1585         PR c++/72766
1586         * constexpr.c (cxx_eval_pointer_plus_expression): Check constancy
1587         of nelts.
1588         * cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in
1589         C++11 and up.
1591 2016-07-30  Martin Sebor  <msebor@redhat.com>
1593         PR c++/60760
1594         PR c++/71091
1595         * constexpr.c (cxx_eval_binary_expression): Reject invalid expressions
1596         involving null pointers.
1597         (cxx_eval_component_reference): Reject null pointer dereferences.
1598         (cxx_eval_indirect_ref): Reject indirecting through null pointers.
1599         (cxx_eval_constant_expression): Reject invalid expressions involving
1600         null pointers.
1602 2016-07-29  Marek Polacek  <polacek@redhat.com>
1604         PR c/71926
1605         * semantics.c (maybe_convert_cond): Use the location of COND for the
1606         parentheses warning.
1608 2016-07-29  Jason Merrill  <jason@redhat.com>
1610         * decl.c (build_enumerator): Tweak diagnostic.
1612         PR c++/72457
1613         * init.c (expand_aggr_init_1): Only handle value-init of bases.
1614         * constexpr.c (build_data_member_initialization): Handle multiple
1615         initializers for the same field.
1617 2016-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
1619         PR c++/71665
1620         * decl.c (build_enumerator): Check the type of the enumerator before
1621         calling cxx_constant_value.
1623 2016-07-27  Jason Merrill  <jason@redhat.com>
1625         PR c++/71747
1626         * pt.c (get_partial_spec_bindings): Replace tparms and spec_args
1627         parameters with spec_tmpl.  Call push_tinst_level.
1628         (most_specialized_partial_spec): Adjust.
1629         (more_specialized_partial_spec): Adjust.
1631 2016-07-25  Jason Merrill  <jason@redhat.com>
1633         PR c++/65970
1634         * cp-gimplify.c (genericize_cp_loop): Revert location change.
1636         PR c++/71837
1637         * lambda.c (add_capture): Leave a pack expansion in a TREE_LIST.
1638         (build_lambda_object): Call build_x_compound_expr_from_list.
1639         * pt.c (tsubst) [DECLTYPE_TYPE]: Likewise.
1641         PR c++/71833
1642         PR c++/54440
1643         * pt.c (coerce_template_parameter_pack): Fix logic for
1644         pack index.
1646         PR c++/65970
1647         * constexpr.c (cxx_eval_loop_expr): Count iterations.
1648         * cp-gimplify.c (genericize_cp_loop): Use start_locus even for
1649         infinite loops.
1651         PR c++/71972
1652         * constexpr.c (cxx_eval_array_reference): Handle looking for the
1653         value of an element we're currently modifying.
1655 2016-07-24  Jason Merrill  <jason@redhat.com>
1657         PR c++/71515
1658         * pt.c (resolve_typename_type): Try to avoid calling
1659         currently_open_class.
1661 2016-07-23  Jason Merrill  <jason@redhat.com>
1663         PR c++/66617
1664         * call.c (add_list_candidates): Handle VTT parm.
1665         (build_new_method_call_1): Likewise.
1667         PR c++/55922
1668         PR c++/63151
1669         * init.c (expand_aggr_init_1): Handle list-initialization from {}.
1671         PR c++/70709
1672         * class.c (walk_subobject_offsets): Handle 0-length array.
1674         PR c++/70778
1675         * pt.c (tsubst): Also substitute into the template of a
1676         BOUND_TEMPLATE_TEMPLATE_PARM.
1678         PR c++/71738
1679         * pt.c (lookup_template_class_1): Handle getting template from tsubst.
1681         PR c++/71350
1682         * decl.c (reshape_init_r): Check complain for missing braces warning.
1684 2016-07-22  Jason Merrill  <jason@redhat.com>
1686         PR c++/71576
1687         * call.c (convert_like_real): Use lvalue_kind.
1689         PR c++/71748
1690         PR c++/52746
1691         * pt.c (tsubst_baselink): Call
1692         adjust_result_of_qualified_name_lookup for unqualified
1693         destructors.
1695 2016-07-21  Jason Merrill  <jason@redhat.com>
1697         PR c++/69223
1698         * semantics.c (apply_deduced_return_type): Call
1699         complete_type_or_else before building the new RESULT_DECL.
1701         PR c++/71274
1702         * decl2.c (maybe_instantiate_decl): Split out from mark_used.
1703         (decl_constant_var_p): Use it instead.
1705         PR c++/71630
1706         * pt.c (instantiate_decl): Fix pattern_defined for namespace scope
1707         variable templates.
1709         PR c++/71913
1710         * call.c (unsafe_copy_elision_p): It's OK to elide when
1711         initializing an unknown object.
1713         * call.c (build_over_call): Check unsafe_copy_elision_p even for
1714         trivial constructors.
1715         * method.c (do_build_copy_constructor): Don't copy tail padding
1716         even in a trivial constructor.
1718 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
1720         PR c++/71728
1721         * constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>:
1722         Replace assert with test, return false if the goto isn't break
1723         or continue.  Formatting fix.
1725 2016-07-21  Richard Biener  <rguenther@suse.de>
1727         * vtable-class-hierarchy.c (vtv_generate_init_routine): Set
1728         DECL_IGNORED_P.
1730 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
1732         PR c++/71941
1733         * cp-gimplify.c (cp_genericize): For nested cp_genericize calls
1734         save/restore bc_label array.
1736 2016-07-21  Jason Merrill  <jason@redhat.com>
1738         PR c++/70781
1739         * parser.c (cp_parser_lambda_expression): Unset OK if there was an
1740         error parsing the lambda-declarator.
1742         PR c++/71896
1743         * constexpr.c (cxx_eval_binary_expression): Handle comparison
1744         between lowered and unlowered PTRMEM_CST.
1746         PR c++/65168
1747         * typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr.
1748         Don't set c_inhibit_evaluation_warnings.
1750         PR c++/71121
1751         * cp-gimplify.c (cp_fully_fold): First call maybe_constant_value.
1753 2016-07-21  Andrew Sutton  <andrew.n.sutton@gmail.com>
1754             Jason Merrill  <jason@redhat.com>
1756         Improving concepts performance and diagnostics.
1757         PR c++/67565
1758         PR c++/67579
1759         PR c++/71843
1760         * cp-tree.def (CHECK_CONSTR): New.
1761         * cp-tree.h (CHECK_CONSTR_CONCEPT): New.
1762         (CHECK_CONSTR_ARGS): New.
1763         * constraint.cc (make_predicate_constraint): Remove in favor of
1764         normalize_expression.
1765         (resolve_constraint_check): Actually return error_mark_node when
1766         resolution fails.
1767         (resolve_variable_concept_check): Perform coercion as if processing
1768         a template. Also return errors on resolution failure.
1769         (lift_*): Remove all of these functions. Don't unnecessarily inline
1770         concepts.
1771         (learn_*): Add facilities to memoize implications for subsumption
1772         during normalization.
1773         (expanding_concept): New.
1774         (expand_concept): New. Return the inlined and normalized definition
1775         of a concept when needed.
1776         (transform_*, xform_*): Rename to normalize_* to better reflect the
1777         responsibility of those functions.
1778         (normalize_template_id_expression): Check for non-boolean operands
1779         when possible. Generate check constraints instead of normal variable
1780         references.
1781         (normalize_call_expression): Report errors when resolution fails.
1782         (check_for_logical_overloads): Rewrite this check to more accurately
1783         report the error.
1784         (normalize_atom): Check for overloaded calls and invalid types before
1785         determining if the expression refers to a concept.
1786         (build_constraints): Don't cache normalized constraints or decomposed
1787         assumptions.
1788         (finish_shorthand_constraint): Return a normalized expression instead
1789         of a predicate constraint.
1790         (finish_template_introduction): Same.
1791         (placeholder_extract_concept_and_args): Rewrite this since we only
1792         ever get check constraints here.
1793         (equivalent_placeholder_constraints): Rewrite in terms of check
1794         constraints, and handle error_mark_nodes correctly.
1795         (tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr)
1796         (tsubst_implicit_conversion_constr)
1797         (tsubst_argument_deduction_constr, tsubst_exception_constr)
1798         (tsubst_parameterized_constraint, tsubst_constraint): New.
1799         (tsbust_conjunection): Replace with tsubst_logical_operator and
1800         actually generate the right kind of constraint.
1801         (tsubst_requirement_body): Reverse the order of substituted arguments
1802         so that they appear in the order written (helps diagnostics).
1803         (satisfy_check_constraint): New.
1804         (satisfy_conjunction): Simplify.
1805         (satisfy_disjunction): Same.
1806         (satisfy_constraint_1): Handle check constraints.
1807         (eval_constr): New (private) global state.
1808         (evaluating_constraints_sentinel): New. Manages eval_constr.
1809         (satisfy_constraint): Add timing variables.
1810         (satisfy_associated_constraints): Add hooks for memoization.
1811         (evaluate_function_concept): Build a check constraint instead of
1812         normalizing its definition.
1813         (evaluate_variable_concept): Same.
1814         (evaluate_constraint_expression): Normalize, but in the current
1815         declaration processing context.
1816         (evaluating_constraints_p): New.
1817         (elide_constraint_failure_p): Actually emit constraint_thresh errors.
1818         (diagnose_*): Remove artificial indentation. Add a new parameter to
1819         each that tracks the current (complete) constraint prior to any
1820         substitutions.
1821         (diagnose_expression): Removed.
1822         (diagnose_call_expression): Same.
1823         (diagnose_template_id): Same.
1824         (diagnose_template_id): New.
1825         (diagnose_logical_constraint): New.
1826         (diagnose_expression_constraint): Show the original expression.
1827         (diagnose_type_constraint): Show the original type.
1828         (diagnose_implicit_conversion_constraint): Be specific about
1829         failures, don't re-diagnose a known-to-be-failed substitutions,
1830         and manage elisions properly.
1831         (diagnose_argument_deduction_constraint): Same.
1832         (diagnose_exception_constraint): Same.
1833         (diagnose_parameterized_constraint): Same.
1834         (constraint_p): Allow EXPR_PACK_EXPANSION.
1835         * logic.cc (next_by_distance): Removed. No longer used.
1836         (any_p): Renamed from any_of.
1837         (term_entry, term_hasher): New.
1838         (term_list): Rewrite to include a hash table for quick lookup.
1839         Also, make less stateful.
1840         (proof_state): Extend to allow goals to be discharged once
1841         satisfied.
1842         (non_atomic_constraint_p): New.
1843         (any_non_atomic_constraints_p): New.
1844         (...rest...): Previous implementation completely replaced with an
1845         iterative algorithm that opportunistically prunes the search space
1846         before committing to using more memory.
1847         * parser.c: (cp_parser_type_parameter): Normalize constraints.
1848         (cp_parser_explicit_template_declaration): Same.
1849         * pt.c: (finish_template_variable): Be less redundant with this error
1850         message.
1851         (template_args_equal): No longer static.
1852         (tsubst_decl): Don't try to find specializations of variables that
1853         have already been instantiated.
1854         (build_non_dependent_expr): Avoid infinite recursion during concept
1855         expansion.
1856         (make_constrained_auto): Normalize constraints.
1857         (do_auto_deduction): When doing auto deduction from a
1858         partial-concept-id, be sure to include the explicit args checking
1859         the constraints.
1860         (constraint_sat_*): New. Memoize satisfied constraints.
1861         (concept_spec_*): New. Memoize expressions associated with a concept
1862         specialization.
1863         (constraint_memos, concept_memos): New.
1864         (lookup_constraint_satisfaction, memoize_constraint_satisfaction): New.
1865         (lookup_concept_satisfaction, memoize_concept_satisfaction): New.
1866         (get_concept_expansion, save_concept_expansion): New.
1867         (hash_subsumption_args): New.
1868         (comp_subsumption_args): New.
1869         (subsumption_*): New. Memoize parts of the subsumption relation.
1870         (lookup_subsumption_result, save_subsumption_result): New.
1871         (init_constraint_processing): Initialize memo tables.
1872         (get_constraints): Shortcut if !flag_concepts.
1873         * decl.c (grokfndecl): Normalize constraints.
1874         * error.c (dump_simple_decl): Print "concept" when appropriate.
1875         (dump_function_decl): Same.
1876         (dump_template_decl): Don't write requirements when we're not
1877         printing the header.
1878         (dump_expr): Handle fold expressions.
1879         * cxx-pretty-print.c (cxx_pretty_printer::expression): Handle
1880         fold expressions.
1881         (get_fold_operator): New.
1882         (pp_cxx_unary_left_fold_expression): New.
1883         (pp_cxx_unary_right_fold_expression): New.
1884         (pp_cxx_binary_fold_expression): New.
1885         (pp_cxx_check_constraint): New.
1886         (pp_cxx_*_constraint): Rewrite the grammar of internal constraints
1887         to make them easier to read when debugging.
1888         * search.c (accessible_p): Don't shortcut when evaluating constraints.
1889         * tree.c (cp_tree_equal): Handle CHECK_CONSTR.
1891 2016-07-20  David Malcolm  <dmalcolm@redhat.com>
1893         PR c/70339
1894         PR c/71858
1895         * name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h,
1896         and parser.h.
1897         (suggest_alternatives_for): If no candidates are found, try
1898         lookup_name_fuzzy and report if if finds a suggestion.
1899         (consider_binding_level): New function.
1900         (lookup_name_fuzzy) New function.
1901         * parser.c: Include gcc-rich-location.h.
1902         (cp_lexer_next_token_is_decl_specifier_keyword): Move most of
1903         logic into...
1904         (cp_keyword_starts_decl_specifier_p): ...this new function.
1905         (cp_parser_diagnose_invalid_type_name): When issuing
1906         "does not name a type" errors, attempt to make a suggestion using
1907         lookup_name_fuzzy.
1908         * parser.h (cp_keyword_starts_decl_specifier_p): New prototype.
1909         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject
1910         types that are not CLASS_TYPE_P, rather than rejecting individual
1911         tree codes.
1913 2016-07-20  Jakub Jelinek  <jakub@redhat.com>
1915         PR c++/71909
1916         * parser.c (cp_parser_save_member_function_body): Consume
1917         __transaction_relaxed or __transaction_atomic with optional
1918         attribute.  Only skip catch with block if try keyword is seen.
1920         PR c++/50060
1921         * constexpr.c (cxx_eval_builtin_function_call): Pass false as lval
1922         when evaluating call arguments.  Use fold_builtin_call_array instead
1923         of fold_build_call_array_loc, return t if it returns NULL.  Otherwise
1924         check the result with potential_constant_expression and call
1925         cxx_eval_constant_expression on it.
1927 2016-07-19  Jason Merrill  <jason@redhat.com>
1929         PR c++/67164
1930         * pt.c (iterative_hash_template_arg, template_args_equal): Don't
1931         handle ARGUMENT_PACK_SELECT.
1933 2016-07-18  Jakub Jelinek  <jakub@redhat.com>
1935         PR c++/70869
1936         PR c++/71054
1937         * cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change.
1938         * tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL
1939         non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and
1940         DECL_SIZE_UNIT.
1942         PR c++/71835
1943         * call.c (build_op_call_1): Use convert_like_with_context only
1944         if cand->fn is a decl.
1946         PR c++/71828
1947         * constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
1948         For lval don't use cxx_eval_unary_expression and instead recurse
1949         and if needed rebuild the reference.
1951         PR c++/71826
1952         * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.
1954         PR c++/71822
1955         * cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively
1956         fold *expr_p before genericizing it.
1958         PR c++/71871
1959         * typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change.
1961 2016-07-15  Jason Merrill  <jason@redhat.com>
1963         PR c++/71495
1964         * call.c (convert_like_real): Mask complain.
1965         * semantics.c (perform_koenig_lookup): Likewise.
1967         PR c++/71092
1968         * constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph
1969         threw away DECL_SAVED_TREE.
1971         PR c++/71117
1972         Core 2189
1973         * call.c (add_template_conv_candidate): Disable if there are
1974         viable candidates.
1976         PR c++/71511
1977         * typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE.
1979         PR c++/71513
1980         * pt.c (tsubst_attributes): Fix loop logic.
1982         PR c++/71604
1983         PR c++/54430
1984         * parser.c (cp_parser_range_for): Modify IDENTIFIER_BINDING directly.
1985         (cp_parser_simple_declaration): Diagnose type definition in
1986         for-range-declaration.
1988         PR c++/71711
1989         * operators.def: Add *_FOLD_EXPR.
1990         * cp-tree.h (FOLD_EXPR_P): Parenthesize.
1991         * mangle.c (write_expression): Handle fold-expressions.
1992         * pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold)
1993         (tsubst_unary_right_fold, tsubst_binary_right_fold): Handle
1994         partial instantiation.
1996         PR c++/71814
1997         * mangle.c (write_expression): Handle sizeof... an argument pack.
1999         PR c++/71718
2000         * pt.c (push_tinst_level_loc): Set at_eof before fatal_error.
2002         PR c++/70824
2003         * init.c (constant_value_1): Don't instantiated DECL_INITIAL of
2004         artificial variables.
2006 2016-07-15  Cesar Philippidis  <cesar@codesourcery.com>
2008         * parser.c (cp_parser_oacc_declare): Don't scan for
2009         GOMP_MAP_POINTER.
2010         * semantics.c (handle_omp_array_sections): Mark data clauses with
2011         GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having
2012         zero-length subarrays.
2014 2016-07-11  Jason Merrill  <jason@redhat.com>
2016         * decl.c (store_parm_decls): Remove check for void parm.
2018 2016-07-08  Jason Merrill  <jason@redhat.com>
2020         * cp-tree.h: Unpoison lvalue_p.
2021         * call.c, class.c, constexpr.c, cvt.c, init.c, lambda.c, pt.c,
2022         tree.c, typeck.c, typeck2.c: Use lvalue_p instead of
2023         real_lvalue_p.
2025         * tree.c (obvalue_p): Rename from lvalue_p.
2026         (lvalue_p): Define for c-common.
2027         * call.c, cp-tree.h, cvt.c, init.c: Adjust.
2028         * typeck.c: Adjust.
2029         (cp_build_addr_expr_1): Remove obsolete code.
2031         * tree.c (glvalue_p): Rename from lvalue_or_rvalue_with_address_p.
2032         * call.c, cp-tree.h, typeck.c: Adjust.
2034         * lambda.c (maybe_add_lambda_conv_op): Fix null object argument.
2036         P0145R2: Refining Expression Order for C++.
2037         * cp-gimplify.c (lvalue_has_side_effects): New.
2038         (cp_gimplify_expr): Implement assignment ordering.
2039         * call.c (op_is_ordered, build_over_call): Adjust for
2040         -fargs-in-order renaming to -fstrong-eval-order.
2041         * cp-gimplify.c (cp_gimplify_expr): Likewise.
2043 2016-07-07  Jakub Jelinek  <jakub@redhat.com>
2044             Kai Tietz  <ktietz70@googlemail.com>
2046         PR c++/70869
2047         PR c++/71054
2048         * cp-gimplify.c (cp_genericize_r): For DECL_EXPR for non-static
2049         artificial vars, genericize their initializers.
2051 2016-07-05  David Malcolm  <dmalcolm@redhat.com>
2053         PR c++/62314
2054         * parser.c (cp_parser_class_specifier_1): When reporting
2055         missing semicolons, use a fixit-hint to suggest insertion
2056         of a semicolon immediately after the closing brace,
2057         offsetting the reported column accordingly.
2059 2016-07-04  Jan Beulich  <jbeulich@suse.com>
2061         * lang-specs.h ("@c++-header"): Conditionalize "-o".
2063 2016-06-29  Thomas Schwinge  <thomas@codesourcery.com>
2065         * parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>:
2066         Move pragma context checking into...
2067         (cp_parser_omp_cancellation_point): ... here, and improve
2068         diagnostic messages.
2069         * semantics.c (finish_omp_cancel, finish_omp_cancellation_point):
2070         Improve diagnostic messages.
2072 2016-06-28  Jakub Jelinek  <jakub@redhat.com>
2074         * Make-lang.in: Don't cat ../stage_current if it does not exist.
2076 2016-06-24  Jason Merrill  <jason@redhat.com>
2078         P0145R2: Refining Expression Order for C++.
2079         * typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS.
2081         * tree.c (get_target_expr_sfinae): Handle bit-fields.
2082         (build_target_expr): Call mark_rvalue_use.
2084 2016-06-24  Jakub Jelinek  <jakub@redhat.com>
2086         * call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
2087         (build_over_call): For magic == 3, do no conversion only on 3rd
2088         argument.
2090 2016-06-23  Andi Kleen  <ak@linux.intel.com>
2092         * Make-lang.in: Add support for autofdo.
2094 2016-06-21  Jason Merrill  <jason@redhat.com>
2096         * constraint.cc (constraints_satisfied_p): Keep as many levels of
2097         args as our template has levels of parms.
2099         * pt.c (template_parm_outer_level, uses_outer_template_parms): New.
2100         (type_dependent_expression_p): Use uses_outer_template_parms.
2102 2016-06-20  David Malcolm  <dmalcolm@redhat.com>
2104         * parser.c (cp_parser_string_literal): Convert non-standard
2105         concatenation error to directly use a rich_location, and
2106         use that to add the location of the first literal to the
2107         diagnostic.
2109 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
2111         * decl.c (validate_constexpr_redeclaration): Change pair of errors
2112         to error + inform.
2113         * error.c (dump_function_decl): Save the constexpr specifier too.
2115 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
2117         * tree.c (builtin_valid_in_constant_expr_p): Test for
2118         DECL_BUILT_IN_CLASS equal to BUILT_IN_NORMAL instead of just
2119         DECL_BUILT_IN.
2120         (bot_manip): Likewise.
2121         * call.c (magic_varargs_p): Likewise.
2123 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
2125         * decl.c (grokfndecl): Change pair of errors to error + inform.
2127 2016-06-17  Jason Merrill  <jason@redhat.com>
2129         PR c++/71209
2130         * typeck.c (finish_class_member_access_expr): Avoid "not a base"
2131         warning when there are dependent bases.
2133 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
2135         * semantics.c (handle_omp_array_sections_1): Don't ICE when
2136         processing_template_decl when checking for bitfields and unions.
2137         Look through REFERENCE_REF_P as base of COMPONENT_REF.
2138         (finish_omp_clauses): Look through REFERENCE_REF_P even for
2139         array sections with COMPONENT_REF bases.
2141 2016-06-16  Jakub Jelinek  <jakub@redhat.com>
2143         * parser.c (cp_parser_omp_var_list_no_open): Call
2144         convert_from_reference before cp_parser_postfix_dot_deref_expression.
2145         * semantics.c (finish_omp_clauses): Don't ICE when
2146         processing_template_decl when checking for bitfields and unions.
2147         Look through REFERENCE_REF_P as base of COMPONENT_REF.
2149 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
2151         * decl.c (wrapup_globals_for_namespace): Use DECL_SOURCE_LOCATION and
2152         "%qF" in warning_at instead of "%q+F" in warning.
2153         (check_redeclaration_exception_specification): Likewise in pedwarn
2154         (and error, inform, for consistency).
2155         * call.c (joust): Likewise.
2157 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
2159         PR c++/70202
2160         * decl.c (xref_basetypes): Revert r117839 changes; add fix-up
2161         code at the end of the for loop; also revert r159637 changes,
2162         add back the gcc_assert.
2163         * cp-tree.h (xref_basetypes): Adjust declaration.
2164         * parser.c (cp_parser_class_head): Adjust xref_basetypes call.
2166 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
2168         * search.c: Include spellcheck-tree.h rather than spellcheck.h.
2170 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
2172         * typeck.c: Include "gcc-rich-location.h".
2173         (finish_class_member_access_expr): Simplify fixit code by
2174         using gcc_rich_location::add_fixit_misspelled_id.
2176 2016-06-14  Jason Merrill  <jason@redhat.com>
2178         P0145R2: Refining Expression Order for C++.
2179         * cp-tree.h (CALL_EXPR_OPERATOR_SYNTAX, CALL_EXPR_ORDERED_ARGS)
2180         (CALL_EXPR_REVERSE_ARGS): New.
2181         * call.c (build_new_op_1): Set them.
2182         (extract_call_expr, op_is_ordered): New.
2183         (build_over_call): Set CALL_EXPR_ORDERED_ARGS.
2184         * cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Handle new flags.
2185         * pt.c (tsubst_copy_and_build): Copy new flags.
2186         * semantics.c (simplify_aggr_init_expr): Likewise.
2187         * tree.c (build_aggr_init_expr): Likewise.
2188         (build_min_non_dep_op_overload): Likewise.
2190 2016-06-14  Jakub Jelinek  <jakub@redhat.com>
2192         PR c++/71528
2193         * decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external
2194         olddecl vars, preserve their TREE_READONLY bit.
2196         PR c++/71516
2197         * decl.c (complete_vars): Handle gracefully type == error_mark_node.
2199 2016-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
2201         * typeck2.c (digest_init_r): Use EXPR_LOC_OR_LOC on init.
2203 2016-06-13  Paolo Carlini  <paolo.carlini@oracle.com>
2205         * decl.c (grokdeclarator): Fix typo in pedwarn text.
2207 2016-06-10  Thomas Schwinge  <thomas@codesourcery.com>
2209         PR c/71381
2210         * parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>:
2211         Loosen checking.
2213 2016-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
2215         PR c++/71465
2216         Revert:
2217         2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
2219         PR c++/70202
2220         * parser.c (cp_parser_class_head): When xref_basetypes fails and
2221         emits an error do not zero the type.
2223 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
2225         * decl.c (maybe_deduce_size_from_array_init): Use
2226         DECL_SOURCE_LOCATION in error_at.
2227         (layout_var_decl): Likewise.
2228         (check_array_initializer): Likewise.
2229         (check_initializer): Likewise.
2230         (duplicate_decls, check_elaborated_type_specifier): Tidy.
2232 2016-06-08  Martin Sebor  <msebor@redhat.com>
2233             Jakub Jelinek  <jakub@redhat.com>
2235         PR c++/70507
2236         PR c/68120
2237         * constexpr.c: Include gimple-fold.h.
2238         (cxx_eval_internal_function): New function.
2239         (cxx_eval_call_expression): Call it.
2240         (potential_constant_expression_1): Handle integer arithmetic
2241         overflow built-ins.
2242         * tree.c (builtin_valid_in_constant_expr_p): Handle
2243         BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P.
2245 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
2247         * pt.c (tsubst, case TYPENAME_TYPE): Don't delay checking the
2248         return value of tsubst_aggr_type for error_mark_node.
2250 2016-06-08  Jakub Jelinek  <jakub@redhat.com>
2252         PR c++/71442
2253         * pt.c (tsubst_copy): Only set TREE_USED on DECLs.
2255 2016-06-06  Jakub Jelinek  <jakub@redhat.com>
2256             Patrick Palka  <ppalka@gcc.gnu.org>
2258         PR c++/70847
2259         PR c++/71330
2260         PR c++/71393
2261         * cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL
2262         right after cp_fold call if cp_fold has returned the same stmt
2263         already in some earlier cp_fold_r call.
2264         (cp_fold_function): Add pset automatic variable, pass its address
2265         to cp_walk_tree.
2267 2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
2269         PR c++/70202
2270         * parser.c (cp_parser_class_head): When xref_basetypes fails and
2271         emits an error do not zero the type.
2273 2016-06-03  Patrick Palka  <ppalka@gcc.gnu.org>
2275         PR c++/27100
2276         * decl.c (duplicate_decls): Properly copy the
2277         DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and
2278         DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL.
2280 2016-06-03  Chung-Lin Tang  <cltang@codesourcery.com>
2282         * semantics.c (finish_omp_clauses): Mark OpenACC reduction
2283         arguments as addressable when async clause exists.
2285 2016-06-02  Jan Hubicka  <jh@suse.cz>
2287         * cp-gimplify.c (genericize_continue_stmt): Force addition of
2288         predict stmt.
2290 2016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
2292         * decl.c (xref_tag_1): Change pairs of errors to error + inform.
2293         (start_enum): Likewise.
2294         * parser.c (cp_parser_class_head): Likewise.
2296 2016-06-02  Jakub Jelinek  <jakub@redhat.com>
2298         PR c++/71372
2299         * cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression
2300         is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS
2301         and TREE_THIS_VOLATILE flags.  For ARRAY_REF and ARRAY_RANGE_REF, copy
2302         over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags
2303         to the newly built tree.
2305 2016-05-31  Jason Merrill  <jason@redhat.com>
2307         * pt.c (instantiate_decl): Avoid recalculation.
2309         PR c++/60095
2310         PR c++/69515
2311         PR c++/69009
2312         * pt.c (instantiate_template_1): Don't put the partial
2313         specialization in DECL_TI_TEMPLATE.
2314         (partial_specialization_p, impartial_args): Remove.
2315         (regenerate_decl_from_template): Add args parm.
2316         (instantiate_decl): Look up the partial specialization again.
2318         PR c++/71227
2319         * pt.c (check_explicit_specialization): Give better diagnostic about
2320         specializing a hidden friend.
2322 2016-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
2324         PR c++/71248
2325         * decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION
2326         to obtain correct locations; avoid redundant diagnostics on
2327         out-of-class definitions.
2329 2016-05-30  Martin Sebor  <msebor@redhat.com>
2331         PR c++/71306
2332         * init.c (warn_placement_new_too_small): Handle placement new arguments
2333         that are elements of arrays more carefully.  Remove a pointless loop.
2335 2016-05-30  Jakub Jelinek  <jakub@redhat.com>
2337         PR c++/71349
2338         * parser.c (cp_parser_omp_for): Don't disallow nowait clause
2339         when combined with target construct.
2340         (cp_parser_omp_parallel): Pass cclauses == NULL as last argument
2341         to cp_parser_omp_all_clauses.
2343 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
2345         PR c++/71238
2346         * lex.c (unqualified_name_lookup_error): Take a location too.
2347         (unqualified_fn_lookup_error): Take a cp_expr.
2348         * cp-tree.h (unqualified_name_lookup_error,
2349         unqualified_fn_lookup_error): Adjust declarations.
2350         * semantics.c (perform_koenig_lookup): Adjust
2351         unqualified_fn_lookup_error call, pass the location of
2352         the identifier too as part of a cp_expr.
2354 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
2356         PR c++/71099
2357         * parser.c (cp_parser_function_specifier_opt): Use current_class_type
2358         to improve the diagnostic about wrong uses of 'virtual'.
2360 2016-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
2362         PR c++/71105
2363         * lambda.c (maybe_add_lambda_conv_op): Early return also when
2364         LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE.
2366 2016-05-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
2368         Revert:
2369         PR c++/69855
2370         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
2371         decls into the global scope after stripping template bits
2372         and setting DECL_ANTICIPATED.
2374 2016-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
2376         PR c++/60385
2377         * name-lookup.c (push_namespace): Return bool, false when pushdecl
2378         fails.
2379         * name-lookup.h (push_namespace): Adjust declaration.
2380         * parser.c (cp_parser_namespace_definition): Check push_namespace
2381         return value.
2383 2016-05-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
2385         PR c++/69855
2386         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
2387         decls into the global scope after stripping template bits
2388         and setting DECL_ANTICIPATED.
2390 2016-05-26  Jakub Jelinek  <jakub@redhat.com>
2392         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn
2393         if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive.
2395 2016-05-26  Patrick Palka  <ppalka@gcc.gnu.org>
2397         PR c++/70822
2398         PR c++/70106
2399         * cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to
2400         SCOPE_REFs too.
2401         * pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set
2402         on the qualified_id then propagate it to the resulting
2403         expression.
2404         (do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs
2405         too.
2406         * semantics.c (force_paren_expr): If given a SCOPE_REF, just set
2407         its REF_PARENTHESIZED_P flag.
2409 2016-05-25  Jason Merrill  <jason@redhat.com>
2411         PR c++/71173
2412         PR c++/70522
2413         * cp-tree.h (enum tag_types): Add scope_type.
2414         * parser.c (cp_parser_class_name): Use scope_type.
2415         (prefer_type_arg): Handle scope_type.
2416         (cp_parser_lookup_name): Use prefer_type_arg.
2417         * name-lookup.c (lookup_qualified_name): Change bool is_type_p to
2418         int prefer_type, use lookup_flags.
2419         * name-lookup.h: Adjust.
2421 2016-05-24  Cesar Philippidis  <cesar@codesourcery.com>
2423         * parser.c (cp_parser_oacc_declare): Add support for
2424         GOMP_MAP_FIRSTPRIVATE_POINTER.
2425         * semantics.c (handle_omp_array_sections_1): Replace bool is_omp
2426         argument with enum c_omp_region_type ort.  Don't privatize OpenACC
2427         non-static members.
2428         (handle_omp_array_sections): Replace bool is_omp argument with enum
2429         c_omp_region_type ort.  Update call to handle_omp_array_sections_1.
2430         (finish_omp_clauses): Add specific errors and warning messages for
2431         OpenACC.  Use firsrtprivate pointers for OpenACC subarrays.  Update
2432         call to handle_omp_array_sections.
2434 2016-05-24  Jason Merrill  <jason@redhat.com>
2436         PR c++/70584
2437         * cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold
2438         returns a decl.
2439         (cp_fold) [INDIRECT_REF]: Don't fold to an rvalue.
2441 2016-05-24  Martin Sebor  <msebor@redhat.com>
2443         PR c++/71147
2444         * decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p.
2445         * pt.c (instantiate_class_template_1): Try to complete the element
2446         type of a flexible array member.
2447         (can_complete_type_without_circularity): Handle arrays of unknown bound.
2448         * typeck.c (complete_type): Also complete the type of the elements of
2449         arrays with an unspecified bound.
2451 2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
2453         PR c++/69872
2454         * typeck2.c (check_narrowing): Check pedwarn return value.
2456 2016-05-24  Jakub Jelinek  <jakub@redhat.com>
2458         PR c++/71257
2459         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>:
2460         For OMP_CLAUSE_LINEAR_REF don't require type to be
2461         integral or pointer.
2463 2016-05-24  Richard Biener  <rguenther@suse.de>
2465         PR middle-end/70434
2466         PR c/69504
2467         * expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.
2468         * constexpr.c (cxx_eval_array_reference): Handle indexed
2469         vectors.
2470         * typeck.c (cp_build_array_ref): Adjust.
2472 2016-05-23  Jason Merrill  <jason@redhat.com>
2474         PR c++/70344
2475         * constexpr.c (cxx_eval_call_expression): Check for
2476         fun == current_function_decl again.
2478         PR c++/70584
2479         * cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call
2480         maybe_undo_parenthesized_ref.
2482         PR c++/70735
2483         * pt.c (tsubst_copy): Just return a local variable from
2484         non-template context.  Don't call rest_of_decl_compilation for
2485         duplicated static locals.
2486         (tsubst_decl): Set DECL_CONTEXT of local static from another
2487         function.
2489 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2491         PR c++/70972
2492         * method.c (forward_parm): Use cp_build_reference_type.
2494 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2496         PR c++/69095
2497         * parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs.
2499 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2501         * pt.c (check_for_bare_parameter_packs): Improve error message
2502         location for expressions.
2504 2016-05-20  Nathan Sidwell  <nathan@acm.org>
2506         * constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if
2507         ... goto.
2508         (cxx_eval_call_expression): Fix comment grammar.
2510 2016-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
2512         PR c++/70572
2513         * decl.c (cp_finish_decl): Check do_auto_deduction return value
2514         and return immediately in case of erroneous code.
2516 2016-05-19  Marek Polacek  <polacek@redhat.com>
2518         PR c++/71075
2519         * pt.c (unify_template_argument_mismatch): Use %qE instead of %qD.
2521 2016-05-19  Jason Merrill  <jason@redhat.com>
2523         PR c++/10200
2524         * pt.c (fn_type_unification): Add outer template args if needed.
2525         (type_unification_real): Handle getting full args.
2527 2016-05-19  David Malcolm  <dmalcolm@redhat.com>
2529         PR c++/71184
2530         * parser.c (cp_parser_operator): For array new/delete, check that
2531         cp_parser_require returned a non-NULL token before dereferencing
2532         it.
2534 2016-05-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2536         * decl.c (finish_enum_value_list): Use the specified mode.
2538 2016-05-18  Jason Merrill  <jason@redhat.com>
2540         * pt.c (value_dependent_expression_p): Tweak new cases to better
2541         match the wording in the standard.
2543 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
2545         PR c++/69793
2546         * parser.c (cp_parser_template_id): Don't call cp_lexer_peek_nth_token
2547         when the previous cp_lexer_peek_token returns CPP_EOF.
2549 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
2551         PR c++/70466
2552         * call.c (convert_like_real): Check that we are actually converting
2553         from an init list.
2555 2016-05-16  Matthew Wahab  <matthew.wahab@arm.com>
2557         * decl.c (grokdeclarator): Remove errmsg and use of
2558         targetm.invalid_return_type.
2559         (grokparms): Remove errmsg and use of
2560         targetm.invalid_parameter_type.
2562 2016-05-13  Jason Merrill  <jason@redhat.com>
2564         PR c++/10200
2565         PR c++/69753
2566         * pt.c (tsubst_decl): Use uses_template_parms.
2567         (instantiate_template_1): Handle non-dependent calls in templates.
2568         (value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL.
2569         (type_dependent_expression_p): Only consider innermost template args.
2570         (dependent_template_arg_p): Check enclosing class of a template here.
2571         (dependent_template_p): Not here.
2572         (type_dependent_object_expression_p): New.
2573         * typeck.c (finish_class_member_access_expr): Use it.
2574         * parser.c (cp_parser_postfix_expression): Use it.
2575         (cp_parser_postfix_dot_deref_expression): Use it.  Use comptypes
2576         to detect the current instantiation.
2577         (cp_parser_lookup_name): Really implement DR 141.
2578         * search.c (lookup_field_r): Prefer a dependent using-declaration.
2579         (any_dependent_bases_p): Split out from...
2580         * name-lookup.c (do_class_using_decl): ...here.
2581         * call.c (build_new_method_call_1): Use it.
2582         * semantics.c (finish_call_expr): 'this' doesn't make a call dependent.
2583         * tree.c (non_static_member_function_p): Remove.
2584         * typeck2.c (build_x_arrow): Use dependent_scope_p.
2586         * parser.c (cp_parser_postfix_dot_deref_expression): Use
2587         complete_type_or_else for unknown_type_node, too.
2589 2016-05-12  Marek Polacek  <polacek@redhat.com>
2591         PR c/70756
2592         * call.c (build_new_op_1): Pass LOC to cp_build_modify_expr.
2593         * cp-tree.h (cp_build_modify_expr): Update declaration.
2594         (cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline
2595         overloads.
2596         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to
2597         cp_build_modify_expr.
2598         * decl2.c (set_guard): Likewise.
2599         (handle_tls_init): Likewise.
2600         * init.c (perform_member_init): Likewise.
2601         (expand_virtual_init): Likewise.
2602         (build_new_1): Likewise.
2603         (build_vec_delete_1): Likewise.
2604         (get_temp_regvar): Likewise.
2605         (build_vec_init): Likewise.
2606         * method.c (do_build_copy_assign): Likewise.
2607         (assignable_expr): Likewise.
2608         * semantics.c (finish_omp_for): Likewise.
2609         * typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and
2610         cp_pointer_int_sum.
2611         (cp_pointer_int_sum): Add location parameter.  Pass it down to
2612         pointer_int_sum.
2613         (pointer_diff): Add location parameter.  Use it.
2614         (build_modify_expr): Pass location down to cp_build_modify_expr.
2615         (cp_build_modify_expr): Add location parameter.  Use it.
2616         (build_x_modify_expr): Pass location down to cp_build_modify_expr.
2617         * typeck2.c (cxx_incomplete_type_diagnostic,
2618         cxx_incomplete_type_error): Add location parameter.
2620 2016-05-11  Marek Polacek  <polacek@redhat.com>
2622         PR c++/71024
2623         * decl.c (duplicate_decls): Call diagnose_mismatched_decls.
2625 2016-05-05  Jakub Jelinek  <jakub@redhat.com>
2627         * parser.c (cp_parser_selection_statement): For RID_SWITCH,
2628         pass if_p instead of NULL to cp_parser_implicitly_scoped_statement.
2630 2016-05-04  Marek Polacek  <polacek@redhat.com>
2632         * parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses
2633         with OPT_Wdangling_else.
2635 2016-05-03  Martin Sebor  <msebor@redhat.com>
2637         PR c++/66561
2638         * tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE,
2639         BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions.
2641 2016-05-03  Marek Polacek  <polacek@redhat.com>
2643         PR c/70859
2644         * call.c (build_cxx_call): Pass location and vNULL down to
2645         check_builtin_function_arguments.
2647 2016-05-03  Richard Biener  <rguenther@suse.de>
2649         * Make-lang.in (cc1plus-checksum.c): For stage-final re-use
2650         the checksum from the previous stage.
2652 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
2654         PR c++/62314
2655         * typeck.c (finish_class_member_access_expr): When
2656         giving a hint about a possibly-misspelled member name,
2657         add a fix-it replacement hint.
2659 2016-05-02  Cesar Philippidis  <cesar@codesourcery.com>
2661         * cp-tree.h (finish_omp_clauses): Update prototype.
2662         * parser.c (cp_parser_oacc_all_clauses): Update call to
2663         finish_omp_clauses.
2664         (cp_parser_omp_all_clauses): Likewise.
2665         (cp_parser_omp_for_loop): Likewise.
2666         (cp_omp_split_clauses): Likewise.
2667         (cp_parser_oacc_cache): Likewise.
2668         (cp_parser_oacc_loop): Likewise.
2669         (cp_parser_omp_declare_target):
2670         (cp_parser_cilk_simd_all_clauses): Likewise.
2671         (cp_parser_cilk_for): Likewise.
2672         * pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd
2673         arguments with enum c_omp_region_type ort.
2674         (tsubst_omp_clauses): Update calls to finish_omp_clauses.
2675         (tsubst_omp_attribute): Update calls to tsubst_omp_clauses.
2676         (tsubst_omp_for_iterator): Update calls to finish_omp_clauses.
2677         (tsubst_expr): Update calls to tsubst_omp_clauses.
2678         * semantics.c (finish_omp_clauses): Replace bool arguments
2679         allow_fields, declare_simd, and is_cilk with bitmask ort.
2680         (finish_omp_for): Update call to finish_omp_clauses.
2682 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
2684         PR c++/62314
2685         * parser.c (cp_parser_class_head): Capture the start location;
2686         use it to emit a fix-it insertion hint when complaining
2687         about missing "template <> " in explicit specializations.
2689 2016-05-02  Richard Sandiford  <richard.sandiford@arm.com>
2691         * init.c (build_new_1): Use shift operators instead of wi:: shifts.
2693 2016-05-02  Richard Biener  <rguenther@suse.de>
2695         * decl.c (grokdeclarator): Properly insert a DECL_EXPR for
2696         anonymous VLAs.
2698 2016-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
2700         PR c++/66644
2701         * class.c (check_field_decl): Remove final int* parameter, change
2702         the return type to bool; fix logic in order not to reject multiple
2703         initialized fields in anonymous struct.
2704         (check_field_decls): Adjust call.
2706 2016-04-29  Cesar Philippidis  <cesar@codesourcery.com>
2708         PR middle-end/70626
2709         * parser.c (cp_parser_oacc_loop): Don't augment mask with
2710         OACC_LOOP_CLAUSE_MASK.
2711         (cp_parser_oacc_kernels_parallel): Update call to
2712         c_oacc_split_loop_clauses.
2714 2016-04-28  Jason Merrill  <jason@redhat.com>
2716         Implement C++17 [[nodiscard]] attribute.
2717         PR c++/38172
2718         PR c++/54379
2719         * parser.c (cp_parser_std_attribute): Handle [[nodiscard]].
2720         * tree.c (handle_nodiscard_attribute): New.
2721         (cxx_attribute_table): Add [[nodiscard]].
2722         * cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New.
2723         (maybe_warn_nodiscard): New.
2724         (convert_to_void): Call it.
2726         * cvt.c (cp_get_callee): New.
2727         * constexpr.c (get_function_named_in_call): Use it.
2728         * cxx-pretty-print.c (postfix_expression): Use it.
2729         * except.c (check_noexcept_r): Use it.
2730         * method.c (check_nontriv): Use it.
2731         * tree.c (build_aggr_init_expr): Use it.
2732         * cp-tree.h: Declare it.
2734 2015-04-27  Ryan Burn  <contact@rnburn.com>
2735             Jeff Law  <law@redhat.com>
2737         PR c++/69024
2738         PR c++/68997
2739         * cp-gimplify.c (cp_gimplify_expr): Call cilk_cp_detect_spawn_and_unwrap
2740         instead of cilk_detect_spawn_and_unwrap.
2741         * cp-cilkplus.c (is_conversion_operator_function_decl_p): New.
2742         (find_spawn): New.
2743         (cilk_cp_detect_spawn_and_unwrap): New.
2744         * lambda.c: Include cp-cilkplus.h.
2745         * parser.c: Include cp-cilkplus.h.
2746         * cp-tree.h (cpp_validate_cilk_plus_loop): Move prototype into...
2747         * cp-cilkpus.h: New file.
2749 2016-04-27  Nathan Sidwell  <nathan@acm.org>
2751         * constexpr.c (get_fundef_copy): Use the original function for
2752         non-recursive evaluations.
2753         (save_fundef_copy): Always expect a slot to be available.
2755 2016-04-27  Bernd Schmidt  <bschmidt@redhat.com>
2757         * parser.c (cp_parser_postfix_expression): Call
2758         warn_for_memset instead of warning directly here.
2760 2016-04-26  Patrick Palka  <ppalka@gcc.gnu.org>
2762         PR c++/70241
2763         * decl.c (build_enumerator): Set current_access_specifier when
2764         declaring an enumerator belonging to an in-class enumeration.
2765         * parser.c (cp_parser_check_access_in_redecleration): Also
2766         consider in-class enumerations.
2768 2016-04-26  Marek Polacek  <polacek@redhat.com>
2770         PR c++/70744
2771         * call.c (build_conditional_expr_1): Call cp_stabilize_reference
2772         instead of stabilize_reference.
2773         (build_over_call): Likewise.
2774         * cp-tree.h (cp_stabilize_reference): Declare.
2775         * tree.c (cp_stabilize_reference): New function.
2776         * typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of
2777         stabilize_reference.
2778         (unary_complex_lvalue): Likewise.
2779         (cp_build_modify_expr): Likewise.
2781 2016-04-26  Jakub Jelinek  <jakub@redhat.com>
2783         PR bootstrap/70704
2784         * pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of
2785         just flag_checking.
2787 2016-04-25  Jason Merrill  <jason@redhat.com>
2789         * tree.c (std_attribute_table): New.
2790         (init_tree): Register it.
2792 2016-04-22  Jason Merrill  <jason@redhat.com>
2794         * parser.c (cp_parser_perform_range_for_lookup): Decay the array.
2796 2016-04-21  Patrick Palka  <ppalka@gcc.gnu.org>
2798         * name-lookup.c (free_saved_scope): New free list of saved_scope
2799         structures.
2800         (push_to_top_level): Attempt to reuse a saved_scope struct
2801         from free_saved_scope instead of allocating a new one each time.
2802         (pop_from_top_level_1): Chain the now-unused saved_scope structure
2803         onto free_saved_scope.
2805 2016-04-21  Paolo Carlini  <paolo.carlini@oracle.com>
2807         PR c++/70540
2808         * semantics.c (process_outer_var_ref): Unconditionally return
2809         error_mark_node when mark_used returns false.
2811 2016-04-21  Marek Polacek  <polacek@redhat.com>
2813         PR c++/70513
2814         * parser.c (cp_parser_enum_specifier): Check and possibly error for
2815         extra qualification.
2817 2016-04-20  Nathan Sidwell  <nathan@acm.org>
2819         PR c++/55635
2820         * init.c (build_vec_delete_1): Protect operator delete call in try
2821         finally.
2822         (build_delete): Likewise.
2823         * optimize.c (build_delete_destructor_body): Likewise.
2825 2016-04-20  Ilya Verbin  <ilya.verbin@intel.com>
2827         PR c++/69363
2828         * cp-tree.h (finish_omp_clauses): Add new default argument.
2829         * parser.c (cp_parser_cilk_simd_all_clauses): Use finish_omp_clauses
2830         instead of c_finish_cilk_clauses.
2831         * semantics.c (finish_omp_clauses): Add new argument.  Allow
2832         floating-point variables in the linear clause for Cilk Plus.
2834 2016-04-20  Nathan Sidwell  <nathan@acm.org>
2836         * semantics.c (finish_compound_lteral): Don't wrap VECTOR_TYPEs in a
2837         TARGET_EXPR.
2839 2016-04-19  Jason Merrill  <jason@redhat.com>
2841         PR c++/66543
2842         * expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR.
2843         * pt.c (make_pack_expansion): Call mark_exp_read.
2844         * semantics.c (finish_id_expression): Call mark_type_use in
2845         unevaluated context.
2847         DR 2137
2848         * call.c (implicit_conversion): If we choose a copy constructor
2849         for list-initialization from the same type, the conversion is an
2850         exact match.
2852         * constexpr.c (breaks): Handle EXIT_EXPR.
2853         (cxx_eval_loop_expr): Handle COMPOUND_EXPR body.
2854         (cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling
2855         of COMPOUND_EXPR.
2857         PR c++/68206
2858         PR c++/68530
2859         * constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR
2860         and GOTO_EXPR.
2862         * pt.c (tsubst_expr): Remove shadowing declaration.
2863         (tsubst_pack_expansion): Add assert.
2865         * semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION.
2867         PR c++/70522
2868         * name-lookup.c (qualified_lookup_using_namespace): Look through
2869         hidden names.
2871 2016-04-18  Michael Matz  <matz@suse.de>
2873         * class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
2874         (layout_class_type): Ditto.
2875         (build_base_field): Use SET_DECL_ALIGN.
2876         (fixup_attribute_variants): Use SET_TYPE_ALIGN.
2877         * decl.c (duplicate_decls): Use SET_DECL_ALIGN.
2878         (record_unknown_type): Use SET_TYPE_ALIGN.
2879         (cxx_init_decl_processing): Ditto.
2880         (copy_type_enum): Ditto.
2881         (grokfndecl): Use SET_DECL_ALIGN.
2882         (copy_type_enum): Use SET_TYPE_ALIGN.
2883         * pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN.
2884         (tsubst): Ditto.
2885         * tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN.
2886         * lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN.
2887         * method.c (implicitly_declare_fn): Use SET_DECL_ALIGN.
2888         * rtti.c (emit_tinfo_decl): Ditto.
2890 2016-04-18  Jason Merrill  <jason@redhat.com>
2892         PR c++/70690
2893         PR c++/70528
2894         * class.c (type_maybe_constexpr_default_constructor): New.
2895         (type_has_constexpr_default_constructor): Revert.
2897 2016-04-16  Sandra Loosemore  <sandra@codesourcery.com>
2899         PR target/1078
2901         * tree.c (cxx_attribute_table): Remove "com_interface" entry.
2902         (handle_com_interface_attribute): Delete.
2904 2016-04-15  Jason Merrill  <jason@redhat.com>
2906         PR c++/70685
2907         * constexpr.c (get_fundef_copy): Handle null *slot.
2909         PR c++/70505
2910         * pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR
2911         unknown_type_node, too.
2913 2016-04-15  Jason Merrill  <jason@redhat.com>
2914             Nathan Sidwell  <nathan@acm.org>
2916         PR c++/70594
2917         * constexpr.c (constexpr_call_table): Preserve in GC.
2918         (struct fundef_copy, struct fundef_copies_table_t):     Delete.
2919         (fundef_copies_table): Preserve in GC. Change to pointer to
2920         tree->tree hash.
2921         (maybe_initialize_fundef_copies_table): Adjust.
2922         (get_fundef_copy): Return a TREE_LIST.  Use non-inserting search.
2923         (save_fundef_copy): Adjust for a TREE_LIST.
2924         (cxx_eval_call_expression): Adjust for a fundef_copy TREE_LIST.
2925         (fini_constexpr): New.
2926         * cp-tree.h (fini_constexpr): Declare.
2927         * decl2.c (c_parse_final_cleanups): Call fini_constexpr.
2929 2016-04-15  Jakub Jelinek  <jakub@redhat.com>
2931         PR c/70436
2932         * parser.c (cp_parser_pragma): Add IF_P argument, pass it down
2933         where needed.
2934         (cp_parser_declaration_seq_opt, cp_parser_member_specification_opt,
2935         cp_parser_objc_interstitial_code, cp_parser_omp_declare_simd,
2936         cp_parser_oacc_routine): Adjust cp_parser_pragma callers.
2937         (cp_parser_statement): Likewise.  Adjust cp_parser_cilk_for caller.
2938         (cp_parser_omp_structured_block): Add IF_P argument, pass it down to
2939         cp_parser_statement.
2940         (cp_parser_oacc_data, cp_parser_oacc_host_data, cp_parser_oacc_loop,
2941         cp_parser_oacc_kernels_parallel, cp_parser_omp_critical,
2942         cp_parser_omp_simd, cp_parser_omp_for, cp_parser_omp_master,
2943         cp_parser_omp_ordered, cp_parser_omp_parallel, cp_parser_omp_single,
2944         cp_parser_omp_task, cp_parser_omp_taskgroup, cp_parser_omp_distribute,
2945         cp_parser_omp_teams, cp_parser_omp_target_data, cp_parser_omp_target,
2946         cp_parser_omp_taskloop, cp_parser_omp_construct,
2947         cp_parser_cilk_grainsize, cp_parser_cilk_simd, cp_parser_cilk_for):
2948         Add IF_P argument, pass it down where needed.
2949         (cp_parser_omp_for_loop): Likewise.  Clear IF_P if nbraces.
2950         (cp_parser_omp_sections_scope): Adjust cp_parser_omp_structured_block
2951         calls.
2953 2016-04-14  Jason Merrill  <jason@redhat.com>
2955         PR c++/70494
2956         * decl.c (cxx_maybe_build_cleanup): Handle non-decls.
2957         * typeck2.c (split_nonconstant_init_1): Use it.
2959         PR c++/70528
2960         * class.c (type_has_constexpr_default_constructor): Return true
2961         for an implicitly declared constructor.
2963         PR c++/70622
2964         * parser.c (cp_parser_init_declarator): Add auto_result parm.
2965         (cp_parser_simple_declaration): Pass it.
2966         (strip_declarator_types): New.
2968         PR c++/70543
2969         * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent
2970         initializer also makes the variable value-dependent.
2972         PR c++/70648
2973         * constexpr.c (cxx_eval_store_expression): Also copy
2974         CONSTRUCTOR_NO_IMPLICIT_ZERO.
2976 2016-04-14  Martin Sebor  <msebor@redhat.com>
2978         PR c++/69517
2979         PR c++/70019
2980         PR c++/70588
2981         * cp-tree.h, decl.c, init.c, typeck2.c: Revert.
2983 2016-04-14  Jason Merrill  <jason@redhat.com>
2985         * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty
2986         parameter ABI change.
2988 2016-04-13  Martin Sebor  <msebor@redhat.com>
2990         PR c++/69517
2991         PR c++/70019
2992         PR c++/70588
2993         * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new
2994         functions.
2995         * decl.c (check_initializer, cp_finish_decl): Call them.
2996         (reshape_init_r): Reject incompletely braced intializer-lists
2997         for VLAs.
2998         * init.c (throw_bad_array_length, build_vla_check)
2999         (build_vla_size_check, build_vla_init_check): Define new functions.
3000         * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p()
3001         to detect a VLA.
3002         (store_init_value): Same.
3004 2016-04-13  Jason Merrill  <jason@redhat.com>
3006         Warn about empty parameter ABI with -Wabi=9.
3007         * call.c (empty_class_msg, mark_for_abi_warning)
3008         (warn_empty_class_abi): New.
3009         (build_call_a): Use them.
3010         * decl.c (store_parm_decls): Use mark_for_abi_warning.
3011         * error.c (pp_format_to_string): New.
3013         Pass empty class parameters like C.
3014         * call.c (pass_as_empty_struct, empty_class_arg): New.
3015         (type_passed_as, build_x_va_arg): Use pass_as_empty_struct.
3016         (build_call_a): Use empty_class_arg.
3017         * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New.
3018         * decl.c (cxx_init_decl_processing): Create empty_struct_type.
3020 2016-04-13  Jason Merrill  <jason@redhat.com>
3022         PR c++/70627
3023         * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE.
3025 2016-04-13  Paolo Carlini  <paolo.carlini@oracle.com>
3027         PR c++/70635
3028         * pt.c (resolve_typename_type): Fix typos in infinite recursion
3029         avoidance mechanism.
3031 2016-04-13  Jason Merrill  <jason@redhat.com>
3033         PR c++/70634
3034         * pt.c (instantiation_dependent_uneval_expression_p): Split out
3035         from instantiation_dependent_expression_p.
3036         (value_dependent_expression_p): Use it for unevaluated operands.
3037         (instantiation_dependent_r): Don't check value-dependence.
3038         (instantiation_dependent_expression_p): Check
3039         value-dependence of the expression as a whole.
3040         * cp-tree.h: Declare instantiation_dependent_uneval_expression_p.
3041         * semantics.c (finish_decltype_type): Use it.
3043         * constexpr.c (potential_nondependent_constant_expression): New.
3044         (potential_nondependent_static_init_expression): New.
3045         (maybe_constant_value_1, fold_non_dependent_expr)
3046         (maybe_constant_init): Use them.
3047         * pt.c (instantiate_non_dependent_expr_sfinae)
3048         (instantiate_non_dependent_or_null, convert_nontype_argument): Use
3049         them.
3050         * cp-tree.h: Declare them.
3052 2016-04-13  Jakub Jelinek  <jakub@redhat.com>
3054         PR c++/70594
3055         * decl.c (pop_labels_1): Removed.
3056         (note_label, sort_labels): New functions.
3057         (pop_labels): During named_labels traversal, just push the slot
3058         pointers into a vector, then qsort it by DECL_UID and only then
3059         call pop_label and chain it into BLOCK_VARS.
3061 2016-04-13  Jason Merrill  <jason@redhat.com>
3063         PR c++/70615
3064         * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here.
3065         (cp_gimplify_expr): Not here.
3067 2016-04-12  Patrick Palka  <ppalka@gcc.gnu.org>
3069         PR c++/70610
3070         * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally
3071         recurse into it.
3072         * typeck.c (build_x_conditional_expr): Unconditionally remember
3073         that the result is an lvalue or xvalue.
3075 2016-04-12  Jason Merrill  <jason@redhat.com>
3077         * class.c (is_really_empty_class): A zero-length array is empty.
3078         An unnamed bit-field doesn't make a class non-empty.
3080 2016-04-12  Paolo Carlini  <paolo.carlini@oracle.com>
3082         PR c++/68722
3083         * parser.c (cp_parser_cache_defarg): When file ends in default
3084         argument simply return error_mark_node.
3086 2016-04-12  Nathan Sidwell  <nathan@acm.org>
3088         PR c++/70501
3089         * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE
3090         similarly to PMF.
3092 2016-04-11  Jason Merrill  <jason@redhat.com>
3094         * mangle.c (decl_is_template_id): The template itself counts as a
3095         template-id.
3097 2016-04-08  Patrick Palka  <ppalka@gcc.gnu.org>
3099         PR c++/70590
3100         PR c++/70452
3101         * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr
3102         on the result if it's not a CONSTRUCTOR.
3104 2016-04-07  Patrick Palka  <ppalka@gcc.gnu.org>
3106         PR c++/70452
3107         * constexpr.c (find_constructor): New function.
3108         (unshare_constructor): New function.
3109         (cxx_eval_call_expression): Use unshare_constructor instead of
3110         unshare_expr.
3111         (find_array_ctor_elt): Likewise.
3112         (cxx_eval_vec_init_1): Likewise.
3113         (cxx_eval_store_expression): Likewise.
3114         (cxx_eval_constant_expression): Likewise.
3116 2016-04-06  Patrick Palka  <ppalka@gcc.gnu.org>
3118         PR c/70436
3119         * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid
3120         potentially generating a future -Wparentheses warning in its
3121         callers.
3123 2016-04-06  Jason Merrill  <jason@redhat.com>
3125         * class.c (check_abi_tags): Fix function template handling.
3127 2016-04-05  Nathan Sidwell  <nathan@acm.org>
3129         PR c++/70512
3130         * class.c (fixup_may_alias): New.
3131         (fixup_attribute_variants): Call it.
3133 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
3135         PR c++/70452
3136         * constexpr.c (struct fundef_copy): New struct.
3137         (struct fundef_copies_table_t): New struct.
3138         (fundef_copies_table): New static variable.
3139         (maybe_initialize_fundef_copies_table): New static function.
3140         (get_fundef_copy): New static function.
3141         (save_fundef_copy): New static function.
3142         (cxx_eval_call_expression): Use get_fundef_copy, and
3143         save_fundef_copy.
3144         (constexpr_call_table): Add "deletable" GTY marker.
3146 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
3148         PR c++/70452
3149         * cp-tree.h (class cache_map): Remove.
3150         * constexpr.c (cv_cache): Change type to
3151         GTY((deletable)) hash_map<tree, tree> *.
3152         (maybe_constant_value): Adjust following the change to cv_cache.
3153         (clear_cv_cache): New static function.
3154         (clear_cv_and_fold_caches): Use it.
3155         * cp-gimplify.c (fold_cache): Change type to
3156         GTY((deletable)) hash_map<tree, tree> *.
3157         (clear_fold_cache): Adjust following the change to fold_cache.
3158         (cp_fold): Likewise.
3160 2016-04-02  Martin Sebor  <msebor@redhat.com>
3162         PR c++/67376
3163         PR c++/70170
3164         PR c++/70172
3165         PR c++/70228
3166         * constexpr.c (diag_array_subscript): New function.
3167         (cxx_eval_array_reference): Detect out of bounds array indices.
3169 2016-04-01  Jason Merrill  <jason@redhat.com>
3171         PR c++/70449
3172         PR c++/70344
3173         * pt.c (instantiate_decl): A function isn't fully defined if
3174         DECL_INITIAL is error_mark_node.
3175         * constexpr.c (cxx_eval_call_expression): Likewise.
3177 2016-04-01  Jakub Jelinek  <jakub@redhat.com>
3178             Marek Polacek  <polacek@redhat.com>
3180         PR c++/70488
3181         * init.c (warn_placement_new_too_small): Test whether
3182         DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi.
3184 2016-04-01  Nathan Sidwell  <nathan@acm.org>
3186         PR c++/68475
3187         * decl.c (check_redeclaration_exception_specification): Check
3188         regardless of -fno-exceptions.
3189         * typeck2.c (merge_exception_specifiers): Relax assert by checking
3190         flag_exceptions too.
3192 2016-03-31  Nathan Sidwell  <nathan@acm.org>
3194         * decl.c (start_preparsed_function): Remove unnecessary bracing.
3195         (finish_destructor_body): Don't emit operator delete here.
3197 2016-03-31  Nathan Sidwell  <nathan@acm.org>
3199         PR c++/70393
3200         * constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR
3201         elements in field order.
3203 2016-03-31  Marek Polacek  <polacek@redhat.com>
3205         PR c/70297
3206         * decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN.
3208 2016-03-31  Richard Biener  <rguenther@suse.de>
3210         PR c++/70430
3211         * typeck.c (cp_build_binary_op): Fix operand order of vector
3212         conditional in truth op handling.
3214 2016-03-29  Jason Merrill  <jason@redhat.com>
3216         PR c++/70353
3217         * decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics
3218         in constexpr functions.
3220 2016-03-28  Jason Merrill  <jason@redhat.com>
3222         PR c++/70422
3223         PR c++/64266
3224         PR c++/70353
3225         * decl.c, pt.c, constexpr.c: Revert last patch.
3227 2016-03-25  Jason Merrill  <jason@redhat.com>
3228             Martin LiÅ¡ka  <mliska@suse.cz>
3230         PR c++/64266
3231         PR c++/70353
3232         Core issue 1962
3233         * decl.c (cp_fname_init): Decay the initializer to pointer.
3234         (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
3235         DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
3236         Don't call cp_finish_decl.
3237         * pt.c (tsubst_expr) [DECL_EXPR]: Set DECL_VALUE_EXPR,
3238         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.  Don't call cp_finish_decl.
3239         * constexpr.c (cxx_eval_constant_expression) [VAR_DECL]:
3240         Handle DECL_VALUE_EXPR.
3242 2016-03-24  Jason Merrill  <jason@redhat.com>
3244         PR c++/70386
3245         * constexpr.c (cxx_eval_bare_aggregate): Handle PMFs.
3247         PR c++/70323
3248         * constexpr.c (cxx_eval_call_expression): Don't cache result if
3249         *overflow_p.
3251 2016-03-24  Patrick Palka  <ppalka@gcc.gnu.org>
3253         PR c++/62212
3254         * tree.c (build_cplus_array_type): Determine type-dependentess
3255         with uses_template_parms instead of with dependent_type_p.
3257 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
3259         PR c++/70347
3260         * typeck.c (process_init_constructor_union): If the initializer
3261         is empty, use the union's NSDMI if it has one.
3263 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
3265         PR c++/70332
3266         * pt.c (tsubst_copy) [PARM_DECL]: Handle the use of 'this' in an
3267         NSDMI that's part of an aggregrate initialization.
3269 2016-03-23  Jakub Jelinek  <jakub@redhat.com>
3271         PR c++/70001
3272         * constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers
3273         for 1..max even for multi-dimensional arrays.  Call unshare_expr
3274         on it.
3276         PR c++/70323
3277         * constexpr.c (cxx_eval_constant_expression): Diagnose overflow
3278         on TREE_OVERFLOW constants.
3280         PR c++/70376
3281         * cp-gimplify.c (genericize_omp_for_stmt): Don't walk OMP_FOR_CLAUSES
3282         for OMP_TASKLOOP here.
3283         (cp_genericize_r): Handle OMP_TASKLOOP like OMP_TASK, except do call
3284         genericize_omp_for_stmt instead of cp_walk_tree on OMP_BODY.
3286 2016-03-23  Alexandre Oliva  <aoliva@redhat.com>
3287             Jason Merrill  <jason@redhat.com>
3288             Jakub Jelinek  <jakub@redhat.com>
3290         PR c++/69315
3291         * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): Remove.
3292         * decl.c (defer_mark_used_calls, deferred_mark_used_calls): Remove.
3293         (finish_function): Don't set or test them.
3294         * decl2.c (mark_used): Don't handle defer_mark_used_calls.
3296 2016-03-23  Jason Merrill  <jason@redhat.com>
3298         PR c++/70344
3299         * constexpr.c (cxx_eval_call_expression): Catch invalid recursion.
3301 2016-03-23  Marek Polacek  <polacek@redhat.com>
3303         PR c++/69884
3304         * pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes.
3306 2016-03-22  Ilya Enkovich  <enkovich.gnu@gmail.com>
3308         * call.c (build_conditional_expr_1): Always use original
3309         condition type for vector type checks and build.
3311 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
3313         PR c++/70096
3314         * pt.c (tsubst_decl): Clear the DECL_MODE of the new decl.
3316 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
3318         PR c++/70204
3319         * constexpr.c (non_const_var_error): Check
3320         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
3322 2016-03-21  Richard Henderson  <rth@redhat.com>
3324         PR c++/70273
3325         * decl.c (notice_forced_label_r): New.
3326         (cp_finish_decl): Use it.
3328 2016-03-21  Jason Merrill  <jason@redhat.com>
3330         PR c++/70285
3331         * cp-gimplify.c (cp_fold) [COND_EXPR]: Handle bit-fields.
3333 2016-03-18  Jason Merrill  <jason@redhat.com>
3335         PR c++/70139
3336         * constexpr.c (cxx_eval_call_expression): Fix trivial copy.
3338         PR c++/70147
3339         * class.c (vptr_via_virtual_p): New.
3340         (most_primary_binfo): Factor out of build_rtti_vtbl_entries.
3341         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Don't clear
3342         a vptr from any virtual base in a not-in-charge 'structor.
3344         * decl.c (build_clobber_this): Factor out of
3345         start_preparsed_function and begin_destructor_body.  Handle
3346         virtual bases better.
3348         * class.c (build_if_in_charge): Split out from build_base_path.
3349         * init.c (expand_virtual_init, expand_default_init): Use it.
3350         * call.c (build_special_member_call): Use it.
3352 2016-03-18  Jakub Jelinek  <jakub@redhat.com>
3354         PR c++/70267
3355         * init.c (build_new_1): Complain and return error_mark_node
3356         if alloc_fn is not _Jv_AllocObject function returning pointer.
3358 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
3360         PR c++/70205
3361         * search.c (adjust_result_of_qualified_name_lookup): Don't
3362         update the BASELINK_BINFO of DECL if the second call
3363         to lookup_base fails.
3365 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
3367         PR c++/70218
3368         * parser.c (cp_parser_lambda_expression): Move call to
3369         pop_deferring_access_checks ahead of the call to
3370         cp_parser_end_tentative_firewall.
3372 2016-03-17  Jakub Jelinek  <jakub@redhat.com>
3374         PR c++/70144
3375         * cp-tree.h (magic_varargs_p): Return int instead of bool.
3376         * call.c (magic_varargs_p): Return int instead of bool, return 2 for
3377         Cilk+ reductions, otherwise 1 for magic varargs and 0 for normal
3378         varargs.
3379         (build_over_call): If magic_varargs_p == 2, call reject_gcc_builtin,
3380         if magic_varargs_p == 1, call decay_conversion
3381         instead of mark_type_use.  Don't store error_mark_node arguments to
3382         argarray, instead return error_mark_node.
3384         PR c++/70272
3385         * decl.c (begin_destructor_body): Don't insert clobber if
3386         is_empty_class (current_class_type).
3388 2016-03-17  Marek Polacek  <polacek@redhat.com>
3390         PR c++/70194
3391         * typeck.c (warn_for_null_address): New function.
3392         (cp_build_binary_op): Call it.
3394 2016-03-16  Jason Merrill  <jason@redhat.com>
3396         PR c++/70259
3397         * decl.c (start_preparsed_function): Don't clobber an empty base.
3399 2016-03-16  Jakub Jelinek  <jakub@redhat.com>
3401         PR c++/70147
3402         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Conditionalize
3403         BINFO_VIRTUAL_P vtable clearing on current_in_charge_parm.
3405         PR c++/70147
3406         * cp-ubsan.c (cp_ubsan_maybe_initialize_vtbl_ptrs): Temporarily
3407         set in_base_initializer.
3409 2016-03-15  Marek Polacek  <polacek@redhat.com>
3411         PR c++/70209
3412         * tree.c (strip_typedefs): Call strip_typedefs again on the
3413         DECL_ORIGINAL_TYPE result.
3415 2016-03-15  Jason Merrill  <jason@redhat.com>
3417         PR c++/70095
3418         * pt.c (instantiate_decl): Fix call to variable_template_p.
3420         PR c++/70141
3421         * pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE.
3423 2016-03-14  Casey Carter  <casey@carter.net>
3424             Jason Merrill  <jason@redhat.com>
3426         P0184R0: Generalizing the Range-Based For Loop
3427         * parser.c (cp_convert_range_for): Set the type of __end separately.
3428         (cp_parser_perform_range_for_lookup): Allow different begin/end
3429         types if they are comparable.
3431 2016-03-12  Patrick Palka  <ppalka@gcc.gnu.org>
3433         PR c++/70106
3434         * semantics.c (force_paren_expr): Just build a PAREN_EXPR when
3435         processing_template_decl and EXPR is a SCOPE_REF.
3437 2016-03-10  Patrick Palka  <ppalka@gcc.gnu.org>
3438             Jakub Jelinek  <jakub@redhat.com>
3440         PR c++/70001
3441         * constexpr.c (cxx_eval_vec_init_1): For pre_init case, reuse
3442         return value from cxx_eval_constant_expression from earlier
3443         elements if it is valid constant initializer requiring no
3444         relocations.
3446 2016-03-10  Marek Polacek  <polacek@redhat.com>
3448         PR c++/70153
3449         * cp-gimplify.c (cp_fold): Handle UNARY_PLUS_EXPR.
3451 2016-03-09  Cesar Philippidis  <cesar@codesourcery.com>
3453         * parser.c (cp_parser_oacc_loop): Update cclauses and clauses
3454         when calling c_finish_omp_clauses.
3456 2016-03-08  Jason Merrill  <jason@redhat.com>
3458         * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful
3459         diagnostic for use of "concept".
3460         (cp_parser_requires_clause_opt): And "requires".
3461         (cp_parser_type_parameter, cp_parser_late_return_type_opt)
3462         (cp_parser_explicit_template_declaration): Adjust.
3463         * Make-lang.in (check-c++-all): Add "concepts" to std list.
3465         P0036R0: Unary Folds and Empty Parameter Packs
3466         * pt.c (expand_empty_fold): Remove special cases for *,+,&,|.
3468 2016-03-08  Jakub Jelinek  <jakub@redhat.com>
3470         PR c++/70135
3471         * constexpr.c (cxx_eval_loop_expr): Forget saved values of SAVE_EXPRs
3472         even after the last iteration of the loop.
3474         * decl.c (duplicate_decls): Fix spelling - becuase -> because.
3476 2016-03-07  Patrick Palka  <ppalka@gcc.gnu.org>
3478         PR c++/66786
3479         * pt.c (get_template_info): Handle PARM_DECL.
3480         (template_class_depth): Check DECL_P instead of
3481         VAR_OR_FUNCTION_DECL_P.
3483 2016-03-05  Jason Merrill  <jason@redhat.com>
3485         PR c++/67364
3486         * constexpr.c (cxx_eval_store_expression): Replace
3487         CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too.
3489 2016-03-05  Patrick Palka  <ppalka@gcc.gnu.org>
3491         PR c++/66786
3492         * pt.c (template_class_depth): Given a lambda type, iterate
3493         into its LAMBDA_TYPE_EXTRA_SCOPE field instead of its
3494         TYPE_CONTEXT.  Given a VAR_DECL, iterate into its
3495         CP_DECL_CONTEXT.
3497 2016-03-04  Jason Merrill  <jason@redhat.com>
3499         PR c++/69203
3500         * cp-tree.h (COND_EXPR_IS_VEC_DELETE): New.
3501         * init.c (build_vec_delete_1): Set it.
3502         * constexpr.c (potential_constant_expression_1) [COND_EXPR]: Check it.
3504 2016-03-04  Jakub Jelinek  <jakub@redhat.com>
3506         * decl.c (start_preparsed_function): Don't emit start clobber at the
3507         start of constructor clones.
3509         PR c++/70035
3510         * cp-tree.h (cp_ubsan_maybe_initialize_vtbl_ptrs): New prototype.
3511         * decl.c (start_preparsed_function): Call
3512         cp_ubsan_maybe_initialize_vtbl_ptrs if needed.
3513         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs,
3514         cp_ubsan_maybe_initialize_vtbl_ptrs): New functions.
3516 2016-03-04  Jason Merrill  <jason@redhat.com>
3518         PR c++/67364
3519         * constexpr.c (cxx_eval_component_reference): Further tweak.
3521         * constexpr.c (struct constexpr_ctx): Add save_exprs field.
3522         (cxx_eval_loop_expr): Discard SAVE_EXPR values before looping.
3523         (cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set.
3524         (cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize.
3526         PR c++/70067
3527         * tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the
3528         same type.
3530 2016-03-03  Jason Merrill  <jason@redhat.com>
3532         * method.c (synthesized_method_walk): operator= can also be constexpr.
3534         * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get
3535         LAMBDA_EXPR_RETURN_TYPE from the instantiated closure.
3537         PR c++/67164
3538         * pt.c (copy_template_args): New.
3539         (tsubst_pack_expansion): Use it.
3541         * call.c (build_aggr_conv): Use get_nsdmi.
3543         PR c++/51406
3544         * typeck.c (build_static_cast_1): Avoid folding back to lvalue.
3546         PR c++/67364
3547         * constexpr.c (cxx_eval_component_reference): Just return an empty
3548         CONSTRUCTOR for an empty class.
3550 2016-03-01  Jason Merrill  <jason@redhat.com>
3552         PR c++/70036
3553         * parser.c (cp_parser_requires_clause): Call
3554         check_for_bare_parameter_packs.
3556         PR c++/51489
3557         * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
3558         the operands.
3560         PR c++/69995
3561         * constexpr.c (cxx_eval_call_expression): Unshare arg.
3562         (cxx_eval_constant_expression) [DECL_EXPR]: Unshare init.
3563         [TARGET_EXPR]: Unshare init.
3565 2016-03-01  Patrick Palka  <ppalka@gcc.gnu.org>
3567         PR c++/68948
3568         PR c++/69961
3569         * pt.c (tsubst_baselink): Reinstate the check for an invalid
3570         constructor call.
3572 2016-02-28  Jason Merrill  <jason@redhat.com>
3574         PR c++/69995
3575         * constexpr.c (cxx_eval_store_expression): Unshare init.
3577 2016-02-26  Jason Merrill  <jason@redhat.com>
3579         PR c++/69958
3580         * pt.c (make_argument_pack): New.
3581         (tsubst_copy) [SIZEOF_EXPR]: Handle partial expansion.
3582         (tsubst_copy_and_build): Likewise.
3584 2016-02-25  Jason Merrill  <jason@redhat.com>
3586         PR c++/69889
3587         * cp-tree.h (AGGR_INIT_FROM_THUNK_P): New.
3588         * tree.c (build_aggr_init_expr): Set it.
3589         * semantics.c (simplify_aggr_init_expr): Check it.
3590         * cp-gimplify.c (cp_genericize_r): Don't walk into
3591         a call/aggr_init from a thunk.
3593         PR c++/69842
3594         * method.c (forward_parm): Handle parameter packs.
3595         * lambda.c (maybe_add_lambda_conv_op): Use it for them.
3597         PR c++/67364
3598         * constexpr.c (cxx_eval_component_reference): Don't complain about
3599         unevaluated empty classes.
3601         PR c++/68049
3602         * tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE.
3604 2016-02-25  Patrick Palka  <ppalka@gcc.gnu.org>
3606         PR c++/69736
3607         * cp-tree.h (REF_PARENTHESIZED_P): Adjust documentation.
3608         (maybe_undo_parenthesized_ref): Declare.
3609         * semantics.c (maybe_undo_parenthesized_ref): Split out from
3610         check_return_expr.
3611         (finish_call_expr): Use it.
3612         * typeck.c (check_return_expr): Use it.
3613         * pt.c (tsubst_copy_and_build) [INDIRECT_REF]: Retain the
3614         REF_PARENTHESIZED_P flag.
3616 2016-02-24  Jakub Jelinek  <jakub@redhat.com>
3618         PR c++/69922
3619         * class.c (build_base_path): Set TREE_NO_WARNING on the null_test.
3620         Avoid folding it.
3621         * init.c (build_vec_delete_1, build_delete): Don't fold the non-NULL
3622         tests.
3623         * cp-gimplify.c (cp_fold): For TREE_NO_WARNING comparisons with NULL,
3624         unless they are folded into INTEGER_CST, error_mark_node or some
3625         comparison with NULL, avoid folding them and use either the original
3626         comparison or non-folded comparison of folded arguments.
3627         * cp-ubsan.c (cp_ubsan_instrument_vptr): Set TREE_NO_WARNING on the
3628         comparison, don't fold the comparison right away.
3630 2016-02-24  Jason Merrill  <jason@redhat.com>
3632         PR c++/69323
3633         * friend.c (make_friend_class): Likewise.
3634         * decl.c (lookup_and_check_tag): Diagnose invalid dependent friend.
3636 2016-02-24  Jason Merrill  <jason@redhat.com>
3638         PR c++/69323
3639         * pt.c (instantiate_class_template_1): Set
3640         processing_template_decl before substituting friend_type.
3642 016-02-24  Martin Sebor  <msebor@redhat.com>
3644         PR c++/69912
3645         * tree.c (build_ctor_subob_ref): Compare types' main variants
3646         instead of the types as they are.
3648 2016-02-24  Jason Merrill  <jason@redhat.com>
3650         * decl.c (start_preparsed_function): Condition ctor clobber on
3651         flag_lifetime_dse > 1.
3653         * cp-gimplify.c (cp_fold): Don't fold constexpr calls if -fno-inline.
3655 2016-02-19  Jason Merrill  <jason@redhat.com>
3657         PR c++/69743
3658         * call.c (remaining_arguments): No longer static.
3659         * cp-tree.h: Declare it.
3660         * pt.c (more_specialized_fn): Use it.
3662 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
3663             Bernd Edlinger  <bernd.edlinger@hotmail.de>
3665         * Make-lang.in: Invoke gperf with -L C++.
3666         * cfns.gperf: Remove prototypes for hash and libc_name_p
3667         inlines.
3668         * cfns.h: Regenerated.
3669         * except.c (nothrow_libfn_p): Adjust.
3671 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
3673         PR c++/69850
3674         * rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use
3675         NE_EXPR instead of EQ_EXPR and swap last two arguments on COND_EXPR.
3677 2016-02-19  Patrick Palka  <ppalka@gcc.gnu.org>
3679         PR c++/68948
3680         * pt.c (tsubst_baselink): Don't diagnose an invalid constructor
3681         call here.
3682         * semantics.c (finish_call_expr): Don't assume a constructor
3683         call is dependent if only the "this" pointer is dependent.  When
3684         building a constructor call, always use a dummy object.
3686 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
3688         PR c++/69850
3689         * init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR
3690         condition.
3691         * cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary
3692         operators if folding preserved the binop, just with different
3693         arguments.
3695         PR c++/67767
3696         * parser.c (cp_parser_std_attribute_spec_seq): Don't assume
3697         attr_spec is always single element chain, chain all the attributes
3698         properly together in the right order.
3700 2016-02-18  Jason Merrill  <jason@redhat.com>
3702         * mangle.c (maybe_check_abi_tags): Add for_decl parm.  Call
3703         mangle_decl.
3704         (mangle_decl): Call maybe_check_abi_tags for function scope.
3705         (mangle_guard_variable): Call maybe_check_abi_tags here.
3706         (write_guarded_var_name): Not here.
3708 2016-02-17  Jason Merrill  <jason@redhat.com>
3710         PR c++/65985
3711         * constexpr.c (build_constexpr_constructor_member_initializers):
3712         Handle an additional STATEMENT_LIST.
3714         PR c++/68585
3715         * constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection.
3717         PR c++/68679
3718         * decl2.c (reset_type_linkage_2): Look through member templates.
3720 2016-02-17  Jakub Jelinek  <jakub@redhat.com>
3722         PR c++/69850
3723         * init.c (build_delete): Set TREE_NO_WARNING on ifexp.
3725 2016-02-17  Jason Merrill  <jason@redhat.com>
3727         PR c++/69842
3728         * method.c (forward_parm): Split out from...
3729         (add_one_base_init): ...here.
3730         * lambda.c (maybe_add_lambda_conv_op): Use it.
3732 2016-02-16  Jason Merrill  <jason@redhat.com>
3734         PR c++/10200
3735         PR c++/69753
3736         * call.c, cp-tree.h, name-lookup.c, pt.c, search.c, semantics.c,
3737         tree.c, typeck2.c: Revert earlier changes.
3738         * parser.c (cp_parser_lookup_name): Ignore namespace-scope
3739         non-type templates after -> or .
3741 2016-02-16  Jakub Jelinek  <jakub@redhat.com>
3743         PR c/69835
3744         * typeck.c (cp_build_binary_op): Revert 2015-09-09 change.
3746 2016-02-16  Jason Merrill  <jason@redhat.com>
3748         PR c++/69657
3749         * name-lookup.c (lookup_qualified_name): Add find_hidden parm.
3750         (set_decl_namespace): Pass it.  Complain about finding a hidden friend.
3751         * name-lookup.h: Adjust.
3753 2016-02-16  James Norris  <jnorris@codesourcery.com>
3755         * parser.c (cp_parser_oacc_data_clause_deviceptr): Remove checking.
3756         * semantics.c (finish_omp_clauses): Add deviceptr checking.
3758 2016-02-15  Jakub Jelinek  <jakub@redhat.com>
3760         PR c++/69658
3761         * init.c (expand_default_init): Only call reshape_init
3762         in the direct-initialization from an initializer list case.
3764 2016-02-15  Jason Merrill  <jason@redhat.com>
3766         PR c++/69753
3767         * semantics.c (finish_call_expr): Implicit 'this' does not make
3768         the call dependent.
3769         * search.c (any_dependent_bases_p): Split out...
3770         * name-lookup.c (do_class_using_decl): ...from here.
3771         * call.c (build_new_method_call_1): Don't complain about missing object
3772         if there are dependent bases.  Tweak error.
3773         * tree.c (non_static_member_function_p): Remove.
3774         * pt.c (type_dependent_expression_p): A member template of a
3775         dependent type is dependent.
3776         * cp-tree.h: Adjust.
3778         PR c++/68890
3779         * constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check.
3781 2016-02-12  Patrick Palka  <ppalka@gcc.gnu.org>
3783         PR c++/69098
3784         * pt.c (lookup_and_finish_template_variable): New function,
3785         extracted from ...
3786         (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: ... here.  Use it.
3787         (tsubst_qualified_id): Consider that EXPR might be a variable
3788         template.
3789         * typeck.c (check_template_keyword): Don't emit an error
3790         if DECL is a variable template.
3792 2016-02-12  Jakub Jelinek  <jakub@redhat.com>
3794         * error.c: Spelling fixes - behaviour -> behavior and
3795         neighbour -> neighbor.
3796         * decl.c: Likewise.
3797         * typeck.c (cp_build_binary_op): Fix up behavior spelling in
3798         diagnostics.
3799         * init.c (build_delete): Likewise.
3801 2016-02-11  Jakub Jelinek  <jakub@redhat.com>
3803         PR c/69768
3804         * typeck.c (cp_build_binary_op): cp_fully_fold integer_zerop
3805         arguments for -Waddress warning.  Fix up formatting.
3807 2016-02-11  Paolo Carlini  <paolo.carlini@oracle.com>
3809         PR c++/68726
3810         * pt.c (lookup_template_class_1): Check tsubst return value for
3811         error_mark_node.
3813 2016-02-10  Jason Merrill  <jason@redhat.com>
3815         PR c++/68926
3816         * pt.c (resolve_nondeduced_context): Add complain parm.
3817         (do_auto_deduction): Pass it.
3818         * cvt.c (convert_to_void): Likewise.
3819         * decl.c (cp_finish_decl): Likewise.
3820         * init.c (build_new): Likewise.
3821         * rtti.c (get_tinfo_decl_dynamic): Likewise.
3822         * semantics.c (finish_decltype_type): Likewise.
3823         * typeck.c (decay_conversion): Likewise.
3824         * cp-tree.h: Adjust declaration.
3825         * call.c (standard_conversion): Add complain parm, pass it along.
3826         (implicit_conversion): Pass it.
3828         PR c++/69657
3829         * name-lookup.c (ambiguous_decl): Call remove_hidden_names.
3830         (lookup_name_real_1): Likewise.
3831         (remove_hidden_names): Handle non-functions too.
3833         PR c++/10200
3834         * parser.c (cp_parser_lookup_name): When looking for a template
3835         after . or ->, only consider class templates.
3836         (cp_parser_postfix_dot_deref_expression): Handle the current
3837         instantiation.  Remember a dependent object expression.
3838         * typeck2.c (build_x_arrow): Handle the current instantiation.
3840         * ptree.c (debug_tree): Implement for cp_expr.
3842 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
3844         PR c++/69139
3845         * parser.c (cp_parser_simple_type_specifier): Make the check
3846         for disambiguating between an 'auto' placeholder and an implicit
3847         template parameter more robust.
3849 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
3851         PR c++/69283
3852         PR c++/67835
3853         * decl2.c (mark_used): When given a TEMPLATE_DECL, return after
3854         setting its TREE_USED flag.
3856 2016-02-08  Jason Merrill  <jason@redhat.com>
3858         PR c++/69657
3859         * name-lookup.c (do_nonmember_using_decl): Leave anticipated
3860         built-ins alone.
3862 2016-02-08  Jakub Jelinek  <jakub@redhat.com>
3864         PR c++/59627
3865         * parser.c (cp_parser_omp_declare_reduction): Set assembler name
3866         of the DECL_OMP_DECLARE_REDUCTION_P decls.
3868 2016-02-08  Marek Polacek  <polacek@redhat.com>
3870         PR c++/69688
3871         * constexpr.c (clear_cv_and_fold_caches): Renamed from clear_cv_cache.
3872         Call clear_fold_cache.
3873         * cp-tree.h: Adjust declaration.
3874         * decl.c (finish_enum_value_list): Call clear_cv_and_fold_caches
3875         rather than clear_cv_cache and clear_fold_cache.
3876         * typeck2.c (store_init_value): Call clear_cv_and_fold_caches.
3878 2016-02-08  Jason Merrill  <jason@redhat.com>
3880         * cp-tree.h (CONV_FOLD, CONV_BACKEND_CONVERT): New.
3881         * cvt.c (convert): Pass CONV_BACKEND_CONVERT.
3882         (ocp_convert): Use *_maybe_fold.
3883         (cp_convert_to_pointer): Add dofold parameter.
3884         * cp-gimplify.c (cp_fold) [CONVERT_EXPR]: Call convert.
3886 2016-02-05  Martin Sebor  <msebor@redhat.com>
3888         PR c++/69662
3889         * init.c (find_field_init): New function.
3890         (warn_placement_new_too_small): Call it.  Handle one-element arrays
3891         at ends of structures special.
3893 2016-02-05  Jason Merrill  <jason@redhat.com>
3895         PR c++/68948
3896         * semantics.c (finish_expr_stmt): If expr is error_mark_node,
3897         make sure we've seen_error().
3899 2016-02-05  Patrick Palka  <ppalka@gcc.gnu.org>
3901         PR c++/68948
3902         * pt.c (tsubst_baselink): Diagnose an invalid constructor call
3903         if lookup_fnfields returns NULL_TREE and the name being looked
3904         up has the form A::A.
3906 2016-02-04  Patrick Palka  <ppalka@gcc.gnu.org>
3908         * constexpr.c (cxx_eval_binary_expression): Fold equality
3909         comparisons involving PTRMEM_CSTs.
3911 2016-02-04  Jakub Jelinek  <jakub@redhat.com>
3913         * class.c (find_flexarrays): Don't declare dom variable.
3914         (diagnose_flexarray): Likewise.
3916 2016-02-02  Martain Sebor  <msebor@redhat.com>
3918         PR c++/69251
3919         PR c++/69253
3920         PR c++/69290
3921         PR c++/69277
3922         PR c++/69349
3923         * class.c (walk_subobject_offsets): Avoid testing the upper bound
3924         of a flexible array member for equality to null.
3925         (find_flexarrays): Remove spurious whitespace introduced in r231665.
3926         (diagnose_flexarrays): Avoid checking the upper bound of arrays.
3927         (check_flexarrays): Same.
3928         * decl.c (compute_array_index_type): Avoid special case for flexible
3929         array members.
3930         (grokdeclarator): Avoid calling compute_array_index_type for flexible
3931         array members.
3932         * error.c (dump_type_suffix): Revert changes introduced in r231665
3933         and rendered unnecessary by the changes above.
3934         * pt.c (tsubst):  Same.
3935         * tree.c (build_ctor_subob_ref): Handle flexible array members.
3936         * typeck2.c (digest_init_r): Revert changes introduced in r231665.
3937         (process_init_constructor_array): Same.
3938         (process_init_constructor_record): Same.
3940 2016-02-03  Patrick Palka  <ppalka@gcc.gnu.org>
3942         PR c++/69056
3943         * pt.c (try_one_overload): Handle comparing argument packs so
3944         that there is no conflict if we deduced more arguments of an
3945         argument pack than were explicitly specified.
3947 2016-01-31  Jakub Jelinek  <jakub@redhat.com>
3948             Jason Merrill  <jason@redhat.com>
3950         PR c++/68763
3951         * tree.c (strip_typedefs) [FUNCTION_TYPE]: Avoid building a new
3952         function type if nothing is changing.
3954 2016-01-31  Jason Merrill  <jason@redhat.com>
3956         PR c++/69009
3957         * pt.c (partial_specialization_p, impartial_args): New.
3958         (instantiate_decl): Call impartial_args.
3960         * mangle.c (maybe_check_abi_tags): New.
3961         (write_guarded_var_name): Call it.
3962         (mangle_ref_init_variable): Call check_abi_tags.
3964         * pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES
3965         between template and instantiation.
3967 2016-01-29  Jakub Jelinek  <jakub@redhat.com>
3969         PR debug/66869
3970         * decl.c (wrapup_globals_for_namespace): Warn about unused static
3971         function declarations.
3973 2016-01-29  Marek Polacek  <polacek@redhat.com>
3975         PR c++/69509
3976         PR c++/69516
3977         * constexpr.c (cxx_eval_array_reference): Give the "array subscript
3978         out of bound" error earlier.
3979         * init.c (build_vec_init): Change NE_EXPR into GT_EXPR.  Update the
3980         commentary.
3982 2016-01-29  Patrick Palka  <ppalka@gcc.gnu.org>
3984         * name-lookup.c (begin_scope): After reusing a cp_binding_level
3985         structure, update free_binding_level before the structure's
3986         level_chain field gets cleared, not after.
3988 2016-01-28  Jason Merrill  <jason@redhat.com>
3990         PR c++/67407
3991         * search.c (dfs_walk_once, dfs_walk_once_r)
3992         (dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use
3993         hash_set instead of BINFO_MARKED.
3994         (dfs_unmark_r): Remove.
3996 2016-01-28  Patrick Palka  <ppalka@gcc.gnu.org>
3998         PR c++/24208
3999         * parser.c (LEXER_DEBUGGING_ENABLED_P): New macro.
4000         (cp_lexer_debugging_p): Use it.
4001         (cp_lexer_start_debugging): Likewise.
4002         (cp_lexer_stop_debugging): Likewise.
4004 2016-01-27  Marek Polacek  <polacek@redhat.com>
4006         PR c/68062
4007         * typeck.c (cp_build_binary_op): Promote operand to unsigned, if
4008         needed.  Add -Wsign-compare warning.
4010 2016-01-27  Ryan Burn  <contact@rnburn.com>
4012         PR cilkplus/69267
4013         * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed
4014         superfluous post_p argument in call to
4015         cilk_gimplify_call_params_in_spawned_fn.
4017 2016-01-27  Marek Polacek  <polacek@redhat.com>
4019         PR c++/69379
4020         * constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs
4021         wrapped in NOP_EXPRs.
4023 2016-01-27  Martin Sebor  <msebor@redhat.com>
4025         PR c++/69317
4026         * mangle.c (mangle_decl): Reference the correct (saved) version
4027         of the ABI in -Wabi diagnostics.
4029 2016-01-27  Marek Polacek  <polacek@redhat.com>
4031         PR c++/69496
4032         * constexpr.c (cxx_eval_array_reference): Evaluate the number of
4033         elements of the array.
4035 2016-01-26  Jason Merrill  <jason@redhat.com>
4037         PR c++/68949
4038         * constexpr.c (register_constexpr_fundef): Keep the un-massaged body.
4039         (cxx_eval_call_expression): Don't look through clones.
4040         * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias.
4041         * semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of
4042         maybe-in-charge *tor.
4044 2016-01-26  Jason Merrill  <jason@redhat.com>
4046         PR c++/68782
4047         * constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT
4048         and TREE_SIDE_EFFECTS.
4049         (cxx_eval_constant_expression) [CONSTRUCTOR]: Call
4050         verify_constructor_flags.
4052 2016-01-26  Jakub Jelinek  <jakub@redhat.com>
4054         PR c++/68357
4055         * cp-gimplify.c (cp_fold): If some operand folds to error_mark_node,
4056         return error_mark_node instead of building trees with error_mark_node
4057         operands.
4059 2016-01-26  David Malcolm  <dmalcolm@redhat.com>
4061         PR other/69006
4062         * error.c (print_instantiation_partial_context_line): Add missing
4063         newlines from output for the t == NULL case.
4064         (print_instantiation_partial_context): Remove call to pp_newline.
4066 2016-01-24  Patrick Palka  <ppalka@gcc.gnu.org>
4068         Revert:
4069         2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
4071         PR c++/11858
4072         PR c++/24663
4073         PR c++/24664
4074         * decl.c (grokdeclarator): Don't decay array parameter type to
4075         a pointer type if it's dependent.
4076         (grokparms): Invoke strip_top_quals instead of directly invoking
4077         cp_build_qualified_type.
4078         * pt.c (decay_dependent_array_parm_type): New static function.
4079         (type_unification_real): Call decay_dependent_array_parm_type
4080         to decay a dependent array parameter type to its corresponding
4081         pointer type before unification.
4082         (more_specialized_fn): Likewise.
4083         (get_bindings): Likewise.
4084         * tree.c (cp_build_qualified_type): Trivial typofix in
4085         documentation.
4087 2016-01-23  Martin Sebor  <msebor@redhat.com>
4089         PR c++/58109
4090         PR c++/69022
4091         * decl2.c (is_late_template_attribute): Handle dependent argument
4092         to attribute align and attribute vector_size.
4094 2016-01-21  Jason Merrill  <jason@redhat.com>
4096         PR c++/69392
4097         * lambda.c (lambda_capture_field_type): Handle 'this' specially
4098         for init-capture, too.
4100         PR c++/65687
4101         * decl.c (type_is_deprecated): Don't look into a typedef.
4103         PR c++/40751
4104         PR c++/64987
4105         * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN.
4107         PR c++/43407
4108         * decl.c (start_enum): Add attributes parameter.
4109         * parser.c (cp_parser_enum_specifier): Pass it.
4110         * pt.c (lookup_template_class_1): Pass it.
4111         * cp-tree.h: Adjust.
4113 2016-01-19  Jason Merrill  <jason@redhat.com>
4115         PR c++/59759
4116         * pt.c (convert_template_argument): Handle VAR_DECL properly.
4118 2016-01-19  Marek Polacek  <polacek@redhat.com>
4120         PR c++/68586
4121         * constexpr.c (clear_cv_cache): New.
4122         * cp-gimplify.c (clear_fold_cache): New.
4123         * cp-tree.h (clear_cv_cache, clear_fold_cache): Declare.
4124         * decl.c (finish_enum_value_list): Call them.
4126         PR c++/68965
4127         * pt.c (tsubst_copy): Mark elements in expanded vector as used.
4129 2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
4131         PR c++/11858
4132         PR c++/24663
4133         PR c++/24664
4134         * decl.c (grokdeclarator): Don't decay array parameter type to
4135         a pointer type if it's dependent.
4136         (grokparms): Invoke strip_top_quals instead of directly invoking
4137         cp_build_qualified_type.
4138         * pt.c (decay_dependent_array_parm_type): New static function.
4139         (type_unification_real): Call decay_dependent_array_parm_type
4140         to decay a dependent array parameter type to its corresponding
4141         pointer type before unification.
4142         (more_specialized_fn): Likewise.
4143         (get_bindings): Likewise.
4144         * tree.c (cp_build_qualified_type): Trivial typofix in
4145         documentation.
4147 2016-01-18  Jason Merrill  <jason@redhat.com>
4149         * cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input.
4151         * cp-gimplify.c (cp_fold): Remove unnecessary special cases.
4153         PR c++/68767
4154         * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify.  Do fold COND_EXPR.
4155         (contains_label_1, contains_label_p): Remove.
4157 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4159         PR c++/69091
4160         * pt.c (type_dependent_expression_p): For a function template
4161         specialization, a type is dependent iff any of its template
4162         arguments are.
4164 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4166         * cp-array-notation.c (cp_expand_cond_array_notations): Return
4167         error_mark_node only if find_rank failed, not if it was
4168         successful.
4170 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4172         PR c++/68936
4173         * tree.c (build_min_non_dep_call_vec): Don't retain the
4174         KOENIG_LOOKUP_P flag of the non-dependent expression that's
4175         been built.
4176         (build_min_non_dep_op_overload): Instead, do it here.
4178 2016-01-15  Jakub Jelinek  <jakub@redhat.com>
4180         PR bootstrap/68271
4181         * parser.h (cp_token): Remove pragma_kind field.  Add comment
4182         with number of unused bits.
4183         * parser.c (eof_token): Remove pragma_kind field initializer.
4184         (cp_lexer_get_preprocessor_token): Don't set pragma_kind
4185         field, don't clear CPP_PRAGMA u.value.
4186         (cp_parser_pragma_kind): New function.
4187         (cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel,
4188         cp_parser_omp_construct, cp_parser_initial_pragma,
4189         cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing
4190         pragma_kind field.
4192 2016-01-15  Jason Merrill  <jason@redhat.com>
4194         PR c++/68847
4195         * call.c (build_cxx_call): Use fold_non_dependent_expr.
4197         * typeck2.c (cxx_incomplete_type_diagnostic): Use the location of
4198         value.
4200         PR c++/69257
4201         * typeck.c (decay_conversion): Don't call mark_rvalue_use for
4202         array/function-to-pointer conversion.  Call
4203         complete_type_or_maybe_complain for lvalue-to-rvalue conversion.
4204         * call.c (convert_like_real): Print call context if
4205         decay_conversion errors.
4207 2016-01-14  Tom de Vries  <tom@codesourcery.com>
4209         PR tree-optimization/68773
4210         * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't
4211         set force_output.
4213 2016-01-14  Jason Merrill  <jason@redhat.com>
4215         PR c++/69261
4216         * constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR.
4218 2016-01-12  Marek Polacek  <polacek@redhat.com>
4220         PR c++/68979
4221         * constexpr.c (cxx_eval_check_shift_p): Use permerror rather than
4222         error_at and adjust the return value.
4224 2016-01-12  Jakub Jelinek  <jakub@redhat.com>
4226         PR objc++/68511
4227         PR c++/69213
4228         * cp-gimplify.c (cp_gimplify_expr) <case INIT_EXPR>: Don't return
4229         GS_ERROR whenever seen_error (), only if *expr_p contains
4230         cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed.
4232         PR c++/66808
4233         PR c++/69000
4234         * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO.
4236 2016-01-11  Jason Merrill  <jason@redhat.com>
4238         PR c++/69131
4239         * method.c (walk_field_subobs): Add dtor_from_ctor parm.
4240         (process_subob_fn): Likewise.  Don't consider triviality if true.
4241         (synthesize_method_walk): Pass it.
4243 2016-01-11  David Malcolm  <dmalcolm@redhat.com>
4245         PR c++/68795
4246         * parser.c (cp_parser_postfix_expression): Initialize
4247         close_paren_loc to UNKNOWN_LOCATION; only use it if
4248         it has been written to by
4249         cp_parser_parenthesized_expression_list.
4250         (cp_parser_parenthesized_expression_list): Document the behavior
4251         with respect to the CLOSE_PAREN_LOC param.
4253 2016-01-11  Jakub Jelinek  <jakub@redhat.com>
4255         PR c++/69211
4256         * cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR
4257         folded operands have side-effects, but folding changed any of them,
4258         build a new tree with the folded operands instead of returning the
4259         unfolded tree.
4261 2016-01-09  Marek Polacek  <polacek@redhat.com>
4263         PR c++/69113
4264         * decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set.
4266 2016-01-09  Jakub Jelinek  <jakub@redhat.com>
4268         PR c++/69164
4269         * class.c (layout_class_type): Use copy_node to copy FIELD_DECLs.
4271 2016-01-08  Jason Merrill  <jason@redhat.com>
4273         PR c++/69158
4274         * constexpr.c (cxx_fold_indirect_ref): Handle array type differing
4275         in completion.
4277 2016-01-08  Marek Polacek  <polacek@redhat.com>
4279         PR c++/68449
4280         * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer.
4282 2016-01-08  Jason Merrill  <jason@redhat.com>
4284         * constexpr.c (cxx_eval_call_expression): Remove convert_to_void
4285         workaround.
4287         PR c++/68983
4288         PR c++/67557
4289         * cvt.c (convert_to_void): Don't strip a TARGET_EXPR of
4290         TREE_ADDRESSABLE type.
4292         PR c++/68983
4293         PR c++/67557
4294         * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR.
4296 2016-01-05  Nathan Sidwell  <nathan@acm.org>
4298         PR c++/58583
4299         * pt.c (build_non_dependent_expr): Don't try a checking fold when
4300         parsing an nsdmi.
4302 2016-01-04  Jakub Jelinek  <jakub@redhat.com>
4304         Update copyright years.
4306 Copyright (C) 2016 Free Software Foundation, Inc.
4308 Copying and distribution of this file, with or without modification,
4309 are permitted in any medium without royalty provided the copyright
4310 notice and this notice are preserved.