* pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow
[official-gcc.git] / gcc / cp / ChangeLog
blobc666f1689652fe5a2553330639cff7cb36800b44
1 2016-12-07  Nathan Sidwell  <nathan@acm.org>
3         * pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow
4         and avoid re-tsubsting type.
6         * cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER &
7         CPTI_DECLTYPE_AUTO_IDENTIFIER.
8         (auto_identifier, decltype_auto_identifier): New.
9         *decl.c (initialize_predefined_identifiers): Add 'auto' and
10         'decltype(auto)'.
11         (grokdeclarator): Use cached identifier.
12         * pt.c (make_decltype_auto, make_auto, make_constrained_auto,
13         is_auto): Likewise.
15 2016-12-02  Jakub Jelinek  <jakub@redhat.com>
17         PR c++/78649
18         * pt.c (tsubst_init): Don't call build_value_init if decl's type
19         is error_mark_node.
21 2016-12-02  Cesar Philippidis  <cesar@codesourcery.com>
22             James Norris  <jnorris@codesourcery.com>
24         * parser.c (cp_parser_oacc_enter_exit_data): Update diagnostics.
25         (cp_parser_pragma): Error when PRAGMA_OACC_{ENTER_DATA,
26         EXIT_DATA,WAIT} are not used in compound statements.
28 2016-12-01  Jason Merrill  <jason@redhat.com>
30         * call.c (add_function_candidate): Also exclude inherited ctors
31         that take a type reference-related to the derived class.
33         * call.c (add_function_candidate): Exclude inherited copy/move
34         ctors.
36 2016-11-29  David Malcolm  <dmalcolm@redhat.com>
38         PR c++/77922
39         * name-lookup.c (lookup_name_fuzzy): Filter out reserved words
40         that were filtered out by init_reswords.
42 2016-11-28  Jakub Jelinek  <jakub@redhat.com>
43             Jason Merrill  <jason@redhat.com>
45         PR c++/72808
46         * decl.c (finish_enum_value_list): Call fixup_type_variants on
47         current_class_type after
48         insert_late_enum_def_into_classtype_sorted_fields.
50 2016-11-28  Jakub Jelinek  <jakub@redhat.com>
52         PR c++/77591
53         * typeck.c (maybe_warn_about_returning_address_of_local): Optimize
54         whats_returned through fold_for_warn.
56 2016-11-27  Jason Merrill  <jason@redhat.com>
58         PR c++/77907
59         * constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.
61 2016-11-24  Martin Liska  <mliska@suse.cz>
63         PR bootstrap/78493
64         * parser.c (cp_parser_range_for): Use safe_push instead of quick_push.
66 2016-11-23  Jakub Jelinek  <jakub@redhat.com>
68         PR c++/77907
69         * cp-gimplify.c (cp_fold) <case CALL_EXPR>: When calling constructor
70         and maybe_constant_value returns non-CALL_EXPR, create INIT_EXPR
71         with the object on lhs and maybe_constant_value returned expr on rhs.
73         PR c++/71450
74         * pt.c (tsubst_copy): Return error_mark_node when mark_used
75         fails, even when complain & tf_error.
77         PR c++/77739
78         * cp-gimplify.c (cp_gimplify_tree) <case VEC_INIT_EXPR>: Pass
79         false as handle_invisiref_parm_p to cp_genericize_tree.
80         (struct cp_genericize_data): Add handle_invisiref_parm_p field.
81         (cp_genericize_r): Don't wrap is_invisiref_parm into references
82         if !wtd->handle_invisiref_parm_p.
83         (cp_genericize_tree): Add handle_invisiref_parm_p argument,
84         set wtd.handle_invisiref_parm_p to it.
85         (cp_genericize): Pass true as handle_invisiref_parm_p to
86         cp_genericize_tree.  Formatting fix.
88 2016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>
90         PR c++/71973
91         * decl.c (duplicate_decls): Warn when a built-in function is redefined.
92         Don't overload builtin functions with C++ functions.
93         Handle const_tm_ptr_type_node like file_ptr_node.
94         Copy the TREE_NOTHROW flag unmodified to the old decl.
96 2016-11-18  Jason Merrill  <jason@redhat.com>
98         PR objc++/78418 - ICE in string tests on darwin
99         * tree.c (lvalue_kind): Guard DECL_HAS_VALUE_EXPR_P.
101 2016-11-18  Jakub Jelinek  <jakub@redhat.com>
103         PR c++/77285
104         * mangle.c (mangle_tls_init_fn, mangle_tls_wrapper_fn): Call
105         check_abi_tags.
107 2016-11-18  Jason Merrill  <jason@redhat.com>
109         PR c++/67631 - list-init and explicit conversions
110         * semantics.c (finish_compound_literal): Call digest_init_flags.
111         * typeck2.c (digest_init_flags): Add complain parm.
112         (store_init_value): Pass it.
114 2016-11-18  Richard Sandiford  <richard.sandiford@arm.com>
115             Alan Hayward  <alan.hayward@arm.com>
116             David Sherwood  <david.sherwood@arm.com>
118         * class.c (finish_struct_bits): Use SET_DECL_MODE.
119         (build_base_field_1, layout_class_type, finish_struct_1): Likewise.
120         * decl.c (make_label_decl): Likewise.
121         * pt.c (tsubst_decl): Likewise.
123 2016-11-17  Jason Merrill  <jason@redhat.com>
125         PR c++/78193 - inherited ctor regressions on sparc32.
126         * call.c (build_over_call): Don't set CALL_FROM_THUNK_P here.
127         (build_call_a): Set it here, and don't insert EMPTY_CLASS_EXPR.
128         (convert_like_real) [ck_rvalue]: Also pass non-addressable
129         types along directly.
131 2016-11-17  Paolo Carlini  <paolo.carlini@oracle.com>
133         PR c++/55080
134         * parser.c (cp_parser_non_integral_constant_expression): Issue a
135         pedwarn instead of an error for case NIC_FLOAT.
137 2016-11-17  Jason Merrill  <jason@redhat.com>
139         PR c++/78124 - list-initialization and inherited ctor
140         * name-lookup.c (do_class_using_decl): Set CLASSTYPE_NON_AGGREGATE.
142         PR c++/78369 - {} as default argument
143         * call.c (build_special_member_call): Handle CONSTRUCTOR.
145         PR c++/68377
146         * parser.c (cp_parser_fold_expression): Check TREE_NO_WARNING.
148 2016-11-16  Jason Merrill  <jason@redhat.com>
150         PR c++/78373
151         * decl.c (cp_finish_decl): Don't set TREE_CONSTANT on a reference.
152         * typeck2.c (store_init_value): Likewise.
154         * decl.c (store_decomp_type, lookup_decomp_type): New.
155         (cp_finish_decomp): Call store_decomp_type.
156         * semantics.c (finish_decltype_type): Call lookup_decomp_type.
157         * cp-tree.h: Declare lookup_decomp_type.
159 2016-11-15  Jakub Jelinek  <jakub@redhat.com>
161         * decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl,
162         set DECL_ASSEMBLER_NAME.
163         * parser.c (cp_parser_decomposition_declaration): Likewise
164         if returning error_mark_node.
165         * mangle.c (mangle_decomp): New function.
166         * cp-tree.h (mangle_decomp): New declaration.
168 2016-11-15  Jason Merrill  <jason@redhat.com>
170         PR c++/78358
171         * semantics.c (finish_decltype_type): Strip references for a tuple
172         decomposition.
173         * cp-tree.h (DECL_DECOMPOSITION_P): False for non-variables.
175         * decl2.c (decl_maybe_constant_var_p): References qualify.
176         * constexpr.c (non_const_var_error): Handle references.
177         * init.c (constant_value_1): Always check decl_constant_var_p.
178         * cp-gimplify.c (cp_fold_maybe_rvalue): Don't fold references.
179         * error.c (dump_decl_name): Split out from dump_decl.
181 2016-11-14  Jason Merrill  <jason@redhat.com>
183         * tree.c (bitfield_p): New.
184         * cp-tree.h: Declare it.
185         * typeck.c (cxx_sizeof_expr, cxx_alignof_expr)
186         (cp_build_addr_expr_1): Use it instead of DECL_C_BIT_FIELD.
187         * decl.c (cp_finish_decomp): Look through reference.  Always
188         SET_DECL_DECOMPOSITION_P.
189         * semantics.c (finish_decltype_type): Adjust decomposition handling.
191 2016-11-13  Jakub Jelinek  <jakub@redhat.com>
192             Jason Merrill  <jason@redhat.com>
194         Implement P0217R3 - C++17 structured bindings
195         * cp-tree.h (struct lang_decl_base): Add decomposition_p.
196         (DECL_DECOMPOSITION_P): New
197         (enum auto_deduction_context): Add adc_decomp_type.
198         (enum cp_declarator_kind): Add cdk_decomp.
199         * constexpr.c (cxx_eval_constant_expression): Look through
200         DECL_VALUE_EXPR.
201         (potential_constant_expression_1): Likewise.
202         * decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT.
203         (check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P.
204         (cp_finish_decl): Pass adc_decomp_type for decomposition.
205         (find_decomp_class_base, get_tuple_size, get_tuple_element_type)
206         (get_tuple_decomp_init, cp_finish_decomp): New.
207         (grokdeclarator): Handle decomposition.
208         * init.c (build_aggr_init): Handle decomposition array.
209         (build_vec_init): Handle initialization from { array }.
210         * name-lookup.c (add_function): Always wrap TEMPLATE_DECL in
211         OVERLOAD.
212         * parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp.
213         (function_declarator_p, strip_declarator_types)
214         (cp_parser_check_declarator_template_parameters): Likewise.
215         (cp_parser_range_for, cp_convert_range_for): Handle decomposition.
216         (cp_parser_simple_declaration): Parse decomposition.
217         (cp_parser_decomposition_declaration): New.
218         * pt.c (tsubst_decomp_names): New.
219         (subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition.
220         (do_auto_deduction): Handle adc_decomp_type.
221         * semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR.
222         * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
223         * tree.c (lvalue_kind): Likewise.
224         (cp_build_reference_type): Handle reference collapsing.
226 2016-11-13  Jason Merrill  <jason@redhat.com>
228         * call.c (build_new_method_call_1): Include template arguments in
229         error message.
230         (print_error_for_call_failure): Likewise.
231         (build_new_function_call): Pass them in.
232         * name-lookup.c (supplement_binding_1): Don't complain about a
233         conflict with an erroneous declaration.
234         * error.c (dump_decl): Fix printing of alias declaration.
235         * decl.c (make_typename_type): Call cxx_incomplete_type_error.
236         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
237         * semantics.c (perform_koenig_lookup): Don't wrap an error in
238         TEMPLATE_ID_EXPR.
240 2016-11-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
242         PR c/35503
243         * parser.c (cp_parser_postfix_pexpression): Call warn_for_restrict.
245 2016-11-12  Jason Merrill  <jason@redhat.com>
247         CWG 2233
248         * typeck.c (convert_arguments): Handle default arg followed by none.
250         * constexpr.c (potential_constant_expression_1): REALPART_EXPR and
251         IMAGPART_EXPR can be lvalues.
253         DR 374
254         PR c++/56480
255         * pt.c (check_specialization_namespace): Allow any enclosing
256         namespace.
257         (check_unqualified_spec_or_inst): New.
258         (check_explicit_specialization): Call it.
259         * parser.c (cp_parser_elaborated_type_specifier)
260         (cp_parser_class_head): Call it.
262 2016-11-10  Jason Merrill  <jason@redhat.com>
264         PR c++/77337
265         * pt.c (tsubst_friend_function): Don't set DECL_INITIAL.
266         (instantiate_decl): It's OK to defer a constexpr function.
267         * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): Check
268         DECL_LANG_SPECIFIC.
269         * decl2.c (decl_defined_p): Use it.  No longer static.
270         * decl.c (redeclaration_error_message): Use decl_defined_p.
271         * constexpr.c (cxx_eval_call_expression): Set input_location around
272         call to instantiate_decl.
274 2016-11-10  Jakub Jelinek  <jakub@redhat.com>
276         * mangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for
277         public or external symbols.
279 2016-11-09  Jakub Jelinek  <jakub@redhat.com>
281         PR c++/78283
282         * mangle.c (start_mangling): Reset G.need_cxx1z_warning.
284 2016-11-09  Jason Merrill  <jason@redhat.com>
286         * parser.c (cp_parser_simple_type_specifier): Allow placeholder
287         for template template parameter.
288         (cp_parser_type_id_1): Improve diagnostic.
289         * decl.c (grokdeclarator): Handle class deduction diagnostics here.
290         * pt.c (splice_late_return_type): Not here.
291         (tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template.
292         (do_class_deduction): Handle non-class templates.
294         Implement P0127R2, Declaring non-type parameters with auto.
295         * cp-tree.h (enum auto_deduction_context): Add adc_unify.
296         * decl.c (grokdeclarator): Allow 'auto' in C++17 template non-type
297         parameter types.
298         * pt.c (do_auto_deduction): Add outer_targs parameter.
299         (convert_template_argument): Call do_auto_deduction.  If adc_unify,
300         don't give up on dependent init.
301         (unify): Likewise.  In C++17, walk into the type of a
302         TEMPLATE_PARM_INDEX.
303         (for_each_template_parm): Add any_fn parameter.
304         (struct pair_fn_data): Likewise.
305         (for_each_template_parm_r): Call it for any tree.  In C++17, walk
306         into the type of a TEMPLATE_PARM_INDEX.
307         (zero_r, array_deduction_r, try_array_deduction): New.
308         (type_unification_real): Call try_array_deduction.
309         (get_partial_spec_bindings): Likewise.
311 2016-11-07  Jason Merrill  <jason@redhat.com>
313         Implement P0012R1, Make exception specifications part of the type
314         system.
315         * cp-tree.h (enum tsubst_flags): Add tf_fndecl_type.
316         (flag_noexcept_type, ce_type): New.
317         * call.c (build_conv): Add ck_fnptr.
318         (enum conversion_kind): Change ck_tsafe to ck_fnptr.
319         (convert_like_real): Likewise.
320         (standard_conversion): Likewise.  Allow function pointer
321         conversions for pointers to member functions.
322         (reference_compatible_p): Allow function pointer conversions.
323         (direct_reference_binding): Likewise.
324         (reference_binding): Reference-compatible is no longer a subset of
325         reference-related.
326         (is_subseq): Also strip ck_lvalue after next_conversion.
327         * class.c (instantiate_type): Check fnptr_conv_p.
328         (resolve_address_of_overloaded_function): Likewise.
329         * cvt.c (can_convert_tx_safety): Now static.
330         (noexcept_conv_p, fnptr_conv_p, strip_fnptr_conv): New.
331         * decl.c (flag_noexcept_type): Define.
332         (cxx_init_decl_processing): Set it.
333         (bad_specifiers): Check it.
334         (grokdeclarator) [cdk_function]: Add exception-spec to type here.
335         * lambda.c (maybe_add_lambda_conv_op): Add exception-spec to
336         returned pointer.
337         * mangle.c (struct globals): Add need_cxx1z_warning.
338         (mangle_decl): Check it.
339         (write_exception_spec): New.
340         (write_function_type): Call it.
341         (canonicalize_for_substitution): Handle exception spec.
342         (write_type): Likewise.
343         (write_encoding): Set processing_template_decl across mangling of
344         partially-instantiated type.
345         * pt.c (determine_specialization): Pass tf_fndecl_type.
346         (tsubst_decl, fn_type_unification): Likewise.
347         (tsubst): Strip tf_fndecl_type, pass it to
348         tsubst_exception_specification.
349         (convert_nontype_argument_function): Handle function pointer
350         conversion.
351         (convert_nontype_argument): Likewise.
352         (unify, for_each_template_parm_r): Walk into noexcept-specifier.
353         * rtti.c (ptr_initializer): Encode noexcept.
354         * tree.c (canonical_eh_spec): New.
355         (build_exception_variant): Use it.
356         * typeck.c (composite_pointer_type): Handle fnptr conversion.
357         (comp_except_specs): Compare canonical EH specs.
358         (structural_comptypes): Call it.
360         * call.c (standard_conversion): Reorganize pointer conversions.
361         * pt.c (convert_nontype_argument_function): Convert to ref here.
362         (convert_nontype_argument): Not here.
363         (convert_template_argument): Add original type to error message.
364         (RECUR_AND_CHECK_FAILURE): Remove trailing semicolon.
365         (unify): Compare function-qualifiers.
366         * typeck.c (same_type_ignoring_top_level_qualifiers_p): Use
367         cp_build_qualified_type rather than TYPE_MAIN_VARIANT.
369         * pt.c (push_tinst_level_loc): Add template instantiations to the
370         announce_function stream.
372 2016-11-04  Paolo Carlini  <paolo.carlini@oracle.com>
374         PR c++/67980
375         * pt.c (tsubst_expr, case IF_STMT): Use fold_non_dependent_expr
376         to suppress unwanted warnings.
378 2016-11-03  Jason Merrill  <jason@redhat.com>
380         PR c++/78198
381         * call.c (convert_default_arg): Look through inheriting ctors.
383 2016-11-03  Jakub Jelinek  <jakub@redhat.com>
384             Alexandre Oliva  <aoliva@redhat.com>
385             Jason Merrill  <jason@redhat.com>
387         PR debug/28767
388         PR debug/56974
389         * tree.c (cp_check_qualified_type): Use check_base_type and
390         TYPE_QUALS comparison instead of check_qualified_type.
391         (cxx_type_hash_eq): Return false if type_memfn_rqual don't match.
392         * cp-objcp-common.c (cp_get_debug_type): New function.
393         (cp_decl_dwarf_attribute): Don't handle types here.
394         (cp_type_dwarf_attribute): New function.
395         * cp-objcp-common.h (cp_get_debug_type, cp_type_dwarf_attribute):
396         Declare.
397         (LANG_HOOKS_GET_DEBUG_TYPE, LANG_HOOKS_TYPE_DWARF_ATTRIBUTE):
398         Define.
400 2016-11-03  Jason Merrill  <jason@redhat.com>
402         * tree.c (cp_check_qualified_type): Call check_base_type instead
403         of check_qualified_type.
404         (cxx_type_hash_eq): Check ref-qualifiers.
405         * typeck.c (apply_memfn_quals): No need to mess with TYPE_CANONICAL.
407 2016-11-01  Jason Merrill  <jason@redhat.com>
409         Implement P0136R1, Rewording inheriting constructors.
410         * call.c (enum rejection_reason_code): Add rr_inherited_ctor.
411         (inherited_ctor_rejection): New.
412         (add_function_candidate): Reject inherited ctors for copying.
413         (enforce_access): Use strip_inheriting_ctors.
414         (print_z_candidate): Likewise.  Handle rr_inherited_ctor.
415         (convert_like_real): Avoid copying inheriting ctor parameters.
416         (build_over_call): Likewise.  A base ctor inheriting from vbase
417         has no parms.  Sorry about varargs.
418         (joust): A local constructor beats inherited with the same convs.
419         * class.c (add_method): Handle hiding inheriting ctors.
420         (one_inherited_ctor): Handle new semantics.
421         (add_implicitly_declared_members): Pass using_decl down.
422         (build_clone): A base ctor inheriting from vbase has no parms.
423         * cp-tree.h (DECL_INHERITED_CTOR): Store this instead of the base.
424         (SET_DECL_INHERITED_CTOR): Likewise.
425         (DECL_INHERITED_CTOR_BASE): Adjust.
426         * constexpr.c: Adjust.
427         * error.c (dump_function_decl): Decorate inheriting ctors.
428         * init.c (emit_mem_initializers): Suppress access control in
429         inheriting ctor.
430         * mangle.c (write_special_name_constructor): Handle new inheriting
431         ctor mangling.
432         * method.c (strip_inheriting_ctors, inherited_ctor_binfo)
433         (ctor_omit_inherited_parms, binfo_inherited_from): New.
434         (synthesized_method_walk): Use binfo_inherited_from.  Suppress
435         access control in inheriting ctor.
436         (deduce_inheriting_ctor): Deleted if ambiguous ctor inheritance.
437         (maybe_explain_implicit_delete): Explain ambigous ctor inheritance.
438         (add_one_base_init, do_build_copy_constructor): Adjust.
439         (locate_fn_flags, explain_implicit_non_constexpr): Adjust.
440         (implicitly_declare_fn): Adjust.
441         (get_inherited_ctor): Remove.
442         * name-lookup.c (do_class_using_decl): Check for indirect ctor
443         inheritance.
444         * optimize.c (cdtor_comdat_group): Adjust for new mangling.
445         (maybe_clone_body): Handle omitted parms in base clone.
446         (maybe_thunk_body): Don't thunk if base clone omits parms.
447         * pt.c (tsubst_decl): Adjust.
448         (instantiate_template_1): Suppress access control in inheriting
449         ctor.
450         (fn_type_unification): Do deduction with inherited ctor.
451         * tree.c (special_function_p): Adjust.
453 2016-11-01  Jakub Jelinek  <jakub@redhat.com>
455         * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_inline.
457 2016-11-01  Jason Merrill  <jason@redhat.com>
459         * class.c (declared_access): Split out from handle_using_decl.
461 2016-10-31  Jakub Jelinek  <jakub@redhat.com>
463         PR c++/78089
464         * parser.c (cp_parser_postfix_expression): Replace return statement in
465         the first switch with setting postfix_expression to the return
466         expression and break;.
468         PR c++/77886
469         * pt.c (tsubst_expr) <case CASE_LABEL_EXPR> Copy over
470         FALLTHROUGH_LABEL_P flag to the new LABEL_DECL.
471         (tsubst_expr) <case LABEL_EXPR>: Likewise.
473 2016-09-11  Le-Chun Wu  <lcwu@google.com>
474             Mark Wielaard  <mjw@redhat.com>
476         * name-lookup.c (pushdecl_maybe_friend): When emitting a
477         shadowing warning, use the code corresponding to the
478         given -Wshadow= variant.
480 2016-10-26  Jason Merrill  <jason@redhat.com>
482         * class.c (add_method): Allow using-declarations to coexist.
484 2016-10-25  Jason Merrill  <jason@redhat.com>
486         * constexpr.c (maybe_constant_init): Pull out TARGET_EXPR_INITIAL.
487         (cxx_eval_outermost_constant_expr): Don't return a CONSTRUCTOR
488         with CONSTRUCTOR_NO_IMPLICIT_ZERO.
489         (cxx_eval_call_expression): Clear CONSTRUCTOR_NO_IMPLICIT_ZERO.
491 2016-10-25  Jakub Jelinek  <jakub@redhat.com>
493         * parser.c (cp_parser_postfix_expression): Adding missing break;.
495         * cp-tree.h (finish_builtin_launder): Declare.
496         * parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_LAUNDER.
497         * semantics.c (finish_builtin_launder): New function.
498         * pt.c (tsubst_copy_and_build): Handle instantiation of IFN_LAUNDER.
499         * constexpr.c (cxx_eval_internal_function): Handle IFN_LAUNDER.
500         (potential_constant_expression_1): Likewise.
502 2016-10-24  Jakub Jelinek  <jakub@redhat.com>
504         * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_reference
505         and DW_AT_rvalue_reference.
507         * cxx-pretty-print.c (pp_cxx_check_constraint): Use VAR_P (x)
508         instead of TREE_CODE (x) == VAR_DECL.
509         * constraint.cc (get_concept_definition): Likewise.
510         (finish_shorthand_constraint): Likewise.
511         * init.c (warn_placement_new_too_small): Likewise.
512         * cp-gimplify.c (cp_genericize_r): Likewise.
514 2016-10-21  Jason Merrill  <jason@redhat.com>
516         PR c++/77656
517         * pt.c (convert_template_argument): Call convert_nontype_argument
518         on value-dependent but not type-dependent arguments.
519         (convert_nontype_argument): Handle value-dependent arguments.
520         (canonicalize_expr_argument): New.
521         (deducible_expression, unify): Skip CONVERT_EXPR.
522         * error.c (dump_template_argument): Likewise.
523         * mangle.c (write_expression): Likewise.
525         * ptree.c (cxx_print_xnode) [TEMPLATE_PARM_INDEX]: Dump the decl.
527 2016-10-21  Jakub Jelinek  <jakub@redhat.com>
529         * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle
530         DW_AT_const_expr.
532 2016-10-17  Jakub Jelinek  <jakub@redhat.com>
534         * cp-objcp-common.h (cp_function_decl_explicit_p,
535         cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove.
536         (cp_decl_dwarf_attribute): Declare.
537         (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P,
538         LANG_HOOKS_FUNCTION_DECL_DELETED_P,
539         LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Remove.
540         (LANG_HOOKS_DECL_DWARF_ATTRIBUTE): Redefine.
541         * cp-objcp-common.c (cp_function_decl_explicit_p,
542         cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove.
543         (cp_decl_dwarf_attribute): New function.
545 2016-10-15  Jason Merrill  <jason@redhat.com>
547         PR c++/77945
548         * constexpr.c (maybe_simplify_trivial_copy): New.
549         (cxx_eval_store_expression): Call it.
550         * call.c (build_over_call): Use unsigned char for trivial copy.
552 2016-10-14  Jason Merrill  <jason@redhat.com>
554         Implement P0017R1, C++17 aggregates with bases.
555         * class.c (build_base_field_1): Split out from...
556         (build_base_field): ...here.  In C++17 mode, build a field for
557         empty bases.
558         * decl.c (xref_basetypes): In C++17 aggregates can have bases.
559         (next_initializable_field): Allow base fields in C++17.
560         * typeck2.c (process_init_constructor_record): Likewise.
562 2016-10-14  Jakub Jelinek  <jakub@redhat.com>
564         DR 1511 - const volatile variables and ODR
565         * decl.c (grokvardecl): Change flags argument to type_quals,
566         add conceptp argument.  Set TREE_PUBLIC for non-static volatile vars.
567         (grokdeclarator): Adjust grokvardecl caller.
569 2016-10-13  Martin Sebor  <msebor@redhat.com>
571         PR c++/71912
572         * class.c (struct flexmems_t):  Add members.
573         (find_flexarrays): Add arguments.  Correct handling of anonymous
574         structs.
575         (diagnose_flexarrays): Adjust to issue warnings in addition to errors.
576         (check_flexarrays): Add argument.
577         (diagnose_invalid_flexarray): New functions.
579 2016-10-13  Jakub Jelinek  <jakub@redhat.com>
580             Jason Merrill  <jason@redhat.com>
582         Implement P0386R2 - C++17 inline variables
583         * cp-tree.h (struct lang_type): Shrink language field to 1 bit
584         from 4.  Add var_declared_inline_p field.  Mention 2 spare bits.
585         (DECL_VAR_DECLARED_INLINE_P): Define.
586         (SET_DECL_VAR_DECLARED_INLINE_P): Define.
587         (DECL_INLINE_VAR_P): Define.
588         (diagnose_inline_vars_for_namespace): Declare.
589         * decl.c (diagnose_inline_vars_for_namespace): New function.
590         (duplicate_decls): For static data members copy
591         DECL_DECLARED_CONSTEXPR_P.
592         (redeclaration_error_message): Handle C++17 redundant redeclaration
593         of constexpr static data member outside of class.
594         (maybe_commonize_var): Handle inline variables.
595         (check_initializer): Ignore inline variables for diagnostics.
596         Adjust diagnostic wording for C++17.
597         (make_rtl_for_nonlocal_decl): Allow in-class definition of
598         inline static data members.
599         (bad_specifiers): Don't diagnose inline on variables here.
600         (grokvardecl): Add inlinep argument, non-static const inline variables
601         are TREE_PUBLIC.
602         (check_static_variable_definition): Return early also for inline
603         variables.
604         (mark_inline_variable): New.
605         (grokdeclarator): Handle inline variables and inline static data
606         members.
607         * typeck2.c (store_init_value): Don't diagnose non-constant
608         initializers for non-constexpr inline static data members.
609         * decl2.c (vague_linkage_p): Return true for inline variables.
610         (c_parse_final_cleanups): In-class declaration of inline static
611         data members is a definition.  Call diagnose_inline_vars_for_namespace
612         through walk_namespaces.
613         * pt.c (instantiate_decl): Set pattern_defined for in-class definitions
614         of inline static data members.
616 2016-10-13  Jason Merrill  <jason@redhat.com>
618         * decl.c (mark_inline_variable): New.
620 >>>>>>> .r241142
621 2016-10-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
623         * decl2.c: Include memmodel.h.
624         * rtti.c: Likewise.
626 2016-10-11  Jason Merrill  <jason@redhat.com>
628         PR c++/77742
629         * init.c (build_new_1): Don't -Waligned-new about placement new.
630         (malloc_alignment): New.  Consider MALLOC_ABI_ALIGNMENT.
631         * decl.c (cxx_init_decl_processing): New.
633 2016-10-10  Jason Merrill  <jason@redhat.com>
635         PR c++/77890
636         PR c++/77912
637         * pt.c (do_class_deduction): Set cp_unevaluated_operand.
638         (tsubst) [TEMPLATE_TYPE_PARM]: Copy CLASS_PLACEHOLDER_TEMPLATE.
640 2016-10-08  Jason Merrill  <jason@redhat.com>
642         * cp-gimplify.c (cp_fold): Add variable name.
644         * cp-gimplify.c (cp_fold): Distribute cp_truthvalue_conversion
645         into COND_EXPR.
647 2016-10-07  Jason Merrill  <jason@redhat.com>
649         Further P0135 refinement.
650         * call.c (build_user_type_conversion_1): Consider conversions from
651         a single element in an initializer-list.
652         (build_temp): Undo early_elide_copy change.
653         (build_over_call): Check that we don't try to copy a TARGET_EXPR
654         in C++17 mode.  Set user_conv_p here.
655         (convert_like_real): Not here.
656         (check_self_delegation): Split out from...
657         (build_special_member_call): ...here.  Handle C++17 copy elision.
658         * cvt.c (early_elide_copy): Remove.
659         (ocp_convert): Undo early_elide_copy change.
660         * except.c (build_throw): Likewise.
661         * init.c (expand_default_init): Likewise.
662         * typeck.c (cp_build_modify_expr): Likewise.
664 2016-10-07  Nathan Sidwell  <nathan@acm.org>
666         PR c++/64433
667         DR1658, DR1611
668         * init.c (emit_mem_initializers): Don't construct vbases of
669         abstract classes.
670         (push_base_cleanups): Don't push vbase cleanups for abstract class
671         when in C++14 mode.
672         * method.c (synthethesized_method_walk): Don't walk vbases of
673         abstract classes when in C++14 mode.
675 2016-10-07  Jakub Jelinek  <jakub@redhat.com>
677         Implement LWG2296 helper intrinsic
678         * parser.c (cp_parser_postfix_expression): Handle RID_ADDRESSOF.
679         * cp-objcp-common.c (cp_common_init_ts): Handle ADDRESSOF_EXPR.
680         * constexpr.c (potential_constant_expression_1): Likewise.
681         * error.c (dump_expr): Likewise.
682         * typeck.c (cp_build_addressof): New function.
683         * cp-tree.h (cp_build_addressof): Declare.
684         * cxx-pretty-print.h (pp_cxx_addressof_expression): Declare.
685         * cp-tree.def (ADDRESSOF_EXPR): New tree code.
686         * cxx-pretty-print.c (cxx_pretty_printer::primary_expression): Handle
687         ADDRESSOF_EXPR.  Add __builtin_addressof and
688         __has_unique_object_representations into syntax in function comment.
689         (pp_cxx_addressof_expression): New function.
690         * pt.c (tsubst_copy_and_build): Handle ADDRESSOF_EXPR.
692 2016-10-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>
694         PR c++/77700
695         * parser.c (cp_parser_base_specifier): Fix a warning.
697 2016-10-07  Bernd Schmidt  <bschmidt@redhat.com>
699         PR c++/69733
700         * decl.c (grokdeclarator): Try to find the correct location for an
701         ignored qualifier.
703 2016-10-07  Martin Liska  <mliska@suse.cz>
705         * lambda.c (maybe_add_lambda_conv_op): Set default value.
707 2016-10-06  Jason Merrill  <jason@redhat.com>
709         * call.c (build_temp, convert_like_real): Don't re-copy
710         TARGET_EXPR.  Handle packed fields.
711         (build_x_va_arg): Wrap it in a TARGET_EXPR.
712         (build_over_call): Add sanity check.
713         * cvt.c (early_elide_copy): New.
714         (ocp_convert): Use it.
715         * except.c (build_throw): Use it.
716         * init.c (get_nsdmi): Put back the TARGET_EXPR.
717         (expand_default_init): Call early_elide_copy.
718         * typeck.c (cp_build_modify_expr): Call early_elide_copy.
720 2016-10-06  Jakub Jelinek  <jakub@redhat.com>
722         Implement P0258R2 - helper for C++17
723         std::has_unique_object_representations trait
724         * cp-tree.h (enum cp_trait_kind): Add
725         CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
726         (struct lang_type_class): Add unique_obj_representations
727         and unique_obj_representations_set bitfields.
728         (CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS,
729         CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET): Define.
730         (type_has_unique_obj_representations): Declare.
731         * parser.c (cp_parser_primary_expression): Handle
732         RID_HAS_UNIQUE_OBJ_REPRESENTATIONS.
733         (cp_parser_trait_expr): Likewise.  Formatting fix.
734         * semantics.c (trait_expr_value, finish_trait_expr): Handle
735         CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
736         * tree.c (type_has_unique_obj_representations): New function.
737         (record_has_unique_obj_representations): New function.
738         * cxx-pretty-print.c (pp_cxx_trait_expression): Handle
739         CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
741 2016-10-05  Jason Merrill  <jason@redhat.com>
743         Implement P0135R1, Guaranteed copy elision.
744         * cvt.c (ocp_convert): Don't re-copy a TARGET_EXPR in C++17.
746         PR c++/54293
747         * call.c (reference_binding): Fix binding to member of temporary.
749         * call.c (extend_ref_init_temps): Fix TARGET_EXPR handling.
751         * parser.c (cp_parser_skip_to_end_of_statement): Add missing break.
753         * semantics.c (finish_compound_literal): Handle class placeholder.
755 2016-10-05  Marek Polacek  <polacek@redhat.com>
757         Implement P0305R1, Selection statements with initializer.
758         * cp-array-notation.c (create_an_loop): Call finish_init_stmt
759         instead of finish_for_init_stmt.
760         * cp-tree.h (finish_for_init_stmt): Rename to finish_init_stmt.
761         * decl.c (poplevel): Adjust a comment.
762         * init.c (build_vec_init): Call finish_init_stmt instead of
763         finish_for_init_stmt.
764         * name-lookup.c (pushdecl_maybe_friend_1): Adjust a comment.
765         * name-lookup.h (enum scope_kind): Likewise.
766         * parser.c (cp_parser_statement): Update commentary.
767         (cp_parser_init_statement_p): New function.
768         (cp_parser_selection_statement): Parse the optional init-statement.
769         (cp_parser_for): Call finish_init_stmt instead of finish_for_init_stmt.
770         (cp_parser_c_for): Likewise.
771         (cp_convert_range_for): Call finish_init_stmt instead of finish_for_init_stmt.
772         (cp_parser_range_for_member_function): Update commentary.
773         (cp_parser_iteration_statement):
774         (cp_parser_for_init_statement): Rename to cp_parser_init_statement.
775         * pt.c (tsubst_omp_for_iterator): Update commentary.
776         (tsubst_expr): Call finish_init_stmt instead of finish_for_init_stmt.
777         * semantics.c (finish_for_init_stmt): Rename to finish_init_stmt.
778         Update commentary.
780 2016-10-04  Jason Merrill  <jason@redhat.com>
782         PR c++/77852
783         * pt.c (do_class_deduction): Handle list-initialization.
784         (do_auto_deduction): Call it sooner.
785         (build_deduction_guide): Use tsubst_arg_types.
786         (rewrite_template_parm): Don't copy_type.
788         PR c++/77775
789         * constexpr.c (cxx_eval_component_reference): Use name matching
790         for PMFs.
792         Implement P0091R2, Template argument deduction for class templates.
793         * parser.c (cp_parser_simple_type_specifier): Parse class placeholder.
794         Use the location of the beginning of the type-specifier.
795         (cp_parser_init_declarator): Parse deduction guide.
796         (cp_parser_diagnose_invalid_type_name): Mention class deduction.
797         (cp_parser_type_id_1): Don't accept class placeholder as template arg.
798         * cp-tree.h (CLASS_PLACEHOLDER_TEMPLATE): New.
799         * decl.c (grokdeclarator): Check for uninitialized auto here.
800         (start_decl_1): Not here.
801         (cp_finish_decl): Or here.  Don't collapse a list when doing
802         class deduction.
803         (grokfndecl): Check deduction guide scope and body.
804         * error.c (dump_decl, dump_function_decl, dump_function_name):
805         Handle deduction guides.
806         * pt.c (make_template_placeholder, do_class_deduction): New.
807         (build_deduction_guide, rewrite_template_parm): New.
808         (dguide_name, dguide_name_p, deduction_guide_p): New.
809         (do_auto_deduction): Call do_class_deduction.
810         (splice_late_return_type, is_auto): Handle class placeholders.
811         (template_parms_level_to_args): Split from template_parms_to_args.
812         (tsubst_template_parms_level): Split from tsubst_template_parms.
813         * typeck2.c (build_functional_cast): Handle class placeholder.
815 2016-10-04  Martin Sebor  <msebor@redhat.com>
817         PR c++/77804
818         * init.c (warn_placement_new_too_small): Avoid assuming an array type
819         has a constant size.
821 2016-10-04  Jakub Jelinek  <jakub@redhat.com>
823         PR c++/77791
824         * parser.c (cp_parser_lambda_declarator_opt): Only pedwarn
825         for C++11 on decls in the param_list.  Test cxx_dialect < cxx14 before
826         the loop just once.
828         * cp-tree.h (enum cp_tree_index): Remove CPTI_JAVA_*,
829         CPTI_LANG_NAME_JAVA and CPTI_JCLASS.
830         (java_byte_type_node, java_short_type_node, java_int_type_node,
831         java_long_type_node, java_float_type_node, java_double_type_node,
832         java_char_type_node, java_boolean_type_node, lang_name_java,
833         jclass_node): Remove.
834         (enum languages): Remove lang_java.
835         (TYPE_FOR_JAVA): Remove.
836         (struct lang_type_class): Remove java_interface bit-field.
837         (TYPE_JAVA_INTERFACE): Remove.
838         (pragma_java_exceptions): Remove.
839         (check_java_method, build_java_class_ref): Remove prototypes.
840         * name-lookup.c (pushtag_1): Don't set TYPE_FOR_JAVA.
841         * decl2.c (acceptable_java_type, check_java_method): Remove.
842         (import_export_decl): Remove TYPE_FOR_JAVA handling.
843         (build_java_method_aliases): Remove.
844         (c_parse_final_cleanups): Don't call build_java_method_aliases.
845         (possibly_inlined_p): Don't test pragma_java_exceptions.
846         * init.c (build_new_1): Remove TYPE_FOR_JAVA handling.
847         (build_java_class_ref): Remove.
848         * pt.c (maybe_new_partial_specialization, lookup_template_class_1,
849         instantiate_class_template_1): Don't copy TYPE_FOR_JAVA.
850         * except.c (eh_type_info): Remove java type handling.
851         (decl_is_java_type, choose_personality_routine): Remove.
852         (initialize_handler_parm): Don't call choose_personality_routine.
853         (expand_start_catch_block): Don't handle java types.
854         (build_throw): Likewise.
855         * cp-lang.c (cp_eh_personality): Don't handle pragma_java_exceptions.
856         * typeck.c (structural_comptypes): Don't compare TYPE_FOR_JAVA.
857         * call.c (build_over_call): Don't handle TYPE_JAVA_INTERFACE.
858         (java_iface_lookup_fn): Remove.
859         (build_java_interface_fn_ref): Remove.
860         * tree.c (cxx_attribute_table): Remove java_interface.
861         (handle_java_interface_attribute): Remove.
862         * lex.c (pragma_java_exceptions): Remove.
863         (init_cp_pragma): Don't register GCC java_exceptions pragma.
864         (handle_pragma_java_exceptions): Remove.
865         (retrofit_lang_decl): Don't handle lang_name_java.
866         * method.c (implicitly_declare_fn): Don't handle TYPE_FOR_JAVA.
867         * error.c (language_to_string): Don't handle lang_java.
868         * decl.c (record_builtin_java_type): Remove.
869         (initialize_predefined_identifiers): Remove Java.
870         (cxx_init_decl_processing): Remove java_*_type_node.
871         (cp_finish_decl): Don't handle TYPE_FOR_JAVA.
872         (grokfndecl): Likewise.
873         (check_special_function_return_type): Likewise.
874         (grokdeclarator): Don't set TYPE_FOR_JAVA.
875         (grokparms): Don't handle TYPE_FOR_JAVA.
876         (xref_basetypes): Likewise.
877         (check_function_type): Likewise.
878         (finish_constructor_body): Likewise.
879         * mangle.c (write_builtin_type): Don't handle TYPE_FOR_JAVA
880         and java_*_type_node.
881         (write_bare_function_type): Don't handle TYPE_FOR_JAVA.
882         (write_java_integer_type_codes): Remove.
883         * class.c (add_method): Don't handle TYPE_FOR_JAVA.
884         (add_implicitly_declared_members, determine_key_method,
885         finish_struct_1): Likewise.
886         (push_lang_context): Don't handle lang_name_java.
888 2016-10-03  Marek Polacek  <polacek@redhat.com>
890         Core 903
891         * typeck.c (cp_build_binary_op): Pass original operands to
892         null_ptr_cst_p, not those after the default conversions.
894 2016-10-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
896         * parser.c (cp_parser_condition): Fix a warning.
898 2016-09-29  Jakub Jelinek  <jakub@redhat.com>
900         Implement P0001R1 - C++17 removal of register storage class specifier
901         * decl.c (cp_finish_decl): Diagnose register storage class
902         on vars except when used in GNU global or local register variable
903         extension.
904         (grokdeclarator): Diagnose register storage class on parameters.
905         * except.c (expand_start_catch_block): Set DECL_REGISTER only
906         after cp_finish_decl call.
908 2016-09-29  Marek Polacek  <polacek@redhat.com>
910         * rtti.c (involves_incomplete_p): Add fall through comment.
912 2016-09-28  Jakub Jelinek  <jakub@redhat.com>
914         PR c++/77467
915         * constexpr.c (enum constexpr_switch_state): New.
916         (struct constexpr_ctx): Add css_state field.
917         (label_matches): Add CTX and STMT arguments, remove I and
918         DEFAULT_LABEL.  For CASE_LABEL_EXPR assert ctx->css_state != NULL,
919         handle default labels according to css_state.
920         (cxx_eval_statement_list): Remove statement skipping, label_matches
921         and default_label handling code.
922         (cxx_eval_loop_expr): Exit after first iteration even if
923         switches (jump_target).
924         (cxx_eval_switch_expr): Set up css_state field in ctx, if default
925         label has been seen in the body, but no cases matched, evaluate
926         the body second time.
927         (cxx_eval_constant_expression): Handle stmt skipping and label_matches
928         here.  Handle PREDICT_EXPR.  For MODIFY_EXPR or INIT_EXPR, assert
929         statement is not skipped.  For COND_EXPR during skipping, don't
930         evaluate condition, just the then block and if still skipping at the
931         end also the else block.
932         (cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer.
933         (is_sub_constant_expr): Likewise.
935 2016-09-27  Jakub Jelinek  <jakub@redhat.com>
937         Implement P0018R3, C++17 lambda capture of *this by value as [=,*this]
938         * parser.c (cp_parser_lambda_introducer): Formatting fix.  Pass
939         true instead of false as by_reference_p to add_capture for 'this'.
940         Parse '*this' simple-capture.
941         * lambda.c (build_capture_proxy): Handle '*this' capture by value.
942         (add_capture): Adjust function comment.  For id == this_identifier,
943         treat by_reference_p as capturing '*this' by reference, i.e. 'this'
944         by value, and !by_reference_p as capturing '*this' by value.
945         (add_default_capture): For implicit 'this' capture, always pass
946         by_reference_p true rather than false.
948         PR c++/77722
949         * cp-gimplify.c (cp_ubsan_maybe_instrument_return): Instrument also
950         functions that have just a STATEMENT_LIST instead of BIND_EXPR, or
951         BIND_EXPR with some statement rather than STATEMENT_LIST as body.
953 2016-09-26  Nathan Sidwell  <nathan@acm.org>
955         * init.c (expand_default_init): Fix } indentation.
956         * method.c (process_subob_fn): Simplify control structure to
957         remove gotos.
958         (implicitly_declare_fn): Remove duplicated lambda ctor check.
960 2016-09-26  Marek Polacek  <polacek@redhat.com>
962         PR c/7652
963         * parser.c (cp_parser_storage_class_specifier_opt): Add
964         gcc_fallthrough.
965         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
966         (cp_parser_cache_defarg): Likewise.
967         (cp_parser_omp_for_cond): Likewise.
968         * semantics.c (finish_decltype_type): Likewise.
969         * typeck.c (structural_comptypes): Likewise.
970         (cp_build_binary_op): Likewise.
971         (cp_build_modify_expr): Likewise.
973 2016-09-26  Marek Polacek  <polacek@redhat.com>
975         PR c/7652
976         * constexpr.c (cxx_eval_internal_function): Handle IFN_FALLTHROUGH.
977         (potential_constant_expression_1): Likewise.
978         * constraint.cc (function_concept_check_p): Check fn for null.
979         * parser.c (cp_parser_expression_statement): Handle attribute
980         fallthrough.
981         (cp_parser_statement): Likewise.
982         (cp_parser_label_for_labeled_statement): Set FALLTHROUGH_LABEL_P on
983         labels.
984         (cp_parser_std_attribute): Handle fallthrough attribute.
985         (cp_parser_check_std_attribute): Add %< %> quotes.
986         * pt.c (tsubst_copy_and_build): Handle internal functions.
987         (instantiation_dependent_scope_ref_p): Return if the expression is
988         null.
990 2016-09-24  Marek Polacek  <polacek@redhat.com>
992         PR c/77490
993         * typeck.c (cp_build_unary_op): Warn about bit not on expressions that
994         have boolean value.
996 2016-09-23  Jakub Jelinek  <jakub@redhat.com>
998         Implement P0138R2, C++17 construction rules for enum class values
999         * cp-tree.h (is_direct_enum_init): Declare.
1000         * decl.c (is_direct_enum_init): New function.
1001         (reshape_init): Use it.
1002         * typeck.c (convert_for_assignment): Likewise.
1004         * Make-lang.in (check-c++1z): Pass RUNTESTFLAGS down to
1005         make check-g++.
1007         * constexpr.c (call_stack): Remove unnecessary
1008         = vNULL initialization of file scope vec.
1010         * name-lookup.c (store_bindings, store_class_bindings): Don't
1011         initialize static local bindings_need_stored to vNULL.
1013         * typeck2.c (process_init_constructor_record): Use
1014         CONSTRUCTOR_NELTS (...) instead of
1015         vec_safe_length (CONSTRUCTOR_ELTS (...)).
1016         * decl.c (reshape_init_r): Likewise.
1017         (check_initializer): Likewise.
1019 2016-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
1021         PR c++/71979
1022         * class.c (build_base_path): Allow for lookup_base returning
1023         NULL_TREE.
1025 2016-09-21  Jason Merrill  <jason@redhat.com>
1027         Core 903
1028         * call.c (null_ptr_cst_p): Check char_type_p.
1030 2016-09-21  Jakub Jelinek  <jakub@redhat.com>
1032         PR c++/77651
1033         * init.c (build_new_1): Don't suggest to use -faligned-new if
1034         aligned_new_threshold is non-zero.
1035         (type_has_new_extended_alignment): Change aligned_new_threshhold
1036         to aligned_new_threshold.
1037         * call.c (second_parm_is_size_t, aligned_allocation_fn_p,
1038         aligned_deallocation_fn_p, build_op_delete_call): Likewise.
1039         * decl.c (cxx_init_decl_processing): Likewise.
1041 2016-09-20  Jakub Jelinek  <jakub@redhat.com>
1043         PR c++/77626
1044         * constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on
1045         FIELD_DECLs with error_mark_node type.  Remove useless break; after
1046         return.
1048         PR c++/77638
1049         * parser.c (cp_parser_template_declaration_after_parameter): For 2
1050         argument operator"" template set ok to false for
1051         parm == error_mark_node.
1053         PR c++/77637
1054         * parser.c (cp_parser_std_attribute_list): Reject ... without
1055         preceding attribute.
1057 2016-09-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1059         PR c++/77434
1060         * cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here.
1062 2016-09-16  Patrick Palka  <ppalka@gcc.gnu.org>
1064         PR c++/77639
1065         * parser.c (cp_parser_class_head): When
1066         processing_template_parmlist, don't assume that the
1067         class-head may start an explicit specialization.
1069 2016-09-16  Jakub Jelinek  <jakub@redhat.com>
1071         PR c++/77482
1072         * error.c (dump_simple_decl): Only check DECL_DECLARED_CONCEPT_P
1073         if DECL_LANG_SPECIFIC is non-NULL.  Fix up formatting.
1075         PR c++/77338
1076         * constexpr.c (cxx_eval_constant_expression) <case PARM_DECL>: Only
1077         call is_really_empty_class on complete types.
1079         PR c++/77375
1080         * class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any
1081         TYPE_HAS_MUTABLE_P for any bases.
1083 2016-09-16  Jason Merrill  <jason@redhat.com>
1085         * class.c (check_bases, set_one_vmethod_tm_attributes): Use
1086         least_bit_hwi.
1087         * decl.c (cxx_init_decl_processing): Use pow2p_hwi.
1088         * parser.c (cp_parser_cilk_simd_vectorlength): Use pow2p_hwi.
1090 2016-09-14  Jakub Jelinek  <jakub@redhat.com>
1092         PR c++/77549
1093         * name-lookup.c (consider_binding_level): Look through TREE_LIST
1094         and OVERLOAD.
1096 2016-09-14  Marek Polacek  <polacek@redhat.com>
1098         * typeck.c (cp_build_unary_op): Diagnose incrementing boolean
1099         expressions.  Tweak an error message.
1101 2016-09-14  Marek Polacek  <polacek@redhat.com>
1103         * cp-tree.h (cp_build_unary_op): Change nonconvert parameter type to
1104         bool.
1105         * decl2.c (one_static_initialization_or_destruction): Use true instead
1106         of 1.
1107         * init.c (build_vec_init): Use false instead of 0.
1108         * pt.c (tsubst_copy_and_build): Likewise.
1109         * semantics.c (simplify_loop_decl_cond): Likewise.
1110         * typeck.c (rationalize_conditional_expr): Likewise.
1111         (cp_build_binary_op): Use true instead of 1.
1112         (cp_build_unary_op): Change nonconvert parameter type to bool.  Use true
1113         instead of 1.
1114         (build_unary_op): Change nonconvert parameter type to bool.
1115         (unary_complex_lvalue): Use false instead of 0.
1117 2016-09-13  Jakub Jelinek  <jakub@redhat.com>
1119         Implement P0028R4, C++17 using attribute namespaces without repetition
1120         * parser.c (cp_parser_std_attribute): Add ATTR_NS argument.  Diagnose
1121         non-NULL ATTR_NS with scoped attribute token.  Handle non-NULL
1122         ATTR_NS with non-scoped attribute tokens.  Allow named ops in
1123         identifier after ::.
1124         (cp_parser_std_attribute_list): Add ATTR_NS argument, pass it down
1125         to cp_parser_std_attribute calls.
1126         (cp_parser_std_attribute_spec): Parse optional C++17
1127         attribute-using-prefix, adjust grammar in function comment.
1129         PR c++/77553
1130         * constexpr.c (cxx_fold_pointer_plus_expression): New function.
1131         (cxx_eval_binary_expression): Use it for POINTER_PLUS_EXPR.
1132         (cxx_eval_pointer_plus_expression): Remove.
1133         (cxx_eval_constant_expression) <case POINTER_PLUS_EXPR>: Don't
1134         call cxx_eval_pointer_plus_expression.
1136 2016-09-13  David Malcolm  <dmalcolm@redhat.com>
1138         * parser.c (cp_parser_class_specifier_1): Update for renaming of
1139         add_fixit_insert to add_fixit_insert_before.
1140         (cp_parser_class_head): Likewise.
1142 2016-09-12  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1144         PR c++/77496
1145         * call.c (build_conditional_expr_1): Call warn_for_omitted_condop.
1146         * class.c (instantiate_type): Look through the SAVE_EXPR.
1148 2016-09-09  Jason Merrill  <jason@redhat.com>
1150         Implement P0035R4, C++17 new of over-aligned types.
1151         * cp-tree.h (enum cp_tree_index): Add CPTI_ALIGN_TYPE.
1152         (align_type_node): New macro.
1153         * call.c (build_operator_new_call): Handle C++17 aligned new.
1154         (second_parm_is_size_t, build_op_delete_call): Likewise.
1155         (non_placement_deallocation_fn_p): Likewise. Rename to
1156         usual_deallocation_fn_p.
1157         (aligned_allocation_fn_p, aligned_deallocation_fn_p): New.
1158         * decl.c (cxx_init_decl_processing): Add aligned new support.
1159         * init.c (type_has_new_extended_alignment): New.
1160         (build_new_1): Handle aligned new.
1161         * tree.c (vec_copy_and_insert): New.
1163 2016-09-02  Jakub Jelinek  <jakub@redhat.com>
1165         PR sanitizer/77396
1166         * decl2.c (do_static_initialization_or_destruction): Only
1167         call asan_dynamic_init_call if INITP is true.
1169 2016-09-01  Martin Sebor  <msebor@redhat.com>
1171         * mangle.c: Increase buffer size to guarantee it fits the output
1172         of the formatted function regardless of its arguments.
1174 2016-09-01  Marek Polacek  <polacek@redhat.com>
1176         PR c/7652
1177         * error.c (dump_type): Fix falls through comment.
1178         (dump_decl): Likewise.
1179         (dump_expr): Likewise.
1181 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
1183         * parser.c (cp_parser_enclosed_template_argument_list): Add fix-it
1184         hint to ">>" within nested template argument list error.
1186 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
1188         * name-lookup.c (suggest_alternatives_for): Use add_fixit_replace
1189         rather than add_fixit_misspelled_id.
1190         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
1192 2016-08-29  Jason Merrill  <jason@redhat.com>
1194         PR c++/77379
1195         * mangle.c (maybe_check_abi_tags): Add version parm, handle thunks.
1196         (mangle_thunk): Add thunk parameter.
1197         * method.c (finish_thunk): Pass it.
1198         * cp-tree.h: Declare it.
1200 2016-08-15  Jason Merrill  <jason@redhat.com>
1202         Avoid calling a trivial default constructor.
1203         * class.c (default_ctor_p): New.
1204         (in_class_defaulted_default_constructor): Use it.
1205         (type_has_non_user_provided_default_constructor): Use it.
1206         * call.c (build_over_call): Handle trivial default constructor.
1207         * cp-tree.h: Declare default_ctor_p.
1209         PR c++/57728
1210         * pt.c (do_type_instantiation): Don't mess with non-user-provided
1211         member functions.
1213 2016-08-25  Marek Polacek  <polacek@redhat.com>
1215         * parser.c (cp_parser_binary_expression): Pass LHS to
1216         warn_logical_not_parentheses.
1218 2016-08-18  Marek Polacek  <polacek@redhat.com>
1220         PR c/7652
1221         * call.c (add_builtin_candidate): Add gcc_fallthrough.
1222         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
1223         * parser.c (cp_parser_skip_to_end_of_statement): Likewise.
1224         (cp_parser_cache_defarg): Likewise.
1226 2016-08-12  Marek Polacek  <polacek@redhat.com>
1228         PR c/7652
1229         * call.c (add_builtin_candidate): Add FALLTHRU.
1230         (build_integral_nontype_arg_conv): Adjust fall through comment.
1231         (build_new_op_1): Add FALLTHRU.
1232         (convert_like_real): Adjust fall through comment.
1233         * class.c (fixed_type_or_null): Likewise.
1234         * constexpr.c (cxx_eval_constant_expression): Likewise.
1235         (potential_constant_expression_1): Likewise.  Add FALLTHRU.
1236         * cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment.
1237         (cp_fold): Add FALLTHRU.
1238         * cvt.c (build_expr_type_conversion): Adjust fall through comment.
1239         * cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU.
1240         (pp_cxx_qualified_id): Likewise.
1241         (cxx_pretty_printer::constant): Adjust fall through comment.
1242         (cxx_pretty_printer::primary_expression): Add FALLTHRU.
1243         (pp_cxx_pm_expression): Adjust fall through comment.
1244         (cxx_pretty_printer::expression): Add FALLTHRU.
1245         (cxx_pretty_printer::declaration_specifiers): Reformat code.
1246         (pp_cxx_type_specifier_seq): Adjust fall through comment.
1247         (pp_cxx_ptr_operator): Likewise.  Add FALLTHRU.
1248         * error.c (dump_type): Adjust fall through comment.
1249         (dump_decl): Likewise.
1250         * mangle.c (write_type): Likewise.
1251         * method.c (synthesized_method_walk): Add FALLTHRU.
1252         * name-lookup.c (arg_assoc_type): Likewise.
1253         * parser.c (cp_lexer_print_token): Adjust fall through comment.
1254         (cp_parser_primary_expression): Add FALLTHRU.
1255         (cp_parser_operator): Likewise.
1256         * pt.c (find_parameter_packs_r): Likewise.
1257         (tsubst_aggr_type): Adjust fall through comment.
1258         * semantics.c (finish_omp_clauses): Add FALLTHRU.
1259         * tree.c (lvalue_kind): Likewise.
1261 2016-08-12  Alexandre Oliva  <aoliva@redhat.com>
1263         PR debug/63240
1264         * cp-objcp-common.c (cp_function_decl_defaulted): New.
1265         (cp_function_decl_explicit_p): Const_tree-ify.
1266         (cp_function_decl_deleted_p): Likewise.
1267         * cp-objcp-common.h (cp_function_decl_defaulted): Declare.
1268         (cp_function_decl_explicit_p): Const_tree-ify.
1269         (cp_function_decl_deleted_p): Likewise.
1270         (LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine.
1272 2016-08-11  Jakub Jelinek  <jakub@redhat.com>
1274         PR c++/72868
1275         * constexpr.c (label_matches): Handle case range expressions.
1277 2016-08-11  Jason Merrill  <jason@redhat.com>
1279         PR c++/73456
1280         * logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION.
1282 2016-08-10  Jason Merrill  <jason@redhat.com>
1284         Implement C++17 constexpr if.
1285         * cp-tree.h (IF_STMT_CONSTEXPR_P): New.
1286         * name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it.
1287         * parser.h (struct cp_parser): Add in_discarded_stmt field.
1288         * parser.c (cp_parser_selection_statement): Handle 'if constexpr'.
1289         (cp_parser_jump_statement): Avoid deducing from a discarded return.
1290         * pt.c (tsubst_expr): Only instantiate taken branch of constexpr if.
1291         * semantics.c (begin_if_stmt): Set the binding level this_entity.
1292         (finish_if_stmt_cond): Require the condition of a
1293         constexpr if to be constant.
1294         * decl.c (level_for_constexpr_if): New.
1295         (named_label_entry): Add in_constexpr_if field.
1296         (poplevel_named_label_1): Set it.
1297         (check_goto): Check it.
1298         (check_previous_goto_1): Check level_for_constexpr_if.
1300 2016-08-09  Jason Merrill  <jason@redhat.com>
1302         PR c++/68703
1303         * decl2.c (any_dependent_type_attributes_p): New.
1304         * pt.c (dependent_type_p_r, type_dependent_expression_p): Check it.
1305         * semantics.c (finish_id_expression): Check it.
1306         * typeck.c (finish_class_member_access_expr): Check it.
1308         PR c++/71712
1309         * class.c (check_abi_tags): Don't duplicate tags for conversion ops.
1311         Adjust mangling of ABI tags on class template member functions.
1312         * class.c (missing_abi_tags): New.
1313         (check_abi_tags): Don't check template. Add just_checking mode.
1314         * mangle.c (abi_flag_at_least, any_abi_below, equal_abi_tags): New.
1315         (sorted_abi_tags): Split out from write_abi_tags.
1316         (struct releasing_vec): New.
1317         (write_unqualified_name): Only look for the primary
1318         template for types.  Implement backward compatibility.
1320         PR c++/72849
1321         * constexpr.c (cxx_eval_constant_expression): Check
1322         COMPLETE_TYPE_P before calling is_really_empty_class.
1323         * class.c (is_really_empty_class): Don't call complete_type.
1325         PR c++/56701
1326         * typeck.c (cp_build_addr_expr_1): Remove special *this handling.
1328 2016-08-09  Jakub Jelinek  <jakub@redhat.com>
1330         PR c++/72809
1331         * rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for
1332         builtin aggregate types without TYPE_BINFO.
1334 2016-08-08  Jason Merrill  <jason@redhat.com>
1336         Implement C++17 constexpr lambda.
1337         * class.c (finalize_literal_type_property): Handle lambdas.
1338         * constexpr.c (is_valid_constexpr_fn): Likewise.  No longer static.
1339         (explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle
1340         lambdas.
1341         (cxx_eval_constant_expression): Handle capture proxy.
1342         (var_in_constexpr_fn): Don't check for C++14.
1343         (var_in_maybe_constexpr_fn): New.
1344         (potential_constant_expression_1): Use it.  Check DECL_EXPR for
1345         declarations not allowed in constexpr function.  Handle
1346         STATIC_ASSERT, RANGE_FOR_STMT.
1347         * decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn.
1348         (finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members.
1349         * lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P.
1350         (maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location.
1351         (lambda_static_thunk_p): New.
1352         * parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR.
1353         (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator.
1354         (cp_parser_decl_specifier_seq): Handle it.
1355         (cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq.
1356         * pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P.
1357         (tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P.
1358         * error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS.
1359         (dump_expr) [FUNCTION_DECL]: Pass it.
1361 2016-08-08  Jason Merrill  <jason@redhat.com>
1363         PR c++/67131
1364         * class.c (is_really_empty_class): Call complete_type.
1365         * constexpr.c (cxx_eval_constant_expression): Check
1366         is_really_empty_class.
1367         (potential_constant_expression_1): Likewise.  Check for error type.
1369 2016-08-08  Jakub Jelinek  <jakub@redhat.com>
1371         PR c++/58706
1372         * parser.c: Include tree-iterator.h.
1373         (cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init
1374         to FOR_BLOCK.
1375         (cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK
1376         entries.
1378 2016-08-06  Jonathan Wakely  <jwakely@redhat.com>
1380         * call.c (convert_like_real): Harmonize diagnostics for invalid
1381         reference binding.
1383 2016-08-05  Martin Sebor  <msebor@redhat.com>
1385         * constexpr.c (cxx_eval_store_expression): Remove hyphen from
1386         the spelling of "constant-expression" in diagnostic messages
1387         for consistency.
1388         (cxx_eval_constant_expression): Same.
1389         (cxx_eval_outermost_constant_expr): Same.
1390         (potential_constant_expression_1): Same.
1392 2016-08-05  Nathan Sidwell  <nathan@acm.org>
1394         PR c++/68724
1395         * pt.c (unify): TRAIT_EXPR is an expr.
1397 2016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
1399         PR c++/72800
1400         * lambda.c (add_capture): Check lambda_capture_field_type return
1401         value for error_mark_node.
1403 2016-08-04  Patrick Palka  <ppalka@gcc.gnu.org>
1405         PR c++/72759
1406         * pt.c (tsubst_qualified_id): Return error_mark_node if
1407         template_args is error_mark_node.
1409 2016-08-04  Jason Merrill  <jason@redhat.com>
1411         PR c++/72415
1412         * pt.c (tsubst_pack_expansion): Pull a single pack expansion out
1413         of the TREE_VEC.
1415         * cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P.
1416         (TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS.
1417         * class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c,
1418         name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust.
1420         PR c++/72796
1421         * typeck.c (finish_class_member_access_expr): Avoid stripping
1422         SCOPE_REF to dependent base.
1424 2016-08-04  Thomas Schwinge  <thomas@codesourcery.com>
1426         * parser.c (cp_ensure_no_oacc_routine): Improve diagnostics.
1427         (cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics.
1428         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
1429         Simplify code, and improve diagnostics.
1430         (cp_parser_oacc_routine): Likewise.  Move pragma context
1431         checking...
1432         (cp_parser_pragma): ... here.
1434         * parser.h (struct cp_omp_declare_simd_data): New.
1435         (struct cp_parser): Use it for oacc_routine member.
1436         * parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine)
1437         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
1438         Use it.  Simplify code.
1439         (cp_parser_new): Initialize all members pointing to special
1440         parsing data structures.
1441         (cp_parser_cilk_simd_fn_vector_attrs): Initialize
1442         parser->cilk_simd_fn_info->clauses.
1443         (cp_parser_omp_declare_simd): Initialize
1444         parser->omp_declare_simd->clauses.
1445         (cp_parser_late_parsing_omp_declare_simd): Simplify code.
1447 2016-08-04  Marek Polacek  <polacek@redhat.com>
1449         PR c++/70229
1450         * constexpr.c (check_constexpr_ctor_body_1): Allow typedef
1451         declarations.
1453 2016-08-01  Jason Merrill  <jason@redhat.com>
1455         * mangle.c (mangle_decl): Warn about mangled name change even if
1456         DECL_REALLY_EXTERN.
1458         * mangle.c (get_abi_tags): New.
1459         (find_substitution, write_unqualified_name, write_abi_tags)
1460         (maybe_check_abi_tags): Use it.
1462         * mangle.c (mangle_decl): Fix mangled name change warning.
1464         PR c++/72766
1465         * constexpr.c (cxx_eval_pointer_plus_expression): Check constancy
1466         of nelts.
1467         * cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in
1468         C++11 and up.
1470 2016-07-30  Martin Sebor  <msebor@redhat.com>
1472         PR c++/60760
1473         PR c++/71091
1474         * constexpr.c (cxx_eval_binary_expression): Reject invalid expressions
1475         involving null pointers.
1476         (cxx_eval_component_reference): Reject null pointer dereferences.
1477         (cxx_eval_indirect_ref): Reject indirecting through null pointers.
1478         (cxx_eval_constant_expression): Reject invalid expressions involving
1479         null pointers.
1481 2016-07-29  Marek Polacek  <polacek@redhat.com>
1483         PR c/71926
1484         * semantics.c (maybe_convert_cond): Use the location of COND for the
1485         parentheses warning.
1487 2016-07-29  Jason Merrill  <jason@redhat.com>
1489         * decl.c (build_enumerator): Tweak diagnostic.
1491         PR c++/72457
1492         * init.c (expand_aggr_init_1): Only handle value-init of bases.
1493         * constexpr.c (build_data_member_initialization): Handle multiple
1494         initializers for the same field.
1496 2016-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
1498         PR c++/71665
1499         * decl.c (build_enumerator): Check the type of the enumerator before
1500         calling cxx_constant_value.
1502 2016-07-27  Jason Merrill  <jason@redhat.com>
1504         PR c++/71747
1505         * pt.c (get_partial_spec_bindings): Replace tparms and spec_args
1506         parameters with spec_tmpl.  Call push_tinst_level.
1507         (most_specialized_partial_spec): Adjust.
1508         (more_specialized_partial_spec): Adjust.
1510 2016-07-25  Jason Merrill  <jason@redhat.com>
1512         PR c++/65970
1513         * cp-gimplify.c (genericize_cp_loop): Revert location change.
1515         PR c++/71837
1516         * lambda.c (add_capture): Leave a pack expansion in a TREE_LIST.
1517         (build_lambda_object): Call build_x_compound_expr_from_list.
1518         * pt.c (tsubst) [DECLTYPE_TYPE]: Likewise.
1520         PR c++/71833
1521         PR c++/54440
1522         * pt.c (coerce_template_parameter_pack): Fix logic for
1523         pack index.
1525         PR c++/65970
1526         * constexpr.c (cxx_eval_loop_expr): Count iterations.
1527         * cp-gimplify.c (genericize_cp_loop): Use start_locus even for
1528         infinite loops.
1530         PR c++/71972
1531         * constexpr.c (cxx_eval_array_reference): Handle looking for the
1532         value of an element we're currently modifying.
1534 2016-07-24  Jason Merrill  <jason@redhat.com>
1536         PR c++/71515
1537         * pt.c (resolve_typename_type): Try to avoid calling
1538         currently_open_class.
1540 2016-07-23  Jason Merrill  <jason@redhat.com>
1542         PR c++/66617
1543         * call.c (add_list_candidates): Handle VTT parm.
1544         (build_new_method_call_1): Likewise.
1546         PR c++/55922
1547         PR c++/63151
1548         * init.c (expand_aggr_init_1): Handle list-initialization from {}.
1550         PR c++/70709
1551         * class.c (walk_subobject_offsets): Handle 0-length array.
1553         PR c++/70778
1554         * pt.c (tsubst): Also substitute into the template of a
1555         BOUND_TEMPLATE_TEMPLATE_PARM.
1557         PR c++/71738
1558         * pt.c (lookup_template_class_1): Handle getting template from tsubst.
1560         PR c++/71350
1561         * decl.c (reshape_init_r): Check complain for missing braces warning.
1563 2016-07-22  Jason Merrill  <jason@redhat.com>
1565         PR c++/71576
1566         * call.c (convert_like_real): Use lvalue_kind.
1568         PR c++/71748
1569         PR c++/52746
1570         * pt.c (tsubst_baselink): Call
1571         adjust_result_of_qualified_name_lookup for unqualified
1572         destructors.
1574 2016-07-21  Jason Merrill  <jason@redhat.com>
1576         PR c++/69223
1577         * semantics.c (apply_deduced_return_type): Call
1578         complete_type_or_else before building the new RESULT_DECL.
1580         PR c++/71274
1581         * decl2.c (maybe_instantiate_decl): Split out from mark_used.
1582         (decl_constant_var_p): Use it instead.
1584         PR c++/71630
1585         * pt.c (instantiate_decl): Fix pattern_defined for namespace scope
1586         variable templates.
1588         PR c++/71913
1589         * call.c (unsafe_copy_elision_p): It's OK to elide when
1590         initializing an unknown object.
1592         * call.c (build_over_call): Check unsafe_copy_elision_p even for
1593         trivial constructors.
1594         * method.c (do_build_copy_constructor): Don't copy tail padding
1595         even in a trivial constructor.
1597 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
1599         PR c++/71728
1600         * constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>:
1601         Replace assert with test, return false if the goto isn't break
1602         or continue.  Formatting fix.
1604 2016-07-21  Richard Biener  <rguenther@suse.de>
1606         * vtable-class-hierarchy.c (vtv_generate_init_routine): Set
1607         DECL_IGNORED_P.
1609 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
1611         PR c++/71941
1612         * cp-gimplify.c (cp_genericize): For nested cp_genericize calls
1613         save/restore bc_label array.
1615 2016-07-21  Jason Merrill  <jason@redhat.com>
1617         PR c++/70781
1618         * parser.c (cp_parser_lambda_expression): Unset OK if there was an
1619         error parsing the lambda-declarator.
1621         PR c++/71896
1622         * constexpr.c (cxx_eval_binary_expression): Handle comparison
1623         between lowered and unlowered PTRMEM_CST.
1625         PR c++/65168
1626         * typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr.
1627         Don't set c_inhibit_evaluation_warnings.
1629         PR c++/71121
1630         * cp-gimplify.c (cp_fully_fold): First call maybe_constant_value.
1632 2016-07-21  Andrew Sutton  <andrew.n.sutton@gmail.com>
1633             Jason Merrill  <jason@redhat.com>
1635         Improving concepts performance and diagnostics.
1636         PR c++/67565
1637         PR c++/67579
1638         PR c++/71843
1639         * cp-tree.def (CHECK_CONSTR): New.
1640         * cp-tree.h (CHECK_CONSTR_CONCEPT): New.
1641         (CHECK_CONSTR_ARGS): New.
1642         * constraint.cc (make_predicate_constraint): Remove in favor of
1643         normalize_expression.
1644         (resolve_constraint_check): Actually return error_mark_node when
1645         resolution fails.
1646         (resolve_variable_concept_check): Perform coercion as if processing
1647         a template. Also return errors on resolution failure.
1648         (lift_*): Remove all of these functions. Don't unnecessarily inline
1649         concepts.
1650         (learn_*): Add facilities to memoize implications for subsumption
1651         during normalization.
1652         (expanding_concept): New.
1653         (expand_concept): New. Return the inlined and normalized definition
1654         of a concept when needed.
1655         (transform_*, xform_*): Rename to normalize_* to better reflect the
1656         responsibility of those functions.
1657         (normalize_template_id_expression): Check for non-boolean operands
1658         when possible. Generate check constraints instead of normal variable
1659         references.
1660         (normalize_call_expression): Report errors when resolution fails.
1661         (check_for_logical_overloads): Rewrite this check to more accurately
1662         report the error.
1663         (normalize_atom): Check for overloaded calls and invalid types before
1664         determining if the expression refers to a concept.
1665         (build_constraints): Don't cache normalized constraints or decomposed
1666         assumptions.
1667         (finish_shorthand_constraint): Return a normalized expression instead
1668         of a predicate constraint.
1669         (finish_template_introduction): Same.
1670         (placeholder_extract_concept_and_args): Rewrite this since we only
1671         ever get check constraints here.
1672         (equivalent_placeholder_constraints): Rewrite in terms of check
1673         constraints, and handle error_mark_nodes correctly.
1674         (tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr)
1675         (tsubst_implicit_conversion_constr)
1676         (tsubst_argument_deduction_constr, tsubst_exception_constr)
1677         (tsubst_parameterized_constraint, tsubst_constraint): New.
1678         (tsbust_conjunection): Replace with tsubst_logical_operator and
1679         actually generate the right kind of constraint.
1680         (tsubst_requirement_body): Reverse the order of substituted arguments
1681         so that they appear in the order written (helps diagnostics).
1682         (satisfy_check_constraint): New.
1683         (satisfy_conjunction): Simplify.
1684         (satisfy_disjunction): Same.
1685         (satisfy_constraint_1): Handle check constraints.
1686         (eval_constr): New (private) global state.
1687         (evaluating_constraints_sentinel): New. Manages eval_constr.
1688         (satisfy_constraint): Add timing variables.
1689         (satisfy_associated_constraints): Add hooks for memoization.
1690         (evaluate_function_concept): Build a check constraint instead of
1691         normalizing its definition.
1692         (evaluate_variable_concept): Same.
1693         (evaluate_constraint_expression): Normalize, but in the current
1694         declaration processing context.
1695         (evaluating_constraints_p): New.
1696         (elide_constraint_failure_p): Actually emit constraint_thresh errors.
1697         (diagnose_*): Remove artificial indentation. Add a new parameter to
1698         each that tracks the current (complete) constraint prior to any
1699         substitutions.
1700         (diagnose_expression): Removed.
1701         (diagnose_call_expression): Same.
1702         (diagnose_template_id): Same.
1703         (diagnose_template_id): New.
1704         (diagnose_logical_constraint): New.
1705         (diagnose_expression_constraint): Show the original expression.
1706         (diagnose_type_constraint): Show the original type.
1707         (diagnose_implicit_conversion_constraint): Be specific about
1708         failures, don't re-diagnose a known-to-be-failed substitutions,
1709         and manage elisions properly.
1710         (diagnose_argument_deduction_constraint): Same.
1711         (diagnose_exception_constraint): Same.
1712         (diagnose_parameterized_constraint): Same.
1713         (constraint_p): Allow EXPR_PACK_EXPANSION.
1714         * logic.cc (next_by_distance): Removed. No longer used.
1715         (any_p): Renamed from any_of.
1716         (term_entry, term_hasher): New.
1717         (term_list): Rewrite to include a hash table for quick lookup.
1718         Also, make less stateful.
1719         (proof_state): Extend to allow goals to be discharged once
1720         satisfied.
1721         (non_atomic_constraint_p): New.
1722         (any_non_atomic_constraints_p): New.
1723         (...rest...): Previous implementation completely replaced with an
1724         iterative algorithm that opportunistically prunes the search space
1725         before committing to using more memory.
1726         * parser.c: (cp_parser_type_parameter): Normalize constraints.
1727         (cp_parser_explicit_template_declaration): Same.
1728         * pt.c: (finish_template_variable): Be less redundant with this error
1729         message.
1730         (template_args_equal): No longer static.
1731         (tsubst_decl): Don't try to find specializations of variables that
1732         have already been instantiated.
1733         (build_non_dependent_expr): Avoid infinite recursion during concept
1734         expansion.
1735         (make_constrained_auto): Normalize constraints.
1736         (do_auto_deduction): When doing auto deduction from a
1737         partial-concept-id, be sure to include the explicit args checking
1738         the constraints.
1739         (constraint_sat_*): New. Memoize satisfied constraints.
1740         (concept_spec_*): New. Memoize expressions associated with a concept
1741         specialization.
1742         (constraint_memos, concept_memos): New.
1743         (lookup_constraint_satisfaction, memoize_constraint_satisfaction): New.
1744         (lookup_concept_satisfaction, memoize_concept_satisfaction): New.
1745         (get_concept_expansion, save_concept_expansion): New.
1746         (hash_subsumption_args): New.
1747         (comp_subsumption_args): New.
1748         (subsumption_*): New. Memoize parts of the subsumption relation.
1749         (lookup_subsumption_result, save_subsumption_result): New.
1750         (init_constraint_processing): Initialize memo tables.
1751         (get_constraints): Shortcut if !flag_concepts.
1752         * decl.c (grokfndecl): Normalize constraints.
1753         * error.c (dump_simple_decl): Print "concept" when appropriate.
1754         (dump_function_decl): Same.
1755         (dump_template_decl): Don't write requirements when we're not
1756         printing the header.
1757         (dump_expr): Handle fold expressions.
1758         * cxx-pretty-print.c (cxx_pretty_printer::expression): Handle
1759         fold expressions.
1760         (get_fold_operator): New.
1761         (pp_cxx_unary_left_fold_expression): New.
1762         (pp_cxx_unary_right_fold_expression): New.
1763         (pp_cxx_binary_fold_expression): New.
1764         (pp_cxx_check_constraint): New.
1765         (pp_cxx_*_constraint): Rewrite the grammar of internal constraints
1766         to make them easier to read when debugging.
1767         * search.c (accessible_p): Don't shortcut when evaluating constraints.
1768         * tree.c (cp_tree_equal): Handle CHECK_CONSTR.
1770 2016-07-20  David Malcolm  <dmalcolm@redhat.com>
1772         PR c/70339
1773         PR c/71858
1774         * name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h,
1775         and parser.h.
1776         (suggest_alternatives_for): If no candidates are found, try
1777         lookup_name_fuzzy and report if if finds a suggestion.
1778         (consider_binding_level): New function.
1779         (lookup_name_fuzzy) New function.
1780         * parser.c: Include gcc-rich-location.h.
1781         (cp_lexer_next_token_is_decl_specifier_keyword): Move most of
1782         logic into...
1783         (cp_keyword_starts_decl_specifier_p): ...this new function.
1784         (cp_parser_diagnose_invalid_type_name): When issuing
1785         "does not name a type" errors, attempt to make a suggestion using
1786         lookup_name_fuzzy.
1787         * parser.h (cp_keyword_starts_decl_specifier_p): New prototype.
1788         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject
1789         types that are not CLASS_TYPE_P, rather than rejecting individual
1790         tree codes.
1792 2016-07-20  Jakub Jelinek  <jakub@redhat.com>
1794         PR c++/71909
1795         * parser.c (cp_parser_save_member_function_body): Consume
1796         __transaction_relaxed or __transaction_atomic with optional
1797         attribute.  Only skip catch with block if try keyword is seen.
1799         PR c++/50060
1800         * constexpr.c (cxx_eval_builtin_function_call): Pass false as lval
1801         when evaluating call arguments.  Use fold_builtin_call_array instead
1802         of fold_build_call_array_loc, return t if it returns NULL.  Otherwise
1803         check the result with potential_constant_expression and call
1804         cxx_eval_constant_expression on it.
1806 2016-07-19  Jason Merrill  <jason@redhat.com>
1808         PR c++/67164
1809         * pt.c (iterative_hash_template_arg, template_args_equal): Don't
1810         handle ARGUMENT_PACK_SELECT.
1812 2016-07-18  Jakub Jelinek  <jakub@redhat.com>
1814         PR c++/70869
1815         PR c++/71054
1816         * cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change.
1817         * tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL
1818         non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and
1819         DECL_SIZE_UNIT.
1821         PR c++/71835
1822         * call.c (build_op_call_1): Use convert_like_with_context only
1823         if cand->fn is a decl.
1825         PR c++/71828
1826         * constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
1827         For lval don't use cxx_eval_unary_expression and instead recurse
1828         and if needed rebuild the reference.
1830         PR c++/71826
1831         * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.
1833         PR c++/71822
1834         * cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively
1835         fold *expr_p before genericizing it.
1837         PR c++/71871
1838         * typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change.
1840 2016-07-15  Jason Merrill  <jason@redhat.com>
1842         PR c++/71495
1843         * call.c (convert_like_real): Mask complain.
1844         * semantics.c (perform_koenig_lookup): Likewise.
1846         PR c++/71092
1847         * constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph
1848         threw away DECL_SAVED_TREE.
1850         PR c++/71117
1851         Core 2189
1852         * call.c (add_template_conv_candidate): Disable if there are
1853         viable candidates.
1855         PR c++/71511
1856         * typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE.
1858         PR c++/71513
1859         * pt.c (tsubst_attributes): Fix loop logic.
1861         PR c++/71604
1862         PR c++/54430
1863         * parser.c (cp_parser_range_for): Modify IDENTIFIER_BINDING directly.
1864         (cp_parser_simple_declaration): Diagnose type definition in
1865         for-range-declaration.
1867         PR c++/71711
1868         * operators.def: Add *_FOLD_EXPR.
1869         * cp-tree.h (FOLD_EXPR_P): Parenthesize.
1870         * mangle.c (write_expression): Handle fold-expressions.
1871         * pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold)
1872         (tsubst_unary_right_fold, tsubst_binary_right_fold): Handle
1873         partial instantiation.
1875         PR c++/71814
1876         * mangle.c (write_expression): Handle sizeof... an argument pack.
1878         PR c++/71718
1879         * pt.c (push_tinst_level_loc): Set at_eof before fatal_error.
1881         PR c++/70824
1882         * init.c (constant_value_1): Don't instantiated DECL_INITIAL of
1883         artificial variables.
1885 2016-07-15  Cesar Philippidis  <cesar@codesourcery.com>
1887         * parser.c (cp_parser_oacc_declare): Don't scan for
1888         GOMP_MAP_POINTER.
1889         * semantics.c (handle_omp_array_sections): Mark data clauses with
1890         GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having
1891         zero-length subarrays.
1893 2016-07-11  Jason Merrill  <jason@redhat.com>
1895         * decl.c (store_parm_decls): Remove check for void parm.
1897 2016-07-08  Jason Merrill  <jason@redhat.com>
1899         * cp-tree.h: Unpoison lvalue_p.
1900         * call.c, class.c, constexpr.c, cvt.c, init.c, lambda.c, pt.c,
1901         tree.c, typeck.c, typeck2.c: Use lvalue_p instead of
1902         real_lvalue_p.
1904         * tree.c (obvalue_p): Rename from lvalue_p.
1905         (lvalue_p): Define for c-common.
1906         * call.c, cp-tree.h, cvt.c, init.c: Adjust.
1907         * typeck.c: Adjust.
1908         (cp_build_addr_expr_1): Remove obsolete code.
1910         * tree.c (glvalue_p): Rename from lvalue_or_rvalue_with_address_p.
1911         * call.c, cp-tree.h, typeck.c: Adjust.
1913         * lambda.c (maybe_add_lambda_conv_op): Fix null object argument.
1915         P0145R2: Refining Expression Order for C++.
1916         * cp-gimplify.c (lvalue_has_side_effects): New.
1917         (cp_gimplify_expr): Implement assignment ordering.
1918         * call.c (op_is_ordered, build_over_call): Adjust for
1919         -fargs-in-order renaming to -fstrong-eval-order.
1920         * cp-gimplify.c (cp_gimplify_expr): Likewise.
1922 2016-07-07  Jakub Jelinek  <jakub@redhat.com>
1923             Kai Tietz  <ktietz70@googlemail.com>
1925         PR c++/70869
1926         PR c++/71054
1927         * cp-gimplify.c (cp_genericize_r): For DECL_EXPR for non-static
1928         artificial vars, genericize their initializers.
1930 2016-07-05  David Malcolm  <dmalcolm@redhat.com>
1932         PR c++/62314
1933         * parser.c (cp_parser_class_specifier_1): When reporting
1934         missing semicolons, use a fixit-hint to suggest insertion
1935         of a semicolon immediately after the closing brace,
1936         offsetting the reported column accordingly.
1938 2016-07-04  Jan Beulich  <jbeulich@suse.com>
1940         * lang-specs.h ("@c++-header"): Conditionalize "-o".
1942 2016-06-29  Thomas Schwinge  <thomas@codesourcery.com>
1944         * parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>:
1945         Move pragma context checking into...
1946         (cp_parser_omp_cancellation_point): ... here, and improve
1947         diagnostic messages.
1948         * semantics.c (finish_omp_cancel, finish_omp_cancellation_point):
1949         Improve diagnostic messages.
1951 2016-06-28  Jakub Jelinek  <jakub@redhat.com>
1953         * Make-lang.in: Don't cat ../stage_current if it does not exist.
1955 2016-06-24  Jason Merrill  <jason@redhat.com>
1957         P0145R2: Refining Expression Order for C++.
1958         * typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS.
1960         * tree.c (get_target_expr_sfinae): Handle bit-fields.
1961         (build_target_expr): Call mark_rvalue_use.
1963 2016-06-24  Jakub Jelinek  <jakub@redhat.com>
1965         * call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
1966         (build_over_call): For magic == 3, do no conversion only on 3rd
1967         argument.
1969 2016-06-23  Andi Kleen  <ak@linux.intel.com>
1971         * Make-lang.in: Add support for autofdo.
1973 2016-06-21  Jason Merrill  <jason@redhat.com>
1975         * constraint.cc (constraints_satisfied_p): Keep as many levels of
1976         args as our template has levels of parms.
1978         * pt.c (template_parm_outer_level, uses_outer_template_parms): New.
1979         (type_dependent_expression_p): Use uses_outer_template_parms.
1981 2016-06-20  David Malcolm  <dmalcolm@redhat.com>
1983         * parser.c (cp_parser_string_literal): Convert non-standard
1984         concatenation error to directly use a rich_location, and
1985         use that to add the location of the first literal to the
1986         diagnostic.
1988 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
1990         * decl.c (validate_constexpr_redeclaration): Change pair of errors
1991         to error + inform.
1992         * error.c (dump_function_decl): Save the constexpr specifier too.
1994 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
1996         * tree.c (builtin_valid_in_constant_expr_p): Test for
1997         DECL_BUILT_IN_CLASS equal to BUILT_IN_NORMAL instead of just
1998         DECL_BUILT_IN.
1999         (bot_manip): Likewise.
2000         * call.c (magic_varargs_p): Likewise.
2002 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
2004         * decl.c (grokfndecl): Change pair of errors to error + inform.
2006 2016-06-17  Jason Merrill  <jason@redhat.com>
2008         PR c++/71209
2009         * typeck.c (finish_class_member_access_expr): Avoid "not a base"
2010         warning when there are dependent bases.
2012 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
2014         * semantics.c (handle_omp_array_sections_1): Don't ICE when
2015         processing_template_decl when checking for bitfields and unions.
2016         Look through REFERENCE_REF_P as base of COMPONENT_REF.
2017         (finish_omp_clauses): Look through REFERENCE_REF_P even for
2018         array sections with COMPONENT_REF bases.
2020 2016-06-16  Jakub Jelinek  <jakub@redhat.com>
2022         * parser.c (cp_parser_omp_var_list_no_open): Call
2023         convert_from_reference before cp_parser_postfix_dot_deref_expression.
2024         * semantics.c (finish_omp_clauses): Don't ICE when
2025         processing_template_decl when checking for bitfields and unions.
2026         Look through REFERENCE_REF_P as base of COMPONENT_REF.
2028 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
2030         * decl.c (wrapup_globals_for_namespace): Use DECL_SOURCE_LOCATION and
2031         "%qF" in warning_at instead of "%q+F" in warning.
2032         (check_redeclaration_exception_specification): Likewise in pedwarn
2033         (and error, inform, for consistency).
2034         * call.c (joust): Likewise.
2036 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
2038         PR c++/70202
2039         * decl.c (xref_basetypes): Revert r117839 changes; add fix-up
2040         code at the end of the for loop; also revert r159637 changes,
2041         add back the gcc_assert.
2042         * cp-tree.h (xref_basetypes): Adjust declaration.
2043         * parser.c (cp_parser_class_head): Adjust xref_basetypes call.
2045 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
2047         * search.c: Include spellcheck-tree.h rather than spellcheck.h.
2049 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
2051         * typeck.c: Include "gcc-rich-location.h".
2052         (finish_class_member_access_expr): Simplify fixit code by
2053         using gcc_rich_location::add_fixit_misspelled_id.
2055 2016-06-14  Jason Merrill  <jason@redhat.com>
2057         P0145R2: Refining Expression Order for C++.
2058         * cp-tree.h (CALL_EXPR_OPERATOR_SYNTAX, CALL_EXPR_ORDERED_ARGS)
2059         (CALL_EXPR_REVERSE_ARGS): New.
2060         * call.c (build_new_op_1): Set them.
2061         (extract_call_expr, op_is_ordered): New.
2062         (build_over_call): Set CALL_EXPR_ORDERED_ARGS.
2063         * cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Handle new flags.
2064         * pt.c (tsubst_copy_and_build): Copy new flags.
2065         * semantics.c (simplify_aggr_init_expr): Likewise.
2066         * tree.c (build_aggr_init_expr): Likewise.
2067         (build_min_non_dep_op_overload): Likewise.
2069 2016-06-14  Jakub Jelinek  <jakub@redhat.com>
2071         PR c++/71528
2072         * decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external
2073         olddecl vars, preserve their TREE_READONLY bit.
2075         PR c++/71516
2076         * decl.c (complete_vars): Handle gracefully type == error_mark_node.
2078 2016-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
2080         * typeck2.c (digest_init_r): Use EXPR_LOC_OR_LOC on init.
2082 2016-06-13  Paolo Carlini  <paolo.carlini@oracle.com>
2084         * decl.c (grokdeclarator): Fix typo in pedwarn text.
2086 2016-06-10  Thomas Schwinge  <thomas@codesourcery.com>
2088         PR c/71381
2089         * parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>:
2090         Loosen checking.
2092 2016-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
2094         PR c++/71465
2095         Revert:
2096         2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
2098         PR c++/70202
2099         * parser.c (cp_parser_class_head): When xref_basetypes fails and
2100         emits an error do not zero the type.
2102 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
2104         * decl.c (maybe_deduce_size_from_array_init): Use
2105         DECL_SOURCE_LOCATION in error_at.
2106         (layout_var_decl): Likewise.
2107         (check_array_initializer): Likewise.
2108         (check_initializer): Likewise.
2109         (duplicate_decls, check_elaborated_type_specifier): Tidy.
2111 2016-06-08  Martin Sebor  <msebor@redhat.com>
2112             Jakub Jelinek  <jakub@redhat.com>
2114         PR c++/70507
2115         PR c/68120
2116         * constexpr.c: Include gimple-fold.h.
2117         (cxx_eval_internal_function): New function.
2118         (cxx_eval_call_expression): Call it.
2119         (potential_constant_expression_1): Handle integer arithmetic
2120         overflow built-ins.
2121         * tree.c (builtin_valid_in_constant_expr_p): Handle
2122         BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P.
2124 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
2126         * pt.c (tsubst, case TYPENAME_TYPE): Don't delay checking the
2127         return value of tsubst_aggr_type for error_mark_node.
2129 2016-06-08  Jakub Jelinek  <jakub@redhat.com>
2131         PR c++/71442
2132         * pt.c (tsubst_copy): Only set TREE_USED on DECLs.
2134 2016-06-06  Jakub Jelinek  <jakub@redhat.com>
2135             Patrick Palka  <ppalka@gcc.gnu.org>
2137         PR c++/70847
2138         PR c++/71330
2139         PR c++/71393
2140         * cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL
2141         right after cp_fold call if cp_fold has returned the same stmt
2142         already in some earlier cp_fold_r call.
2143         (cp_fold_function): Add pset automatic variable, pass its address
2144         to cp_walk_tree.
2146 2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
2148         PR c++/70202
2149         * parser.c (cp_parser_class_head): When xref_basetypes fails and
2150         emits an error do not zero the type.
2152 2016-06-03  Patrick Palka  <ppalka@gcc.gnu.org>
2154         PR c++/27100
2155         * decl.c (duplicate_decls): Properly copy the
2156         DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and
2157         DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL.
2159 2016-06-03  Chung-Lin Tang  <cltang@codesourcery.com>
2161         * semantics.c (finish_omp_clauses): Mark OpenACC reduction
2162         arguments as addressable when async clause exists.
2164 2016-06-02  Jan Hubicka  <jh@suse.cz>
2166         * cp-gimplify.c (genericize_continue_stmt): Force addition of
2167         predict stmt.
2169 2016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
2171         * decl.c (xref_tag_1): Change pairs of errors to error + inform.
2172         (start_enum): Likewise.
2173         * parser.c (cp_parser_class_head): Likewise.
2175 2016-06-02  Jakub Jelinek  <jakub@redhat.com>
2177         PR c++/71372
2178         * cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression
2179         is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS
2180         and TREE_THIS_VOLATILE flags.  For ARRAY_REF and ARRAY_RANGE_REF, copy
2181         over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags
2182         to the newly built tree.
2184 2016-05-31  Jason Merrill  <jason@redhat.com>
2186         * pt.c (instantiate_decl): Avoid recalculation.
2188         PR c++/60095
2189         PR c++/69515
2190         PR c++/69009
2191         * pt.c (instantiate_template_1): Don't put the partial
2192         specialization in DECL_TI_TEMPLATE.
2193         (partial_specialization_p, impartial_args): Remove.
2194         (regenerate_decl_from_template): Add args parm.
2195         (instantiate_decl): Look up the partial specialization again.
2197         PR c++/71227
2198         * pt.c (check_explicit_specialization): Give better diagnostic about
2199         specializing a hidden friend.
2201 2016-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
2203         PR c++/71248
2204         * decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION
2205         to obtain correct locations; avoid redundant diagnostics on
2206         out-of-class definitions.
2208 2016-05-30  Martin Sebor  <msebor@redhat.com>
2210         PR c++/71306
2211         * init.c (warn_placement_new_too_small): Handle placement new arguments
2212         that are elements of arrays more carefully.  Remove a pointless loop.
2214 2016-05-30  Jakub Jelinek  <jakub@redhat.com>
2216         PR c++/71349
2217         * parser.c (cp_parser_omp_for): Don't disallow nowait clause
2218         when combined with target construct.
2219         (cp_parser_omp_parallel): Pass cclauses == NULL as last argument
2220         to cp_parser_omp_all_clauses.
2222 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
2224         PR c++/71238
2225         * lex.c (unqualified_name_lookup_error): Take a location too.
2226         (unqualified_fn_lookup_error): Take a cp_expr.
2227         * cp-tree.h (unqualified_name_lookup_error,
2228         unqualified_fn_lookup_error): Adjust declarations.
2229         * semantics.c (perform_koenig_lookup): Adjust
2230         unqualified_fn_lookup_error call, pass the location of
2231         the identifier too as part of a cp_expr.
2233 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
2235         PR c++/71099
2236         * parser.c (cp_parser_function_specifier_opt): Use current_class_type
2237         to improve the diagnostic about wrong uses of 'virtual'.
2239 2016-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
2241         PR c++/71105
2242         * lambda.c (maybe_add_lambda_conv_op): Early return also when
2243         LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE.
2245 2016-05-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
2247         Revert:
2248         PR c++/69855
2249         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
2250         decls into the global scope after stripping template bits
2251         and setting DECL_ANTICIPATED.
2253 2016-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
2255         PR c++/60385
2256         * name-lookup.c (push_namespace): Return bool, false when pushdecl
2257         fails.
2258         * name-lookup.h (push_namespace): Adjust declaration.
2259         * parser.c (cp_parser_namespace_definition): Check push_namespace
2260         return value.
2262 2016-05-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
2264         PR c++/69855
2265         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
2266         decls into the global scope after stripping template bits
2267         and setting DECL_ANTICIPATED.
2269 2016-05-26  Jakub Jelinek  <jakub@redhat.com>
2271         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn
2272         if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive.
2274 2016-05-26  Patrick Palka  <ppalka@gcc.gnu.org>
2276         PR c++/70822
2277         PR c++/70106
2278         * cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to
2279         SCOPE_REFs too.
2280         * pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set
2281         on the qualified_id then propagate it to the resulting
2282         expression.
2283         (do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs
2284         too.
2285         * semantics.c (force_paren_expr): If given a SCOPE_REF, just set
2286         its REF_PARENTHESIZED_P flag.
2288 2016-05-25  Jason Merrill  <jason@redhat.com>
2290         PR c++/71173
2291         PR c++/70522
2292         * cp-tree.h (enum tag_types): Add scope_type.
2293         * parser.c (cp_parser_class_name): Use scope_type.
2294         (prefer_type_arg): Handle scope_type.
2295         (cp_parser_lookup_name): Use prefer_type_arg.
2296         * name-lookup.c (lookup_qualified_name): Change bool is_type_p to
2297         int prefer_type, use lookup_flags.
2298         * name-lookup.h: Adjust.
2300 2016-05-24  Cesar Philippidis  <cesar@codesourcery.com>
2302         * parser.c (cp_parser_oacc_declare): Add support for
2303         GOMP_MAP_FIRSTPRIVATE_POINTER.
2304         * semantics.c (handle_omp_array_sections_1): Replace bool is_omp
2305         argument with enum c_omp_region_type ort.  Don't privatize OpenACC
2306         non-static members.
2307         (handle_omp_array_sections): Replace bool is_omp argument with enum
2308         c_omp_region_type ort.  Update call to handle_omp_array_sections_1.
2309         (finish_omp_clauses): Add specific errors and warning messages for
2310         OpenACC.  Use firsrtprivate pointers for OpenACC subarrays.  Update
2311         call to handle_omp_array_sections.
2313 2016-05-24  Jason Merrill  <jason@redhat.com>
2315         PR c++/70584
2316         * cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold
2317         returns a decl.
2318         (cp_fold) [INDIRECT_REF]: Don't fold to an rvalue.
2320 2016-05-24  Martin Sebor  <msebor@redhat.com>
2322         PR c++/71147
2323         * decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p.
2324         * pt.c (instantiate_class_template_1): Try to complete the element
2325         type of a flexible array member.
2326         (can_complete_type_without_circularity): Handle arrays of unknown bound.
2327         * typeck.c (complete_type): Also complete the type of the elements of
2328         arrays with an unspecified bound.
2330 2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
2332         PR c++/69872
2333         * typeck2.c (check_narrowing): Check pedwarn return value.
2335 2016-05-24  Jakub Jelinek  <jakub@redhat.com>
2337         PR c++/71257
2338         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>:
2339         For OMP_CLAUSE_LINEAR_REF don't require type to be
2340         integral or pointer.
2342 2016-05-24  Richard Biener  <rguenther@suse.de>
2344         PR middle-end/70434
2345         PR c/69504
2346         * expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.
2347         * constexpr.c (cxx_eval_array_reference): Handle indexed
2348         vectors.
2349         * typeck.c (cp_build_array_ref): Adjust.
2351 2016-05-23  Jason Merrill  <jason@redhat.com>
2353         PR c++/70344
2354         * constexpr.c (cxx_eval_call_expression): Check for
2355         fun == current_function_decl again.
2357         PR c++/70584
2358         * cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call
2359         maybe_undo_parenthesized_ref.
2361         PR c++/70735
2362         * pt.c (tsubst_copy): Just return a local variable from
2363         non-template context.  Don't call rest_of_decl_compilation for
2364         duplicated static locals.
2365         (tsubst_decl): Set DECL_CONTEXT of local static from another
2366         function.
2368 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2370         PR c++/70972
2371         * method.c (forward_parm): Use cp_build_reference_type.
2373 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2375         PR c++/69095
2376         * parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs.
2378 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2380         * pt.c (check_for_bare_parameter_packs): Improve error message
2381         location for expressions.
2383 2016-05-20  Nathan Sidwell  <nathan@acm.org>
2385         * constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if
2386         ... goto.
2387         (cxx_eval_call_expression): Fix comment grammar.
2389 2016-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
2391         PR c++/70572
2392         * decl.c (cp_finish_decl): Check do_auto_deduction return value
2393         and return immediately in case of erroneous code.
2395 2016-05-19  Marek Polacek  <polacek@redhat.com>
2397         PR c++/71075
2398         * pt.c (unify_template_argument_mismatch): Use %qE instead of %qD.
2400 2016-05-19  Jason Merrill  <jason@redhat.com>
2402         PR c++/10200
2403         * pt.c (fn_type_unification): Add outer template args if needed.
2404         (type_unification_real): Handle getting full args.
2406 2016-05-19  David Malcolm  <dmalcolm@redhat.com>
2408         PR c++/71184
2409         * parser.c (cp_parser_operator): For array new/delete, check that
2410         cp_parser_require returned a non-NULL token before dereferencing
2411         it.
2413 2016-05-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2415         * decl.c (finish_enum_value_list): Use the specified mode.
2417 2016-05-18  Jason Merrill  <jason@redhat.com>
2419         * pt.c (value_dependent_expression_p): Tweak new cases to better
2420         match the wording in the standard.
2422 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
2424         PR c++/69793
2425         * parser.c (cp_parser_template_id): Don't call cp_lexer_peek_nth_token
2426         when the previous cp_lexer_peek_token returns CPP_EOF.
2428 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
2430         PR c++/70466
2431         * call.c (convert_like_real): Check that we are actually converting
2432         from an init list.
2434 2016-05-16  Matthew Wahab  <matthew.wahab@arm.com>
2436         * decl.c (grokdeclarator): Remove errmsg and use of
2437         targetm.invalid_return_type.
2438         (grokparms): Remove errmsg and use of
2439         targetm.invalid_parameter_type.
2441 2016-05-13  Jason Merrill  <jason@redhat.com>
2443         PR c++/10200
2444         PR c++/69753
2445         * pt.c (tsubst_decl): Use uses_template_parms.
2446         (instantiate_template_1): Handle non-dependent calls in templates.
2447         (value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL.
2448         (type_dependent_expression_p): Only consider innermost template args.
2449         (dependent_template_arg_p): Check enclosing class of a template here.
2450         (dependent_template_p): Not here.
2451         (type_dependent_object_expression_p): New.
2452         * typeck.c (finish_class_member_access_expr): Use it.
2453         * parser.c (cp_parser_postfix_expression): Use it.
2454         (cp_parser_postfix_dot_deref_expression): Use it.  Use comptypes
2455         to detect the current instantiation.
2456         (cp_parser_lookup_name): Really implement DR 141.
2457         * search.c (lookup_field_r): Prefer a dependent using-declaration.
2458         (any_dependent_bases_p): Split out from...
2459         * name-lookup.c (do_class_using_decl): ...here.
2460         * call.c (build_new_method_call_1): Use it.
2461         * semantics.c (finish_call_expr): 'this' doesn't make a call dependent.
2462         * tree.c (non_static_member_function_p): Remove.
2463         * typeck2.c (build_x_arrow): Use dependent_scope_p.
2465         * parser.c (cp_parser_postfix_dot_deref_expression): Use
2466         complete_type_or_else for unknown_type_node, too.
2468 2016-05-12  Marek Polacek  <polacek@redhat.com>
2470         PR c/70756
2471         * call.c (build_new_op_1): Pass LOC to cp_build_modify_expr.
2472         * cp-tree.h (cp_build_modify_expr): Update declaration.
2473         (cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline
2474         overloads.
2475         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to
2476         cp_build_modify_expr.
2477         * decl2.c (set_guard): Likewise.
2478         (handle_tls_init): Likewise.
2479         * init.c (perform_member_init): Likewise.
2480         (expand_virtual_init): Likewise.
2481         (build_new_1): Likewise.
2482         (build_vec_delete_1): Likewise.
2483         (get_temp_regvar): Likewise.
2484         (build_vec_init): Likewise.
2485         * method.c (do_build_copy_assign): Likewise.
2486         (assignable_expr): Likewise.
2487         * semantics.c (finish_omp_for): Likewise.
2488         * typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and
2489         cp_pointer_int_sum.
2490         (cp_pointer_int_sum): Add location parameter.  Pass it down to
2491         pointer_int_sum.
2492         (pointer_diff): Add location parameter.  Use it.
2493         (build_modify_expr): Pass location down to cp_build_modify_expr.
2494         (cp_build_modify_expr): Add location parameter.  Use it.
2495         (build_x_modify_expr): Pass location down to cp_build_modify_expr.
2496         * typeck2.c (cxx_incomplete_type_diagnostic,
2497         cxx_incomplete_type_error): Add location parameter.
2499 2016-05-11  Marek Polacek  <polacek@redhat.com>
2501         PR c++/71024
2502         * decl.c (duplicate_decls): Call diagnose_mismatched_decls.
2504 2016-05-05  Jakub Jelinek  <jakub@redhat.com>
2506         * parser.c (cp_parser_selection_statement): For RID_SWITCH,
2507         pass if_p instead of NULL to cp_parser_implicitly_scoped_statement.
2509 2016-05-04  Marek Polacek  <polacek@redhat.com>
2511         * parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses
2512         with OPT_Wdangling_else.
2514 2016-05-03  Martin Sebor  <msebor@redhat.com>
2516         PR c++/66561
2517         * tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE,
2518         BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions.
2520 2016-05-03  Marek Polacek  <polacek@redhat.com>
2522         PR c/70859
2523         * call.c (build_cxx_call): Pass location and vNULL down to
2524         check_builtin_function_arguments.
2526 2016-05-03  Richard Biener  <rguenther@suse.de>
2528         * Make-lang.in (cc1plus-checksum.c): For stage-final re-use
2529         the checksum from the previous stage.
2531 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
2533         PR c++/62314
2534         * typeck.c (finish_class_member_access_expr): When
2535         giving a hint about a possibly-misspelled member name,
2536         add a fix-it replacement hint.
2538 2016-05-02  Cesar Philippidis  <cesar@codesourcery.com>
2540         * cp-tree.h (finish_omp_clauses): Update prototype.
2541         * parser.c (cp_parser_oacc_all_clauses): Update call to
2542         finish_omp_clauses.
2543         (cp_parser_omp_all_clauses): Likewise.
2544         (cp_parser_omp_for_loop): Likewise.
2545         (cp_omp_split_clauses): Likewise.
2546         (cp_parser_oacc_cache): Likewise.
2547         (cp_parser_oacc_loop): Likewise.
2548         (cp_parser_omp_declare_target):
2549         (cp_parser_cilk_simd_all_clauses): Likewise.
2550         (cp_parser_cilk_for): Likewise.
2551         * pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd
2552         arguments with enum c_omp_region_type ort.
2553         (tsubst_omp_clauses): Update calls to finish_omp_clauses.
2554         (tsubst_omp_attribute): Update calls to tsubst_omp_clauses.
2555         (tsubst_omp_for_iterator): Update calls to finish_omp_clauses.
2556         (tsubst_expr): Update calls to tsubst_omp_clauses.
2557         * semantics.c (finish_omp_clauses): Replace bool arguments
2558         allow_fields, declare_simd, and is_cilk with bitmask ort.
2559         (finish_omp_for): Update call to finish_omp_clauses.
2561 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
2563         PR c++/62314
2564         * parser.c (cp_parser_class_head): Capture the start location;
2565         use it to emit a fix-it insertion hint when complaining
2566         about missing "template <> " in explicit specializations.
2568 2016-05-02  Richard Sandiford  <richard.sandiford@arm.com>
2570         * init.c (build_new_1): Use shift operators instead of wi:: shifts.
2572 2016-05-02  Richard Biener  <rguenther@suse.de>
2574         * decl.c (grokdeclarator): Properly insert a DECL_EXPR for
2575         anonymous VLAs.
2577 2016-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
2579         PR c++/66644
2580         * class.c (check_field_decl): Remove final int* parameter, change
2581         the return type to bool; fix logic in order not to reject multiple
2582         initialized fields in anonymous struct.
2583         (check_field_decls): Adjust call.
2585 2016-04-29  Cesar Philippidis  <cesar@codesourcery.com>
2587         PR middle-end/70626
2588         * parser.c (cp_parser_oacc_loop): Don't augment mask with
2589         OACC_LOOP_CLAUSE_MASK.
2590         (cp_parser_oacc_kernels_parallel): Update call to
2591         c_oacc_split_loop_clauses.
2593 2016-04-28  Jason Merrill  <jason@redhat.com>
2595         Implement C++17 [[nodiscard]] attribute.
2596         PR c++/38172
2597         PR c++/54379
2598         * parser.c (cp_parser_std_attribute): Handle [[nodiscard]].
2599         * tree.c (handle_nodiscard_attribute): New.
2600         (cxx_attribute_table): Add [[nodiscard]].
2601         * cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New.
2602         (maybe_warn_nodiscard): New.
2603         (convert_to_void): Call it.
2605         * cvt.c (cp_get_callee): New.
2606         * constexpr.c (get_function_named_in_call): Use it.
2607         * cxx-pretty-print.c (postfix_expression): Use it.
2608         * except.c (check_noexcept_r): Use it.
2609         * method.c (check_nontriv): Use it.
2610         * tree.c (build_aggr_init_expr): Use it.
2611         * cp-tree.h: Declare it.
2613 2015-04-27  Ryan Burn  <contact@rnburn.com>
2614             Jeff Law  <law@redhat.com>
2616         PR c++/69024
2617         PR c++/68997
2618         * cp-gimplify.c (cp_gimplify_expr): Call cilk_cp_detect_spawn_and_unwrap
2619         instead of cilk_detect_spawn_and_unwrap.
2620         * cp-cilkplus.c (is_conversion_operator_function_decl_p): New.
2621         (find_spawn): New.
2622         (cilk_cp_detect_spawn_and_unwrap): New.
2623         * lambda.c: Include cp-cilkplus.h.
2624         * parser.c: Include cp-cilkplus.h.
2625         * cp-tree.h (cpp_validate_cilk_plus_loop): Move prototype into...
2626         * cp-cilkpus.h: New file.
2628 2016-04-27  Nathan Sidwell  <nathan@acm.org>
2630         * constexpr.c (get_fundef_copy): Use the original function for
2631         non-recursive evaluations.
2632         (save_fundef_copy): Always expect a slot to be available.
2634 2016-04-27  Bernd Schmidt  <bschmidt@redhat.com>
2636         * parser.c (cp_parser_postfix_expression): Call
2637         warn_for_memset instead of warning directly here.
2639 2016-04-26  Patrick Palka  <ppalka@gcc.gnu.org>
2641         PR c++/70241
2642         * decl.c (build_enumerator): Set current_access_specifier when
2643         declaring an enumerator belonging to an in-class enumeration.
2644         * parser.c (cp_parser_check_access_in_redecleration): Also
2645         consider in-class enumerations.
2647 2016-04-26  Marek Polacek  <polacek@redhat.com>
2649         PR c++/70744
2650         * call.c (build_conditional_expr_1): Call cp_stabilize_reference
2651         instead of stabilize_reference.
2652         (build_over_call): Likewise.
2653         * cp-tree.h (cp_stabilize_reference): Declare.
2654         * tree.c (cp_stabilize_reference): New function.
2655         * typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of
2656         stabilize_reference.
2657         (unary_complex_lvalue): Likewise.
2658         (cp_build_modify_expr): Likewise.
2660 2016-04-26  Jakub Jelinek  <jakub@redhat.com>
2662         PR bootstrap/70704
2663         * pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of
2664         just flag_checking.
2666 2016-04-25  Jason Merrill  <jason@redhat.com>
2668         * tree.c (std_attribute_table): New.
2669         (init_tree): Register it.
2671 2016-04-22  Jason Merrill  <jason@redhat.com>
2673         * parser.c (cp_parser_perform_range_for_lookup): Decay the array.
2675 2016-04-21  Patrick Palka  <ppalka@gcc.gnu.org>
2677         * name-lookup.c (free_saved_scope): New free list of saved_scope
2678         structures.
2679         (push_to_top_level): Attempt to reuse a saved_scope struct
2680         from free_saved_scope instead of allocating a new one each time.
2681         (pop_from_top_level_1): Chain the now-unused saved_scope structure
2682         onto free_saved_scope.
2684 2016-04-21  Paolo Carlini  <paolo.carlini@oracle.com>
2686         PR c++/70540
2687         * semantics.c (process_outer_var_ref): Unconditionally return
2688         error_mark_node when mark_used returns false.
2690 2016-04-21  Marek Polacek  <polacek@redhat.com>
2692         PR c++/70513
2693         * parser.c (cp_parser_enum_specifier): Check and possibly error for
2694         extra qualification.
2696 2016-04-20  Nathan Sidwell  <nathan@acm.org>
2698         PR c++/55635
2699         * init.c (build_vec_delete_1): Protect operator delete call in try
2700         finally.
2701         (build_delete): Likewise.
2702         * optimize.c (build_delete_destructor_body): Likewise.
2704 2016-04-20  Ilya Verbin  <ilya.verbin@intel.com>
2706         PR c++/69363
2707         * cp-tree.h (finish_omp_clauses): Add new default argument.
2708         * parser.c (cp_parser_cilk_simd_all_clauses): Use finish_omp_clauses
2709         instead of c_finish_cilk_clauses.
2710         * semantics.c (finish_omp_clauses): Add new argument.  Allow
2711         floating-point variables in the linear clause for Cilk Plus.
2713 2016-04-20  Nathan Sidwell  <nathan@acm.org>
2715         * semantics.c (finish_compound_lteral): Don't wrap VECTOR_TYPEs in a
2716         TARGET_EXPR.
2718 2016-04-19  Jason Merrill  <jason@redhat.com>
2720         PR c++/66543
2721         * expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR.
2722         * pt.c (make_pack_expansion): Call mark_exp_read.
2723         * semantics.c (finish_id_expression): Call mark_type_use in
2724         unevaluated context.
2726         DR 2137
2727         * call.c (implicit_conversion): If we choose a copy constructor
2728         for list-initialization from the same type, the conversion is an
2729         exact match.
2731         * constexpr.c (breaks): Handle EXIT_EXPR.
2732         (cxx_eval_loop_expr): Handle COMPOUND_EXPR body.
2733         (cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling
2734         of COMPOUND_EXPR.
2736         PR c++/68206
2737         PR c++/68530
2738         * constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR
2739         and GOTO_EXPR.
2741         * pt.c (tsubst_expr): Remove shadowing declaration.
2742         (tsubst_pack_expansion): Add assert.
2744         * semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION.
2746         PR c++/70522
2747         * name-lookup.c (qualified_lookup_using_namespace): Look through
2748         hidden names.
2750 2016-04-18  Michael Matz  <matz@suse.de>
2752         * class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
2753         (layout_class_type): Ditto.
2754         (build_base_field): Use SET_DECL_ALIGN.
2755         (fixup_attribute_variants): Use SET_TYPE_ALIGN.
2756         * decl.c (duplicate_decls): Use SET_DECL_ALIGN.
2757         (record_unknown_type): Use SET_TYPE_ALIGN.
2758         (cxx_init_decl_processing): Ditto.
2759         (copy_type_enum): Ditto.
2760         (grokfndecl): Use SET_DECL_ALIGN.
2761         (copy_type_enum): Use SET_TYPE_ALIGN.
2762         * pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN.
2763         (tsubst): Ditto.
2764         * tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN.
2765         * lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN.
2766         * method.c (implicitly_declare_fn): Use SET_DECL_ALIGN.
2767         * rtti.c (emit_tinfo_decl): Ditto.
2769 2016-04-18  Jason Merrill  <jason@redhat.com>
2771         PR c++/70690
2772         PR c++/70528
2773         * class.c (type_maybe_constexpr_default_constructor): New.
2774         (type_has_constexpr_default_constructor): Revert.
2776 2016-04-16  Sandra Loosemore  <sandra@codesourcery.com>
2778         PR target/1078
2780         * tree.c (cxx_attribute_table): Remove "com_interface" entry.
2781         (handle_com_interface_attribute): Delete.
2783 2016-04-15  Jason Merrill  <jason@redhat.com>
2785         PR c++/70685
2786         * constexpr.c (get_fundef_copy): Handle null *slot.
2788         PR c++/70505
2789         * pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR
2790         unknown_type_node, too.
2792 2016-04-15  Jason Merrill  <jason@redhat.com>
2793             Nathan Sidwell  <nathan@acm.org>
2795         PR c++/70594
2796         * constexpr.c (constexpr_call_table): Preserve in GC.
2797         (struct fundef_copy, struct fundef_copies_table_t):     Delete.
2798         (fundef_copies_table): Preserve in GC. Change to pointer to
2799         tree->tree hash.
2800         (maybe_initialize_fundef_copies_table): Adjust.
2801         (get_fundef_copy): Return a TREE_LIST.  Use non-inserting search.
2802         (save_fundef_copy): Adjust for a TREE_LIST.
2803         (cxx_eval_call_expression): Adjust for a fundef_copy TREE_LIST.
2804         (fini_constexpr): New.
2805         * cp-tree.h (fini_constexpr): Declare.
2806         * decl2.c (c_parse_final_cleanups): Call fini_constexpr.
2808 2016-04-15  Jakub Jelinek  <jakub@redhat.com>
2810         PR c/70436
2811         * parser.c (cp_parser_pragma): Add IF_P argument, pass it down
2812         where needed.
2813         (cp_parser_declaration_seq_opt, cp_parser_member_specification_opt,
2814         cp_parser_objc_interstitial_code, cp_parser_omp_declare_simd,
2815         cp_parser_oacc_routine): Adjust cp_parser_pragma callers.
2816         (cp_parser_statement): Likewise.  Adjust cp_parser_cilk_for caller.
2817         (cp_parser_omp_structured_block): Add IF_P argument, pass it down to
2818         cp_parser_statement.
2819         (cp_parser_oacc_data, cp_parser_oacc_host_data, cp_parser_oacc_loop,
2820         cp_parser_oacc_kernels_parallel, cp_parser_omp_critical,
2821         cp_parser_omp_simd, cp_parser_omp_for, cp_parser_omp_master,
2822         cp_parser_omp_ordered, cp_parser_omp_parallel, cp_parser_omp_single,
2823         cp_parser_omp_task, cp_parser_omp_taskgroup, cp_parser_omp_distribute,
2824         cp_parser_omp_teams, cp_parser_omp_target_data, cp_parser_omp_target,
2825         cp_parser_omp_taskloop, cp_parser_omp_construct,
2826         cp_parser_cilk_grainsize, cp_parser_cilk_simd, cp_parser_cilk_for):
2827         Add IF_P argument, pass it down where needed.
2828         (cp_parser_omp_for_loop): Likewise.  Clear IF_P if nbraces.
2829         (cp_parser_omp_sections_scope): Adjust cp_parser_omp_structured_block
2830         calls.
2832 2016-04-14  Jason Merrill  <jason@redhat.com>
2834         PR c++/70494
2835         * decl.c (cxx_maybe_build_cleanup): Handle non-decls.
2836         * typeck2.c (split_nonconstant_init_1): Use it.
2838         PR c++/70528
2839         * class.c (type_has_constexpr_default_constructor): Return true
2840         for an implicitly declared constructor.
2842         PR c++/70622
2843         * parser.c (cp_parser_init_declarator): Add auto_result parm.
2844         (cp_parser_simple_declaration): Pass it.
2845         (strip_declarator_types): New.
2847         PR c++/70543
2848         * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent
2849         initializer also makes the variable value-dependent.
2851         PR c++/70648
2852         * constexpr.c (cxx_eval_store_expression): Also copy
2853         CONSTRUCTOR_NO_IMPLICIT_ZERO.
2855 2016-04-14  Martin Sebor  <msebor@redhat.com>
2857         PR c++/69517
2858         PR c++/70019
2859         PR c++/70588
2860         * cp-tree.h, decl.c, init.c, typeck2.c: Revert.
2862 2016-04-14  Jason Merrill  <jason@redhat.com>
2864         * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty
2865         parameter ABI change.
2867 2016-04-13  Martin Sebor  <msebor@redhat.com>
2869         PR c++/69517
2870         PR c++/70019
2871         PR c++/70588
2872         * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new
2873         functions.
2874         * decl.c (check_initializer, cp_finish_decl): Call them.
2875         (reshape_init_r): Reject incompletely braced intializer-lists
2876         for VLAs.
2877         * init.c (throw_bad_array_length, build_vla_check)
2878         (build_vla_size_check, build_vla_init_check): Define new functions.
2879         * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p()
2880         to detect a VLA.
2881         (store_init_value): Same.
2883 2016-04-13  Jason Merrill  <jason@redhat.com>
2885         Warn about empty parameter ABI with -Wabi=9.
2886         * call.c (empty_class_msg, mark_for_abi_warning)
2887         (warn_empty_class_abi): New.
2888         (build_call_a): Use them.
2889         * decl.c (store_parm_decls): Use mark_for_abi_warning.
2890         * error.c (pp_format_to_string): New.
2892         Pass empty class parameters like C.
2893         * call.c (pass_as_empty_struct, empty_class_arg): New.
2894         (type_passed_as, build_x_va_arg): Use pass_as_empty_struct.
2895         (build_call_a): Use empty_class_arg.
2896         * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New.
2897         * decl.c (cxx_init_decl_processing): Create empty_struct_type.
2899 2016-04-13  Jason Merrill  <jason@redhat.com>
2901         PR c++/70627
2902         * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE.
2904 2016-04-13  Paolo Carlini  <paolo.carlini@oracle.com>
2906         PR c++/70635
2907         * pt.c (resolve_typename_type): Fix typos in infinite recursion
2908         avoidance mechanism.
2910 2016-04-13  Jason Merrill  <jason@redhat.com>
2912         PR c++/70634
2913         * pt.c (instantiation_dependent_uneval_expression_p): Split out
2914         from instantiation_dependent_expression_p.
2915         (value_dependent_expression_p): Use it for unevaluated operands.
2916         (instantiation_dependent_r): Don't check value-dependence.
2917         (instantiation_dependent_expression_p): Check
2918         value-dependence of the expression as a whole.
2919         * cp-tree.h: Declare instantiation_dependent_uneval_expression_p.
2920         * semantics.c (finish_decltype_type): Use it.
2922         * constexpr.c (potential_nondependent_constant_expression): New.
2923         (potential_nondependent_static_init_expression): New.
2924         (maybe_constant_value_1, fold_non_dependent_expr)
2925         (maybe_constant_init): Use them.
2926         * pt.c (instantiate_non_dependent_expr_sfinae)
2927         (instantiate_non_dependent_or_null, convert_nontype_argument): Use
2928         them.
2929         * cp-tree.h: Declare them.
2931 2016-04-13  Jakub Jelinek  <jakub@redhat.com>
2933         PR c++/70594
2934         * decl.c (pop_labels_1): Removed.
2935         (note_label, sort_labels): New functions.
2936         (pop_labels): During named_labels traversal, just push the slot
2937         pointers into a vector, then qsort it by DECL_UID and only then
2938         call pop_label and chain it into BLOCK_VARS.
2940 2016-04-13  Jason Merrill  <jason@redhat.com>
2942         PR c++/70615
2943         * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here.
2944         (cp_gimplify_expr): Not here.
2946 2016-04-12  Patrick Palka  <ppalka@gcc.gnu.org>
2948         PR c++/70610
2949         * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally
2950         recurse into it.
2951         * typeck.c (build_x_conditional_expr): Unconditionally remember
2952         that the result is an lvalue or xvalue.
2954 2016-04-12  Jason Merrill  <jason@redhat.com>
2956         * class.c (is_really_empty_class): A zero-length array is empty.
2957         An unnamed bit-field doesn't make a class non-empty.
2959 2016-04-12  Paolo Carlini  <paolo.carlini@oracle.com>
2961         PR c++/68722
2962         * parser.c (cp_parser_cache_defarg): When file ends in default
2963         argument simply return error_mark_node.
2965 2016-04-12  Nathan Sidwell  <nathan@acm.org>
2967         PR c++/70501
2968         * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE
2969         similarly to PMF.
2971 2016-04-11  Jason Merrill  <jason@redhat.com>
2973         * mangle.c (decl_is_template_id): The template itself counts as a
2974         template-id.
2976 2016-04-08  Patrick Palka  <ppalka@gcc.gnu.org>
2978         PR c++/70590
2979         PR c++/70452
2980         * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr
2981         on the result if it's not a CONSTRUCTOR.
2983 2016-04-07  Patrick Palka  <ppalka@gcc.gnu.org>
2985         PR c++/70452
2986         * constexpr.c (find_constructor): New function.
2987         (unshare_constructor): New function.
2988         (cxx_eval_call_expression): Use unshare_constructor instead of
2989         unshare_expr.
2990         (find_array_ctor_elt): Likewise.
2991         (cxx_eval_vec_init_1): Likewise.
2992         (cxx_eval_store_expression): Likewise.
2993         (cxx_eval_constant_expression): Likewise.
2995 2016-04-06  Patrick Palka  <ppalka@gcc.gnu.org>
2997         PR c/70436
2998         * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid
2999         potentially generating a future -Wparentheses warning in its
3000         callers.
3002 2016-04-06  Jason Merrill  <jason@redhat.com>
3004         * class.c (check_abi_tags): Fix function template handling.
3006 2016-04-05  Nathan Sidwell  <nathan@acm.org>
3008         PR c++/70512
3009         * class.c (fixup_may_alias): New.
3010         (fixup_attribute_variants): Call it.
3012 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
3014         PR c++/70452
3015         * constexpr.c (struct fundef_copy): New struct.
3016         (struct fundef_copies_table_t): New struct.
3017         (fundef_copies_table): New static variable.
3018         (maybe_initialize_fundef_copies_table): New static function.
3019         (get_fundef_copy): New static function.
3020         (save_fundef_copy): New static function.
3021         (cxx_eval_call_expression): Use get_fundef_copy, and
3022         save_fundef_copy.
3023         (constexpr_call_table): Add "deletable" GTY marker.
3025 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
3027         PR c++/70452
3028         * cp-tree.h (class cache_map): Remove.
3029         * constexpr.c (cv_cache): Change type to
3030         GTY((deletable)) hash_map<tree, tree> *.
3031         (maybe_constant_value): Adjust following the change to cv_cache.
3032         (clear_cv_cache): New static function.
3033         (clear_cv_and_fold_caches): Use it.
3034         * cp-gimplify.c (fold_cache): Change type to
3035         GTY((deletable)) hash_map<tree, tree> *.
3036         (clear_fold_cache): Adjust following the change to fold_cache.
3037         (cp_fold): Likewise.
3039 2016-04-02  Martin Sebor  <msebor@redhat.com>
3041         PR c++/67376
3042         PR c++/70170
3043         PR c++/70172
3044         PR c++/70228
3045         * constexpr.c (diag_array_subscript): New function.
3046         (cxx_eval_array_reference): Detect out of bounds array indices.
3048 2016-04-01  Jason Merrill  <jason@redhat.com>
3050         PR c++/70449
3051         PR c++/70344
3052         * pt.c (instantiate_decl): A function isn't fully defined if
3053         DECL_INITIAL is error_mark_node.
3054         * constexpr.c (cxx_eval_call_expression): Likewise.
3056 2016-04-01  Jakub Jelinek  <jakub@redhat.com>
3057             Marek Polacek  <polacek@redhat.com>
3059         PR c++/70488
3060         * init.c (warn_placement_new_too_small): Test whether
3061         DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi.
3063 2016-04-01  Nathan Sidwell  <nathan@acm.org>
3065         PR c++/68475
3066         * decl.c (check_redeclaration_exception_specification): Check
3067         regardless of -fno-exceptions.
3068         * typeck2.c (merge_exception_specifiers): Relax assert by checking
3069         flag_exceptions too.
3071 2016-03-31  Nathan Sidwell  <nathan@acm.org>
3073         * decl.c (start_preparsed_function): Remove unnecessary bracing.
3074         (finish_destructor_body): Don't emit operator delete here.
3076 2016-03-31  Nathan Sidwell  <nathan@acm.org>
3078         PR c++/70393
3079         * constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR
3080         elements in field order.
3082 2016-03-31  Marek Polacek  <polacek@redhat.com>
3084         PR c/70297
3085         * decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN.
3087 2016-03-31  Richard Biener  <rguenther@suse.de>
3089         PR c++/70430
3090         * typeck.c (cp_build_binary_op): Fix operand order of vector
3091         conditional in truth op handling.
3093 2016-03-29  Jason Merrill  <jason@redhat.com>
3095         PR c++/70353
3096         * decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics
3097         in constexpr functions.
3099 2016-03-28  Jason Merrill  <jason@redhat.com>
3101         PR c++/70422
3102         PR c++/64266
3103         PR c++/70353
3104         * decl.c, pt.c, constexpr.c: Revert last patch.
3106 2016-03-25  Jason Merrill  <jason@redhat.com>
3107             Martin LiÅ¡ka  <mliska@suse.cz>
3109         PR c++/64266
3110         PR c++/70353
3111         Core issue 1962
3112         * decl.c (cp_fname_init): Decay the initializer to pointer.
3113         (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
3114         DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
3115         Don't call cp_finish_decl.
3116         * pt.c (tsubst_expr) [DECL_EXPR]: Set DECL_VALUE_EXPR,
3117         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.  Don't call cp_finish_decl.
3118         * constexpr.c (cxx_eval_constant_expression) [VAR_DECL]:
3119         Handle DECL_VALUE_EXPR.
3121 2016-03-24  Jason Merrill  <jason@redhat.com>
3123         PR c++/70386
3124         * constexpr.c (cxx_eval_bare_aggregate): Handle PMFs.
3126         PR c++/70323
3127         * constexpr.c (cxx_eval_call_expression): Don't cache result if
3128         *overflow_p.
3130 2016-03-24  Patrick Palka  <ppalka@gcc.gnu.org>
3132         PR c++/62212
3133         * tree.c (build_cplus_array_type): Determine type-dependentess
3134         with uses_template_parms instead of with dependent_type_p.
3136 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
3138         PR c++/70347
3139         * typeck.c (process_init_constructor_union): If the initializer
3140         is empty, use the union's NSDMI if it has one.
3142 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
3144         PR c++/70332
3145         * pt.c (tsubst_copy) [PARM_DECL]: Handle the use of 'this' in an
3146         NSDMI that's part of an aggregrate initialization.
3148 2016-03-23  Jakub Jelinek  <jakub@redhat.com>
3150         PR c++/70001
3151         * constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers
3152         for 1..max even for multi-dimensional arrays.  Call unshare_expr
3153         on it.
3155         PR c++/70323
3156         * constexpr.c (cxx_eval_constant_expression): Diagnose overflow
3157         on TREE_OVERFLOW constants.
3159         PR c++/70376
3160         * cp-gimplify.c (genericize_omp_for_stmt): Don't walk OMP_FOR_CLAUSES
3161         for OMP_TASKLOOP here.
3162         (cp_genericize_r): Handle OMP_TASKLOOP like OMP_TASK, except do call
3163         genericize_omp_for_stmt instead of cp_walk_tree on OMP_BODY.
3165 2016-03-23  Alexandre Oliva  <aoliva@redhat.com>
3166             Jason Merrill  <jason@redhat.com>
3167             Jakub Jelinek  <jakub@redhat.com>
3169         PR c++/69315
3170         * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): Remove.
3171         * decl.c (defer_mark_used_calls, deferred_mark_used_calls): Remove.
3172         (finish_function): Don't set or test them.
3173         * decl2.c (mark_used): Don't handle defer_mark_used_calls.
3175 2016-03-23  Jason Merrill  <jason@redhat.com>
3177         PR c++/70344
3178         * constexpr.c (cxx_eval_call_expression): Catch invalid recursion.
3180 2016-03-23  Marek Polacek  <polacek@redhat.com>
3182         PR c++/69884
3183         * pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes.
3185 2016-03-22  Ilya Enkovich  <enkovich.gnu@gmail.com>
3187         * call.c (build_conditional_expr_1): Always use original
3188         condition type for vector type checks and build.
3190 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
3192         PR c++/70096
3193         * pt.c (tsubst_decl): Clear the DECL_MODE of the new decl.
3195 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
3197         PR c++/70204
3198         * constexpr.c (non_const_var_error): Check
3199         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
3201 2016-03-21  Richard Henderson  <rth@redhat.com>
3203         PR c++/70273
3204         * decl.c (notice_forced_label_r): New.
3205         (cp_finish_decl): Use it.
3207 2016-03-21  Jason Merrill  <jason@redhat.com>
3209         PR c++/70285
3210         * cp-gimplify.c (cp_fold) [COND_EXPR]: Handle bit-fields.
3212 2016-03-18  Jason Merrill  <jason@redhat.com>
3214         PR c++/70139
3215         * constexpr.c (cxx_eval_call_expression): Fix trivial copy.
3217         PR c++/70147
3218         * class.c (vptr_via_virtual_p): New.
3219         (most_primary_binfo): Factor out of build_rtti_vtbl_entries.
3220         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Don't clear
3221         a vptr from any virtual base in a not-in-charge 'structor.
3223         * decl.c (build_clobber_this): Factor out of
3224         start_preparsed_function and begin_destructor_body.  Handle
3225         virtual bases better.
3227         * class.c (build_if_in_charge): Split out from build_base_path.
3228         * init.c (expand_virtual_init, expand_default_init): Use it.
3229         * call.c (build_special_member_call): Use it.
3231 2016-03-18  Jakub Jelinek  <jakub@redhat.com>
3233         PR c++/70267
3234         * init.c (build_new_1): Complain and return error_mark_node
3235         if alloc_fn is not _Jv_AllocObject function returning pointer.
3237 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
3239         PR c++/70205
3240         * search.c (adjust_result_of_qualified_name_lookup): Don't
3241         update the BASELINK_BINFO of DECL if the second call
3242         to lookup_base fails.
3244 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
3246         PR c++/70218
3247         * parser.c (cp_parser_lambda_expression): Move call to
3248         pop_deferring_access_checks ahead of the call to
3249         cp_parser_end_tentative_firewall.
3251 2016-03-17  Jakub Jelinek  <jakub@redhat.com>
3253         PR c++/70144
3254         * cp-tree.h (magic_varargs_p): Return int instead of bool.
3255         * call.c (magic_varargs_p): Return int instead of bool, return 2 for
3256         Cilk+ reductions, otherwise 1 for magic varargs and 0 for normal
3257         varargs.
3258         (build_over_call): If magic_varargs_p == 2, call reject_gcc_builtin,
3259         if magic_varargs_p == 1, call decay_conversion
3260         instead of mark_type_use.  Don't store error_mark_node arguments to
3261         argarray, instead return error_mark_node.
3263         PR c++/70272
3264         * decl.c (begin_destructor_body): Don't insert clobber if
3265         is_empty_class (current_class_type).
3267 2016-03-17  Marek Polacek  <polacek@redhat.com>
3269         PR c++/70194
3270         * typeck.c (warn_for_null_address): New function.
3271         (cp_build_binary_op): Call it.
3273 2016-03-16  Jason Merrill  <jason@redhat.com>
3275         PR c++/70259
3276         * decl.c (start_preparsed_function): Don't clobber an empty base.
3278 2016-03-16  Jakub Jelinek  <jakub@redhat.com>
3280         PR c++/70147
3281         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Conditionalize
3282         BINFO_VIRTUAL_P vtable clearing on current_in_charge_parm.
3284         PR c++/70147
3285         * cp-ubsan.c (cp_ubsan_maybe_initialize_vtbl_ptrs): Temporarily
3286         set in_base_initializer.
3288 2016-03-15  Marek Polacek  <polacek@redhat.com>
3290         PR c++/70209
3291         * tree.c (strip_typedefs): Call strip_typedefs again on the
3292         DECL_ORIGINAL_TYPE result.
3294 2016-03-15  Jason Merrill  <jason@redhat.com>
3296         PR c++/70095
3297         * pt.c (instantiate_decl): Fix call to variable_template_p.
3299         PR c++/70141
3300         * pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE.
3302 2016-03-14  Casey Carter  <casey@carter.net>
3303             Jason Merrill  <jason@redhat.com>
3305         P0184R0: Generalizing the Range-Based For Loop
3306         * parser.c (cp_convert_range_for): Set the type of __end separately.
3307         (cp_parser_perform_range_for_lookup): Allow different begin/end
3308         types if they are comparable.
3310 2016-03-12  Patrick Palka  <ppalka@gcc.gnu.org>
3312         PR c++/70106
3313         * semantics.c (force_paren_expr): Just build a PAREN_EXPR when
3314         processing_template_decl and EXPR is a SCOPE_REF.
3316 2016-03-10  Patrick Palka  <ppalka@gcc.gnu.org>
3317             Jakub Jelinek  <jakub@redhat.com>
3319         PR c++/70001
3320         * constexpr.c (cxx_eval_vec_init_1): For pre_init case, reuse
3321         return value from cxx_eval_constant_expression from earlier
3322         elements if it is valid constant initializer requiring no
3323         relocations.
3325 2016-03-10  Marek Polacek  <polacek@redhat.com>
3327         PR c++/70153
3328         * cp-gimplify.c (cp_fold): Handle UNARY_PLUS_EXPR.
3330 2016-03-09  Cesar Philippidis  <cesar@codesourcery.com>
3332         * parser.c (cp_parser_oacc_loop): Update cclauses and clauses
3333         when calling c_finish_omp_clauses.
3335 2016-03-08  Jason Merrill  <jason@redhat.com>
3337         * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful
3338         diagnostic for use of "concept".
3339         (cp_parser_requires_clause_opt): And "requires".
3340         (cp_parser_type_parameter, cp_parser_late_return_type_opt)
3341         (cp_parser_explicit_template_declaration): Adjust.
3342         * Make-lang.in (check-c++-all): Add "concepts" to std list.
3344         P0036R0: Unary Folds and Empty Parameter Packs
3345         * pt.c (expand_empty_fold): Remove special cases for *,+,&,|.
3347 2016-03-08  Jakub Jelinek  <jakub@redhat.com>
3349         PR c++/70135
3350         * constexpr.c (cxx_eval_loop_expr): Forget saved values of SAVE_EXPRs
3351         even after the last iteration of the loop.
3353         * decl.c (duplicate_decls): Fix spelling - becuase -> because.
3355 2016-03-07  Patrick Palka  <ppalka@gcc.gnu.org>
3357         PR c++/66786
3358         * pt.c (get_template_info): Handle PARM_DECL.
3359         (template_class_depth): Check DECL_P instead of
3360         VAR_OR_FUNCTION_DECL_P.
3362 2016-03-05  Jason Merrill  <jason@redhat.com>
3364         PR c++/67364
3365         * constexpr.c (cxx_eval_store_expression): Replace
3366         CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too.
3368 2016-03-05  Patrick Palka  <ppalka@gcc.gnu.org>
3370         PR c++/66786
3371         * pt.c (template_class_depth): Given a lambda type, iterate
3372         into its LAMBDA_TYPE_EXTRA_SCOPE field instead of its
3373         TYPE_CONTEXT.  Given a VAR_DECL, iterate into its
3374         CP_DECL_CONTEXT.
3376 2016-03-04  Jason Merrill  <jason@redhat.com>
3378         PR c++/69203
3379         * cp-tree.h (COND_EXPR_IS_VEC_DELETE): New.
3380         * init.c (build_vec_delete_1): Set it.
3381         * constexpr.c (potential_constant_expression_1) [COND_EXPR]: Check it.
3383 2016-03-04  Jakub Jelinek  <jakub@redhat.com>
3385         * decl.c (start_preparsed_function): Don't emit start clobber at the
3386         start of constructor clones.
3388         PR c++/70035
3389         * cp-tree.h (cp_ubsan_maybe_initialize_vtbl_ptrs): New prototype.
3390         * decl.c (start_preparsed_function): Call
3391         cp_ubsan_maybe_initialize_vtbl_ptrs if needed.
3392         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs,
3393         cp_ubsan_maybe_initialize_vtbl_ptrs): New functions.
3395 2016-03-04  Jason Merrill  <jason@redhat.com>
3397         PR c++/67364
3398         * constexpr.c (cxx_eval_component_reference): Further tweak.
3400         * constexpr.c (struct constexpr_ctx): Add save_exprs field.
3401         (cxx_eval_loop_expr): Discard SAVE_EXPR values before looping.
3402         (cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set.
3403         (cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize.
3405         PR c++/70067
3406         * tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the
3407         same type.
3409 2016-03-03  Jason Merrill  <jason@redhat.com>
3411         * method.c (synthesized_method_walk): operator= can also be constexpr.
3413         * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get
3414         LAMBDA_EXPR_RETURN_TYPE from the instantiated closure.
3416         PR c++/67164
3417         * pt.c (copy_template_args): New.
3418         (tsubst_pack_expansion): Use it.
3420         * call.c (build_aggr_conv): Use get_nsdmi.
3422         PR c++/51406
3423         * typeck.c (build_static_cast_1): Avoid folding back to lvalue.
3425         PR c++/67364
3426         * constexpr.c (cxx_eval_component_reference): Just return an empty
3427         CONSTRUCTOR for an empty class.
3429 2016-03-01  Jason Merrill  <jason@redhat.com>
3431         PR c++/70036
3432         * parser.c (cp_parser_requires_clause): Call
3433         check_for_bare_parameter_packs.
3435         PR c++/51489
3436         * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
3437         the operands.
3439         PR c++/69995
3440         * constexpr.c (cxx_eval_call_expression): Unshare arg.
3441         (cxx_eval_constant_expression) [DECL_EXPR]: Unshare init.
3442         [TARGET_EXPR]: Unshare init.
3444 2016-03-01  Patrick Palka  <ppalka@gcc.gnu.org>
3446         PR c++/68948
3447         PR c++/69961
3448         * pt.c (tsubst_baselink): Reinstate the check for an invalid
3449         constructor call.
3451 2016-02-28  Jason Merrill  <jason@redhat.com>
3453         PR c++/69995
3454         * constexpr.c (cxx_eval_store_expression): Unshare init.
3456 2016-02-26  Jason Merrill  <jason@redhat.com>
3458         PR c++/69958
3459         * pt.c (make_argument_pack): New.
3460         (tsubst_copy) [SIZEOF_EXPR]: Handle partial expansion.
3461         (tsubst_copy_and_build): Likewise.
3463 2016-02-25  Jason Merrill  <jason@redhat.com>
3465         PR c++/69889
3466         * cp-tree.h (AGGR_INIT_FROM_THUNK_P): New.
3467         * tree.c (build_aggr_init_expr): Set it.
3468         * semantics.c (simplify_aggr_init_expr): Check it.
3469         * cp-gimplify.c (cp_genericize_r): Don't walk into
3470         a call/aggr_init from a thunk.
3472         PR c++/69842
3473         * method.c (forward_parm): Handle parameter packs.
3474         * lambda.c (maybe_add_lambda_conv_op): Use it for them.
3476         PR c++/67364
3477         * constexpr.c (cxx_eval_component_reference): Don't complain about
3478         unevaluated empty classes.
3480         PR c++/68049
3481         * tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE.
3483 2016-02-25  Patrick Palka  <ppalka@gcc.gnu.org>
3485         PR c++/69736
3486         * cp-tree.h (REF_PARENTHESIZED_P): Adjust documentation.
3487         (maybe_undo_parenthesized_ref): Declare.
3488         * semantics.c (maybe_undo_parenthesized_ref): Split out from
3489         check_return_expr.
3490         (finish_call_expr): Use it.
3491         * typeck.c (check_return_expr): Use it.
3492         * pt.c (tsubst_copy_and_build) [INDIRECT_REF]: Retain the
3493         REF_PARENTHESIZED_P flag.
3495 2016-02-24  Jakub Jelinek  <jakub@redhat.com>
3497         PR c++/69922
3498         * class.c (build_base_path): Set TREE_NO_WARNING on the null_test.
3499         Avoid folding it.
3500         * init.c (build_vec_delete_1, build_delete): Don't fold the non-NULL
3501         tests.
3502         * cp-gimplify.c (cp_fold): For TREE_NO_WARNING comparisons with NULL,
3503         unless they are folded into INTEGER_CST, error_mark_node or some
3504         comparison with NULL, avoid folding them and use either the original
3505         comparison or non-folded comparison of folded arguments.
3506         * cp-ubsan.c (cp_ubsan_instrument_vptr): Set TREE_NO_WARNING on the
3507         comparison, don't fold the comparison right away.
3509 2016-02-24  Jason Merrill  <jason@redhat.com>
3511         PR c++/69323
3512         * friend.c (make_friend_class): Likewise.
3513         * decl.c (lookup_and_check_tag): Diagnose invalid dependent friend.
3515 2016-02-24  Jason Merrill  <jason@redhat.com>
3517         PR c++/69323
3518         * pt.c (instantiate_class_template_1): Set
3519         processing_template_decl before substituting friend_type.
3521 016-02-24  Martin Sebor  <msebor@redhat.com>
3523         PR c++/69912
3524         * tree.c (build_ctor_subob_ref): Compare types' main variants
3525         instead of the types as they are.
3527 2016-02-24  Jason Merrill  <jason@redhat.com>
3529         * decl.c (start_preparsed_function): Condition ctor clobber on
3530         flag_lifetime_dse > 1.
3532         * cp-gimplify.c (cp_fold): Don't fold constexpr calls if -fno-inline.
3534 2016-02-19  Jason Merrill  <jason@redhat.com>
3536         PR c++/69743
3537         * call.c (remaining_arguments): No longer static.
3538         * cp-tree.h: Declare it.
3539         * pt.c (more_specialized_fn): Use it.
3541 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
3542             Bernd Edlinger  <bernd.edlinger@hotmail.de>
3544         * Make-lang.in: Invoke gperf with -L C++.
3545         * cfns.gperf: Remove prototypes for hash and libc_name_p
3546         inlines.
3547         * cfns.h: Regenerated.
3548         * except.c (nothrow_libfn_p): Adjust.
3550 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
3552         PR c++/69850
3553         * rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use
3554         NE_EXPR instead of EQ_EXPR and swap last two arguments on COND_EXPR.
3556 2016-02-19  Patrick Palka  <ppalka@gcc.gnu.org>
3558         PR c++/68948
3559         * pt.c (tsubst_baselink): Don't diagnose an invalid constructor
3560         call here.
3561         * semantics.c (finish_call_expr): Don't assume a constructor
3562         call is dependent if only the "this" pointer is dependent.  When
3563         building a constructor call, always use a dummy object.
3565 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
3567         PR c++/69850
3568         * init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR
3569         condition.
3570         * cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary
3571         operators if folding preserved the binop, just with different
3572         arguments.
3574         PR c++/67767
3575         * parser.c (cp_parser_std_attribute_spec_seq): Don't assume
3576         attr_spec is always single element chain, chain all the attributes
3577         properly together in the right order.
3579 2016-02-18  Jason Merrill  <jason@redhat.com>
3581         * mangle.c (maybe_check_abi_tags): Add for_decl parm.  Call
3582         mangle_decl.
3583         (mangle_decl): Call maybe_check_abi_tags for function scope.
3584         (mangle_guard_variable): Call maybe_check_abi_tags here.
3585         (write_guarded_var_name): Not here.
3587 2016-02-17  Jason Merrill  <jason@redhat.com>
3589         PR c++/65985
3590         * constexpr.c (build_constexpr_constructor_member_initializers):
3591         Handle an additional STATEMENT_LIST.
3593         PR c++/68585
3594         * constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection.
3596         PR c++/68679
3597         * decl2.c (reset_type_linkage_2): Look through member templates.
3599 2016-02-17  Jakub Jelinek  <jakub@redhat.com>
3601         PR c++/69850
3602         * init.c (build_delete): Set TREE_NO_WARNING on ifexp.
3604 2016-02-17  Jason Merrill  <jason@redhat.com>
3606         PR c++/69842
3607         * method.c (forward_parm): Split out from...
3608         (add_one_base_init): ...here.
3609         * lambda.c (maybe_add_lambda_conv_op): Use it.
3611 2016-02-16  Jason Merrill  <jason@redhat.com>
3613         PR c++/10200
3614         PR c++/69753
3615         * call.c, cp-tree.h, name-lookup.c, pt.c, search.c, semantics.c,
3616         tree.c, typeck2.c: Revert earlier changes.
3617         * parser.c (cp_parser_lookup_name): Ignore namespace-scope
3618         non-type templates after -> or .
3620 2016-02-16  Jakub Jelinek  <jakub@redhat.com>
3622         PR c/69835
3623         * typeck.c (cp_build_binary_op): Revert 2015-09-09 change.
3625 2016-02-16  Jason Merrill  <jason@redhat.com>
3627         PR c++/69657
3628         * name-lookup.c (lookup_qualified_name): Add find_hidden parm.
3629         (set_decl_namespace): Pass it.  Complain about finding a hidden friend.
3630         * name-lookup.h: Adjust.
3632 2016-02-16  James Norris  <jnorris@codesourcery.com>
3634         * parser.c (cp_parser_oacc_data_clause_deviceptr): Remove checking.
3635         * semantics.c (finish_omp_clauses): Add deviceptr checking.
3637 2016-02-15  Jakub Jelinek  <jakub@redhat.com>
3639         PR c++/69658
3640         * init.c (expand_default_init): Only call reshape_init
3641         in the direct-initialization from an initializer list case.
3643 2016-02-15  Jason Merrill  <jason@redhat.com>
3645         PR c++/69753
3646         * semantics.c (finish_call_expr): Implicit 'this' does not make
3647         the call dependent.
3648         * search.c (any_dependent_bases_p): Split out...
3649         * name-lookup.c (do_class_using_decl): ...from here.
3650         * call.c (build_new_method_call_1): Don't complain about missing object
3651         if there are dependent bases.  Tweak error.
3652         * tree.c (non_static_member_function_p): Remove.
3653         * pt.c (type_dependent_expression_p): A member template of a
3654         dependent type is dependent.
3655         * cp-tree.h: Adjust.
3657         PR c++/68890
3658         * constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check.
3660 2016-02-12  Patrick Palka  <ppalka@gcc.gnu.org>
3662         PR c++/69098
3663         * pt.c (lookup_and_finish_template_variable): New function,
3664         extracted from ...
3665         (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: ... here.  Use it.
3666         (tsubst_qualified_id): Consider that EXPR might be a variable
3667         template.
3668         * typeck.c (check_template_keyword): Don't emit an error
3669         if DECL is a variable template.
3671 2016-02-12  Jakub Jelinek  <jakub@redhat.com>
3673         * error.c: Spelling fixes - behaviour -> behavior and
3674         neighbour -> neighbor.
3675         * decl.c: Likewise.
3676         * typeck.c (cp_build_binary_op): Fix up behavior spelling in
3677         diagnostics.
3678         * init.c (build_delete): Likewise.
3680 2016-02-11  Jakub Jelinek  <jakub@redhat.com>
3682         PR c/69768
3683         * typeck.c (cp_build_binary_op): cp_fully_fold integer_zerop
3684         arguments for -Waddress warning.  Fix up formatting.
3686 2016-02-11  Paolo Carlini  <paolo.carlini@oracle.com>
3688         PR c++/68726
3689         * pt.c (lookup_template_class_1): Check tsubst return value for
3690         error_mark_node.
3692 2016-02-10  Jason Merrill  <jason@redhat.com>
3694         PR c++/68926
3695         * pt.c (resolve_nondeduced_context): Add complain parm.
3696         (do_auto_deduction): Pass it.
3697         * cvt.c (convert_to_void): Likewise.
3698         * decl.c (cp_finish_decl): Likewise.
3699         * init.c (build_new): Likewise.
3700         * rtti.c (get_tinfo_decl_dynamic): Likewise.
3701         * semantics.c (finish_decltype_type): Likewise.
3702         * typeck.c (decay_conversion): Likewise.
3703         * cp-tree.h: Adjust declaration.
3704         * call.c (standard_conversion): Add complain parm, pass it along.
3705         (implicit_conversion): Pass it.
3707         PR c++/69657
3708         * name-lookup.c (ambiguous_decl): Call remove_hidden_names.
3709         (lookup_name_real_1): Likewise.
3710         (remove_hidden_names): Handle non-functions too.
3712         PR c++/10200
3713         * parser.c (cp_parser_lookup_name): When looking for a template
3714         after . or ->, only consider class templates.
3715         (cp_parser_postfix_dot_deref_expression): Handle the current
3716         instantiation.  Remember a dependent object expression.
3717         * typeck2.c (build_x_arrow): Handle the current instantiation.
3719         * ptree.c (debug_tree): Implement for cp_expr.
3721 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
3723         PR c++/69139
3724         * parser.c (cp_parser_simple_type_specifier): Make the check
3725         for disambiguating between an 'auto' placeholder and an implicit
3726         template parameter more robust.
3728 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
3730         PR c++/69283
3731         PR c++/67835
3732         * decl2.c (mark_used): When given a TEMPLATE_DECL, return after
3733         setting its TREE_USED flag.
3735 2016-02-08  Jason Merrill  <jason@redhat.com>
3737         PR c++/69657
3738         * name-lookup.c (do_nonmember_using_decl): Leave anticipated
3739         built-ins alone.
3741 2016-02-08  Jakub Jelinek  <jakub@redhat.com>
3743         PR c++/59627
3744         * parser.c (cp_parser_omp_declare_reduction): Set assembler name
3745         of the DECL_OMP_DECLARE_REDUCTION_P decls.
3747 2016-02-08  Marek Polacek  <polacek@redhat.com>
3749         PR c++/69688
3750         * constexpr.c (clear_cv_and_fold_caches): Renamed from clear_cv_cache.
3751         Call clear_fold_cache.
3752         * cp-tree.h: Adjust declaration.
3753         * decl.c (finish_enum_value_list): Call clear_cv_and_fold_caches
3754         rather than clear_cv_cache and clear_fold_cache.
3755         * typeck2.c (store_init_value): Call clear_cv_and_fold_caches.
3757 2016-02-08  Jason Merrill  <jason@redhat.com>
3759         * cp-tree.h (CONV_FOLD, CONV_BACKEND_CONVERT): New.
3760         * cvt.c (convert): Pass CONV_BACKEND_CONVERT.
3761         (ocp_convert): Use *_maybe_fold.
3762         (cp_convert_to_pointer): Add dofold parameter.
3763         * cp-gimplify.c (cp_fold) [CONVERT_EXPR]: Call convert.
3765 2016-02-05  Martin Sebor  <msebor@redhat.com>
3767         PR c++/69662
3768         * init.c (find_field_init): New function.
3769         (warn_placement_new_too_small): Call it.  Handle one-element arrays
3770         at ends of structures special.
3772 2016-02-05  Jason Merrill  <jason@redhat.com>
3774         PR c++/68948
3775         * semantics.c (finish_expr_stmt): If expr is error_mark_node,
3776         make sure we've seen_error().
3778 2016-02-05  Patrick Palka  <ppalka@gcc.gnu.org>
3780         PR c++/68948
3781         * pt.c (tsubst_baselink): Diagnose an invalid constructor call
3782         if lookup_fnfields returns NULL_TREE and the name being looked
3783         up has the form A::A.
3785 2016-02-04  Patrick Palka  <ppalka@gcc.gnu.org>
3787         * constexpr.c (cxx_eval_binary_expression): Fold equality
3788         comparisons involving PTRMEM_CSTs.
3790 2016-02-04  Jakub Jelinek  <jakub@redhat.com>
3792         * class.c (find_flexarrays): Don't declare dom variable.
3793         (diagnose_flexarray): Likewise.
3795 2016-02-02  Martain Sebor  <msebor@redhat.com>
3797         PR c++/69251
3798         PR c++/69253
3799         PR c++/69290
3800         PR c++/69277
3801         PR c++/69349
3802         * class.c (walk_subobject_offsets): Avoid testing the upper bound
3803         of a flexible array member for equality to null.
3804         (find_flexarrays): Remove spurious whitespace introduced in r231665.
3805         (diagnose_flexarrays): Avoid checking the upper bound of arrays.
3806         (check_flexarrays): Same.
3807         * decl.c (compute_array_index_type): Avoid special case for flexible
3808         array members.
3809         (grokdeclarator): Avoid calling compute_array_index_type for flexible
3810         array members.
3811         * error.c (dump_type_suffix): Revert changes introduced in r231665
3812         and rendered unnecessary by the changes above.
3813         * pt.c (tsubst):  Same.
3814         * tree.c (build_ctor_subob_ref): Handle flexible array members.
3815         * typeck2.c (digest_init_r): Revert changes introduced in r231665.
3816         (process_init_constructor_array): Same.
3817         (process_init_constructor_record): Same.
3819 2016-02-03  Patrick Palka  <ppalka@gcc.gnu.org>
3821         PR c++/69056
3822         * pt.c (try_one_overload): Handle comparing argument packs so
3823         that there is no conflict if we deduced more arguments of an
3824         argument pack than were explicitly specified.
3826 2016-01-31  Jakub Jelinek  <jakub@redhat.com>
3827             Jason Merrill  <jason@redhat.com>
3829         PR c++/68763
3830         * tree.c (strip_typedefs) [FUNCTION_TYPE]: Avoid building a new
3831         function type if nothing is changing.
3833 2016-01-31  Jason Merrill  <jason@redhat.com>
3835         PR c++/69009
3836         * pt.c (partial_specialization_p, impartial_args): New.
3837         (instantiate_decl): Call impartial_args.
3839         * mangle.c (maybe_check_abi_tags): New.
3840         (write_guarded_var_name): Call it.
3841         (mangle_ref_init_variable): Call check_abi_tags.
3843         * pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES
3844         between template and instantiation.
3846 2016-01-29  Jakub Jelinek  <jakub@redhat.com>
3848         PR debug/66869
3849         * decl.c (wrapup_globals_for_namespace): Warn about unused static
3850         function declarations.
3852 2016-01-29  Marek Polacek  <polacek@redhat.com>
3854         PR c++/69509
3855         PR c++/69516
3856         * constexpr.c (cxx_eval_array_reference): Give the "array subscript
3857         out of bound" error earlier.
3858         * init.c (build_vec_init): Change NE_EXPR into GT_EXPR.  Update the
3859         commentary.
3861 2016-01-29  Patrick Palka  <ppalka@gcc.gnu.org>
3863         * name-lookup.c (begin_scope): After reusing a cp_binding_level
3864         structure, update free_binding_level before the structure's
3865         level_chain field gets cleared, not after.
3867 2016-01-28  Jason Merrill  <jason@redhat.com>
3869         PR c++/67407
3870         * search.c (dfs_walk_once, dfs_walk_once_r)
3871         (dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use
3872         hash_set instead of BINFO_MARKED.
3873         (dfs_unmark_r): Remove.
3875 2016-01-28  Patrick Palka  <ppalka@gcc.gnu.org>
3877         PR c++/24208
3878         * parser.c (LEXER_DEBUGGING_ENABLED_P): New macro.
3879         (cp_lexer_debugging_p): Use it.
3880         (cp_lexer_start_debugging): Likewise.
3881         (cp_lexer_stop_debugging): Likewise.
3883 2016-01-27  Marek Polacek  <polacek@redhat.com>
3885         PR c/68062
3886         * typeck.c (cp_build_binary_op): Promote operand to unsigned, if
3887         needed.  Add -Wsign-compare warning.
3889 2016-01-27  Ryan Burn  <contact@rnburn.com>
3891         PR cilkplus/69267
3892         * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed
3893         superfluous post_p argument in call to
3894         cilk_gimplify_call_params_in_spawned_fn.
3896 2016-01-27  Marek Polacek  <polacek@redhat.com>
3898         PR c++/69379
3899         * constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs
3900         wrapped in NOP_EXPRs.
3902 2016-01-27  Martin Sebor  <msebor@redhat.com>
3904         PR c++/69317
3905         * mangle.c (mangle_decl): Reference the correct (saved) version
3906         of the ABI in -Wabi diagnostics.
3908 2016-01-27  Marek Polacek  <polacek@redhat.com>
3910         PR c++/69496
3911         * constexpr.c (cxx_eval_array_reference): Evaluate the number of
3912         elements of the array.
3914 2016-01-26  Jason Merrill  <jason@redhat.com>
3916         PR c++/68949
3917         * constexpr.c (register_constexpr_fundef): Keep the un-massaged body.
3918         (cxx_eval_call_expression): Don't look through clones.
3919         * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias.
3920         * semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of
3921         maybe-in-charge *tor.
3923 2016-01-26  Jason Merrill  <jason@redhat.com>
3925         PR c++/68782
3926         * constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT
3927         and TREE_SIDE_EFFECTS.
3928         (cxx_eval_constant_expression) [CONSTRUCTOR]: Call
3929         verify_constructor_flags.
3931 2016-01-26  Jakub Jelinek  <jakub@redhat.com>
3933         PR c++/68357
3934         * cp-gimplify.c (cp_fold): If some operand folds to error_mark_node,
3935         return error_mark_node instead of building trees with error_mark_node
3936         operands.
3938 2016-01-26  David Malcolm  <dmalcolm@redhat.com>
3940         PR other/69006
3941         * error.c (print_instantiation_partial_context_line): Add missing
3942         newlines from output for the t == NULL case.
3943         (print_instantiation_partial_context): Remove call to pp_newline.
3945 2016-01-24  Patrick Palka  <ppalka@gcc.gnu.org>
3947         Revert:
3948         2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
3950         PR c++/11858
3951         PR c++/24663
3952         PR c++/24664
3953         * decl.c (grokdeclarator): Don't decay array parameter type to
3954         a pointer type if it's dependent.
3955         (grokparms): Invoke strip_top_quals instead of directly invoking
3956         cp_build_qualified_type.
3957         * pt.c (decay_dependent_array_parm_type): New static function.
3958         (type_unification_real): Call decay_dependent_array_parm_type
3959         to decay a dependent array parameter type to its corresponding
3960         pointer type before unification.
3961         (more_specialized_fn): Likewise.
3962         (get_bindings): Likewise.
3963         * tree.c (cp_build_qualified_type): Trivial typofix in
3964         documentation.
3966 2016-01-23  Martin Sebor  <msebor@redhat.com>
3968         PR c++/58109
3969         PR c++/69022
3970         * decl2.c (is_late_template_attribute): Handle dependent argument
3971         to attribute align and attribute vector_size.
3973 2016-01-21  Jason Merrill  <jason@redhat.com>
3975         PR c++/69392
3976         * lambda.c (lambda_capture_field_type): Handle 'this' specially
3977         for init-capture, too.
3979         PR c++/65687
3980         * decl.c (type_is_deprecated): Don't look into a typedef.
3982         PR c++/40751
3983         PR c++/64987
3984         * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN.
3986         PR c++/43407
3987         * decl.c (start_enum): Add attributes parameter.
3988         * parser.c (cp_parser_enum_specifier): Pass it.
3989         * pt.c (lookup_template_class_1): Pass it.
3990         * cp-tree.h: Adjust.
3992 2016-01-19  Jason Merrill  <jason@redhat.com>
3994         PR c++/59759
3995         * pt.c (convert_template_argument): Handle VAR_DECL properly.
3997 2016-01-19  Marek Polacek  <polacek@redhat.com>
3999         PR c++/68586
4000         * constexpr.c (clear_cv_cache): New.
4001         * cp-gimplify.c (clear_fold_cache): New.
4002         * cp-tree.h (clear_cv_cache, clear_fold_cache): Declare.
4003         * decl.c (finish_enum_value_list): Call them.
4005         PR c++/68965
4006         * pt.c (tsubst_copy): Mark elements in expanded vector as used.
4008 2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
4010         PR c++/11858
4011         PR c++/24663
4012         PR c++/24664
4013         * decl.c (grokdeclarator): Don't decay array parameter type to
4014         a pointer type if it's dependent.
4015         (grokparms): Invoke strip_top_quals instead of directly invoking
4016         cp_build_qualified_type.
4017         * pt.c (decay_dependent_array_parm_type): New static function.
4018         (type_unification_real): Call decay_dependent_array_parm_type
4019         to decay a dependent array parameter type to its corresponding
4020         pointer type before unification.
4021         (more_specialized_fn): Likewise.
4022         (get_bindings): Likewise.
4023         * tree.c (cp_build_qualified_type): Trivial typofix in
4024         documentation.
4026 2016-01-18  Jason Merrill  <jason@redhat.com>
4028         * cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input.
4030         * cp-gimplify.c (cp_fold): Remove unnecessary special cases.
4032         PR c++/68767
4033         * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify.  Do fold COND_EXPR.
4034         (contains_label_1, contains_label_p): Remove.
4036 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4038         PR c++/69091
4039         * pt.c (type_dependent_expression_p): For a function template
4040         specialization, a type is dependent iff any of its template
4041         arguments are.
4043 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4045         * cp-array-notation.c (cp_expand_cond_array_notations): Return
4046         error_mark_node only if find_rank failed, not if it was
4047         successful.
4049 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4051         PR c++/68936
4052         * tree.c (build_min_non_dep_call_vec): Don't retain the
4053         KOENIG_LOOKUP_P flag of the non-dependent expression that's
4054         been built.
4055         (build_min_non_dep_op_overload): Instead, do it here.
4057 2016-01-15  Jakub Jelinek  <jakub@redhat.com>
4059         PR bootstrap/68271
4060         * parser.h (cp_token): Remove pragma_kind field.  Add comment
4061         with number of unused bits.
4062         * parser.c (eof_token): Remove pragma_kind field initializer.
4063         (cp_lexer_get_preprocessor_token): Don't set pragma_kind
4064         field, don't clear CPP_PRAGMA u.value.
4065         (cp_parser_pragma_kind): New function.
4066         (cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel,
4067         cp_parser_omp_construct, cp_parser_initial_pragma,
4068         cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing
4069         pragma_kind field.
4071 2016-01-15  Jason Merrill  <jason@redhat.com>
4073         PR c++/68847
4074         * call.c (build_cxx_call): Use fold_non_dependent_expr.
4076         * typeck2.c (cxx_incomplete_type_diagnostic): Use the location of
4077         value.
4079         PR c++/69257
4080         * typeck.c (decay_conversion): Don't call mark_rvalue_use for
4081         array/function-to-pointer conversion.  Call
4082         complete_type_or_maybe_complain for lvalue-to-rvalue conversion.
4083         * call.c (convert_like_real): Print call context if
4084         decay_conversion errors.
4086 2016-01-14  Tom de Vries  <tom@codesourcery.com>
4088         PR tree-optimization/68773
4089         * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't
4090         set force_output.
4092 2016-01-14  Jason Merrill  <jason@redhat.com>
4094         PR c++/69261
4095         * constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR.
4097 2016-01-12  Marek Polacek  <polacek@redhat.com>
4099         PR c++/68979
4100         * constexpr.c (cxx_eval_check_shift_p): Use permerror rather than
4101         error_at and adjust the return value.
4103 2016-01-12  Jakub Jelinek  <jakub@redhat.com>
4105         PR objc++/68511
4106         PR c++/69213
4107         * cp-gimplify.c (cp_gimplify_expr) <case INIT_EXPR>: Don't return
4108         GS_ERROR whenever seen_error (), only if *expr_p contains
4109         cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed.
4111         PR c++/66808
4112         PR c++/69000
4113         * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO.
4115 2016-01-11  Jason Merrill  <jason@redhat.com>
4117         PR c++/69131
4118         * method.c (walk_field_subobs): Add dtor_from_ctor parm.
4119         (process_subob_fn): Likewise.  Don't consider triviality if true.
4120         (synthesize_method_walk): Pass it.
4122 2016-01-11  David Malcolm  <dmalcolm@redhat.com>
4124         PR c++/68795
4125         * parser.c (cp_parser_postfix_expression): Initialize
4126         close_paren_loc to UNKNOWN_LOCATION; only use it if
4127         it has been written to by
4128         cp_parser_parenthesized_expression_list.
4129         (cp_parser_parenthesized_expression_list): Document the behavior
4130         with respect to the CLOSE_PAREN_LOC param.
4132 2016-01-11  Jakub Jelinek  <jakub@redhat.com>
4134         PR c++/69211
4135         * cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR
4136         folded operands have side-effects, but folding changed any of them,
4137         build a new tree with the folded operands instead of returning the
4138         unfolded tree.
4140 2016-01-09  Marek Polacek  <polacek@redhat.com>
4142         PR c++/69113
4143         * decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set.
4145 2016-01-09  Jakub Jelinek  <jakub@redhat.com>
4147         PR c++/69164
4148         * class.c (layout_class_type): Use copy_node to copy FIELD_DECLs.
4150 2016-01-08  Jason Merrill  <jason@redhat.com>
4152         PR c++/69158
4153         * constexpr.c (cxx_fold_indirect_ref): Handle array type differing
4154         in completion.
4156 2016-01-08  Marek Polacek  <polacek@redhat.com>
4158         PR c++/68449
4159         * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer.
4161 2016-01-08  Jason Merrill  <jason@redhat.com>
4163         * constexpr.c (cxx_eval_call_expression): Remove convert_to_void
4164         workaround.
4166         PR c++/68983
4167         PR c++/67557
4168         * cvt.c (convert_to_void): Don't strip a TARGET_EXPR of
4169         TREE_ADDRESSABLE type.
4171         PR c++/68983
4172         PR c++/67557
4173         * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR.
4175 2016-01-05  Nathan Sidwell  <nathan@acm.org>
4177         PR c++/58583
4178         * pt.c (build_non_dependent_expr): Don't try a checking fold when
4179         parsing an nsdmi.
4181 2016-01-04  Jakub Jelinek  <jakub@redhat.com>
4183         Update copyright years.
4185 Copyright (C) 2016 Free Software Foundation, Inc.
4187 Copying and distribution of this file, with or without modification,
4188 are permitted in any medium without royalty provided the copyright
4189 notice and this notice are preserved.