Implement P0138R2, C++17 construction rules for enum class values
[official-gcc.git] / gcc / cp / ChangeLog
bloba3430bf3ad50531cdb8aee2ecb6a752e19af117c
1 2016-09-23  Jakub Jelinek  <jakub@redhat.com>
3         Implement P0138R2, C++17 construction rules for enum class values
4         * cp-tree.h (is_direct_enum_init): Declare.
5         * decl.c (is_direct_enum_init): New function.
6         (reshape_init): Use it.
7         * typeck.c (convert_for_assignment): Likewise.
9         * Make-lang.in (check-c++1z): Pass RUNTESTFLAGS down to
10         make check-g++.
12         * constexpr.c (call_stack): Remove unnecessary
13         = vNULL initialization of file scope vec.
15         * name-lookup.c (store_bindings, store_class_bindings): Don't
16         initialize static local bindings_need_stored to vNULL.
18         * typeck2.c (process_init_constructor_record): Use
19         CONSTRUCTOR_NELTS (...) instead of
20         vec_safe_length (CONSTRUCTOR_ELTS (...)).
21         * decl.c (reshape_init_r): Likewise.
22         (check_initializer): Likewise.
24 2016-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
26         PR c++/71979
27         * class.c (build_base_path): Allow for lookup_base returning
28         NULL_TREE.
30 2016-09-21  Jason Merrill  <jason@redhat.com>
32         Core 903
33         * call.c (null_ptr_cst_p): Check char_type_p.
35 2016-09-21  Jakub Jelinek  <jakub@redhat.com>
37         PR c++/77651
38         * init.c (build_new_1): Don't suggest to use -faligned-new if
39         aligned_new_threshold is non-zero.
40         (type_has_new_extended_alignment): Change aligned_new_threshhold
41         to aligned_new_threshold.
42         * call.c (second_parm_is_size_t, aligned_allocation_fn_p,
43         aligned_deallocation_fn_p, build_op_delete_call): Likewise.
44         * decl.c (cxx_init_decl_processing): Likewise.
46 2016-09-20  Jakub Jelinek  <jakub@redhat.com>
48         PR c++/77626
49         * constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on
50         FIELD_DECLs with error_mark_node type.  Remove useless break; after
51         return.
53         PR c++/77638
54         * parser.c (cp_parser_template_declaration_after_parameter): For 2
55         argument operator"" template set ok to false for
56         parm == error_mark_node.
58         PR c++/77637
59         * parser.c (cp_parser_std_attribute_list): Reject ... without
60         preceding attribute.
62 2016-09-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
64         PR c++/77434
65         * cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here.
67 2016-09-16  Patrick Palka  <ppalka@gcc.gnu.org>
69         PR c++/77639
70         * parser.c (cp_parser_class_head): When
71         processing_template_parmlist, don't assume that the
72         class-head may start an explicit specialization.
74 2016-09-16  Jakub Jelinek  <jakub@redhat.com>
76         PR c++/77482
77         * error.c (dump_simple_decl): Only check DECL_DECLARED_CONCEPT_P
78         if DECL_LANG_SPECIFIC is non-NULL.  Fix up formatting.
80         PR c++/77338
81         * constexpr.c (cxx_eval_constant_expression) <case PARM_DECL>: Only
82         call is_really_empty_class on complete types.
84         PR c++/77375
85         * class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any
86         TYPE_HAS_MUTABLE_P for any bases.
88 2016-09-16  Jason Merrill  <jason@redhat.com>
90         * class.c (check_bases, set_one_vmethod_tm_attributes): Use
91         least_bit_hwi.
92         * decl.c (cxx_init_decl_processing): Use pow2p_hwi.
93         * parser.c (cp_parser_cilk_simd_vectorlength): Use pow2p_hwi.
95 2016-09-14  Jakub Jelinek  <jakub@redhat.com>
97         PR c++/77549
98         * name-lookup.c (consider_binding_level): Look through TREE_LIST
99         and OVERLOAD.
101 2016-09-14  Marek Polacek  <polacek@redhat.com>
103         * typeck.c (cp_build_unary_op): Diagnose incrementing boolean
104         expressions.  Tweak an error message.
106 2016-09-14  Marek Polacek  <polacek@redhat.com>
108         * cp-tree.h (cp_build_unary_op): Change nonconvert parameter type to
109         bool.
110         * decl2.c (one_static_initialization_or_destruction): Use true instead
111         of 1.
112         * init.c (build_vec_init): Use false instead of 0.
113         * pt.c (tsubst_copy_and_build): Likewise.
114         * semantics.c (simplify_loop_decl_cond): Likewise.
115         * typeck.c (rationalize_conditional_expr): Likewise.
116         (cp_build_binary_op): Use true instead of 1.
117         (cp_build_unary_op): Change nonconvert parameter type to bool.  Use true
118         instead of 1.
119         (build_unary_op): Change nonconvert parameter type to bool.
120         (unary_complex_lvalue): Use false instead of 0.
122 2016-09-13  Jakub Jelinek  <jakub@redhat.com>
124         Implement P0028R4, C++17 using attribute namespaces without repetition
125         * parser.c (cp_parser_std_attribute): Add ATTR_NS argument.  Diagnose
126         non-NULL ATTR_NS with scoped attribute token.  Handle non-NULL
127         ATTR_NS with non-scoped attribute tokens.  Allow named ops in
128         identifier after ::.
129         (cp_parser_std_attribute_list): Add ATTR_NS argument, pass it down
130         to cp_parser_std_attribute calls.
131         (cp_parser_std_attribute_spec): Parse optional C++17
132         attribute-using-prefix, adjust grammar in function comment.
134         PR c++/77553
135         * constexpr.c (cxx_fold_pointer_plus_expression): New function.
136         (cxx_eval_binary_expression): Use it for POINTER_PLUS_EXPR.
137         (cxx_eval_pointer_plus_expression): Remove.
138         (cxx_eval_constant_expression) <case POINTER_PLUS_EXPR>: Don't
139         call cxx_eval_pointer_plus_expression.
141 2016-09-13  David Malcolm  <dmalcolm@redhat.com>
143         * parser.c (cp_parser_class_specifier_1): Update for renaming of
144         add_fixit_insert to add_fixit_insert_before.
145         (cp_parser_class_head): Likewise.
147 2016-09-12  Bernd Edlinger  <bernd.edlinger@hotmail.de>
149         PR c++/77496
150         * call.c (build_conditional_expr_1): Call warn_for_omitted_condop.
151         * class.c (instantiate_type): Look through the SAVE_EXPR.
153 2016-09-09  Jason Merrill  <jason@redhat.com>
155         Implement P0035R4, C++17 new of over-aligned types.
156         * cp-tree.h (enum cp_tree_index): Add CPTI_ALIGN_TYPE.
157         (align_type_node): New macro.
158         * call.c (build_operator_new_call): Handle C++17 aligned new.
159         (second_parm_is_size_t, build_op_delete_call): Likewise.
160         (non_placement_deallocation_fn_p): Likewise. Rename to
161         usual_deallocation_fn_p.
162         (aligned_allocation_fn_p, aligned_deallocation_fn_p): New.
163         * decl.c (cxx_init_decl_processing): Add aligned new support.
164         * init.c (type_has_new_extended_alignment): New.
165         (build_new_1): Handle aligned new.
166         * tree.c (vec_copy_and_insert): New.
168 2016-09-02  Jakub Jelinek  <jakub@redhat.com>
170         PR sanitizer/77396
171         * decl2.c (do_static_initialization_or_destruction): Only
172         call asan_dynamic_init_call if INITP is true.
174 2016-09-01  Martin Sebor  <msebor@redhat.com>
176         * mangle.c: Increase buffer size to guarantee it fits the output
177         of the formatted function regardless of its arguments.
179 2016-09-01  Marek Polacek  <polacek@redhat.com>
181         PR c/7652
182         * error.c (dump_type): Fix falls through comment.
183         (dump_decl): Likewise.
184         (dump_expr): Likewise.
186 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
188         * parser.c (cp_parser_enclosed_template_argument_list): Add fix-it
189         hint to ">>" within nested template argument list error.
191 2016-08-30  David Malcolm  <dmalcolm@redhat.com>
193         * name-lookup.c (suggest_alternatives_for): Use add_fixit_replace
194         rather than add_fixit_misspelled_id.
195         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
197 2016-08-29  Jason Merrill  <jason@redhat.com>
199         PR c++/77379
200         * mangle.c (maybe_check_abi_tags): Add version parm, handle thunks.
201         (mangle_thunk): Add thunk parameter.
202         * method.c (finish_thunk): Pass it.
203         * cp-tree.h: Declare it.
205 2016-08-15  Jason Merrill  <jason@redhat.com>
207         Avoid calling a trivial default constructor.
208         * class.c (default_ctor_p): New.
209         (in_class_defaulted_default_constructor): Use it.
210         (type_has_non_user_provided_default_constructor): Use it.
211         * call.c (build_over_call): Handle trivial default constructor.
212         * cp-tree.h: Declare default_ctor_p.
214         PR c++/57728
215         * pt.c (do_type_instantiation): Don't mess with non-user-provided
216         member functions.
218 2016-08-25  Marek Polacek  <polacek@redhat.com>
220         * parser.c (cp_parser_binary_expression): Pass LHS to
221         warn_logical_not_parentheses.
223 2016-08-18  Marek Polacek  <polacek@redhat.com>
225         PR c/7652
226         * call.c (add_builtin_candidate): Add gcc_fallthrough.
227         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
228         * parser.c (cp_parser_skip_to_end_of_statement): Likewise.
229         (cp_parser_cache_defarg): Likewise.
231 2016-08-12  Marek Polacek  <polacek@redhat.com>
233         PR c/7652
234         * call.c (add_builtin_candidate): Add FALLTHRU.
235         (build_integral_nontype_arg_conv): Adjust fall through comment.
236         (build_new_op_1): Add FALLTHRU.
237         (convert_like_real): Adjust fall through comment.
238         * class.c (fixed_type_or_null): Likewise.
239         * constexpr.c (cxx_eval_constant_expression): Likewise.
240         (potential_constant_expression_1): Likewise.  Add FALLTHRU.
241         * cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment.
242         (cp_fold): Add FALLTHRU.
243         * cvt.c (build_expr_type_conversion): Adjust fall through comment.
244         * cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU.
245         (pp_cxx_qualified_id): Likewise.
246         (cxx_pretty_printer::constant): Adjust fall through comment.
247         (cxx_pretty_printer::primary_expression): Add FALLTHRU.
248         (pp_cxx_pm_expression): Adjust fall through comment.
249         (cxx_pretty_printer::expression): Add FALLTHRU.
250         (cxx_pretty_printer::declaration_specifiers): Reformat code.
251         (pp_cxx_type_specifier_seq): Adjust fall through comment.
252         (pp_cxx_ptr_operator): Likewise.  Add FALLTHRU.
253         * error.c (dump_type): Adjust fall through comment.
254         (dump_decl): Likewise.
255         * mangle.c (write_type): Likewise.
256         * method.c (synthesized_method_walk): Add FALLTHRU.
257         * name-lookup.c (arg_assoc_type): Likewise.
258         * parser.c (cp_lexer_print_token): Adjust fall through comment.
259         (cp_parser_primary_expression): Add FALLTHRU.
260         (cp_parser_operator): Likewise.
261         * pt.c (find_parameter_packs_r): Likewise.
262         (tsubst_aggr_type): Adjust fall through comment.
263         * semantics.c (finish_omp_clauses): Add FALLTHRU.
264         * tree.c (lvalue_kind): Likewise.
266 2016-08-12  Alexandre Oliva  <aoliva@redhat.com>
268         PR debug/63240
269         * cp-objcp-common.c (cp_function_decl_defaulted): New.
270         (cp_function_decl_explicit_p): Const_tree-ify.
271         (cp_function_decl_deleted_p): Likewise.
272         * cp-objcp-common.h (cp_function_decl_defaulted): Declare.
273         (cp_function_decl_explicit_p): Const_tree-ify.
274         (cp_function_decl_deleted_p): Likewise.
275         (LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine.
277 2016-08-11  Jakub Jelinek  <jakub@redhat.com>
279         PR c++/72868
280         * constexpr.c (label_matches): Handle case range expressions.
282 2016-08-11  Jason Merrill  <jason@redhat.com>
284         PR c++/73456
285         * logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION.
287 2016-08-10  Jason Merrill  <jason@redhat.com>
289         Implement C++17 constexpr if.
290         * cp-tree.h (IF_STMT_CONSTEXPR_P): New.
291         * name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it.
292         * parser.h (struct cp_parser): Add in_discarded_stmt field.
293         * parser.c (cp_parser_selection_statement): Handle 'if constexpr'.
294         (cp_parser_jump_statement): Avoid deducing from a discarded return.
295         * pt.c (tsubst_expr): Only instantiate taken branch of constexpr if.
296         * semantics.c (begin_if_stmt): Set the binding level this_entity.
297         (finish_if_stmt_cond): Require the condition of a
298         constexpr if to be constant.
299         * decl.c (level_for_constexpr_if): New.
300         (named_label_entry): Add in_constexpr_if field.
301         (poplevel_named_label_1): Set it.
302         (check_goto): Check it.
303         (check_previous_goto_1): Check level_for_constexpr_if.
305 2016-08-09  Jason Merrill  <jason@redhat.com>
307         PR c++/68703
308         * decl2.c (any_dependent_type_attributes_p): New.
309         * pt.c (dependent_type_p_r, type_dependent_expression_p): Check it.
310         * semantics.c (finish_id_expression): Check it.
311         * typeck.c (finish_class_member_access_expr): Check it.
313         PR c++/71712
314         * class.c (check_abi_tags): Don't duplicate tags for conversion ops.
316         Adjust mangling of ABI tags on class template member functions.
317         * class.c (missing_abi_tags): New.
318         (check_abi_tags): Don't check template. Add just_checking mode.
319         * mangle.c (abi_flag_at_least, any_abi_below, equal_abi_tags): New.
320         (sorted_abi_tags): Split out from write_abi_tags.
321         (struct releasing_vec): New.
322         (write_unqualified_name): Only look for the primary
323         template for types.  Implement backward compatibility.
325         PR c++/72849
326         * constexpr.c (cxx_eval_constant_expression): Check
327         COMPLETE_TYPE_P before calling is_really_empty_class.
328         * class.c (is_really_empty_class): Don't call complete_type.
330         PR c++/56701
331         * typeck.c (cp_build_addr_expr_1): Remove special *this handling.
333 2016-08-09  Jakub Jelinek  <jakub@redhat.com>
335         PR c++/72809
336         * rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for
337         builtin aggregate types without TYPE_BINFO.
339 2016-08-08  Jason Merrill  <jason@redhat.com>
341         Implement C++17 constexpr lambda.
342         * class.c (finalize_literal_type_property): Handle lambdas.
343         * constexpr.c (is_valid_constexpr_fn): Likewise.  No longer static.
344         (explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle
345         lambdas.
346         (cxx_eval_constant_expression): Handle capture proxy.
347         (var_in_constexpr_fn): Don't check for C++14.
348         (var_in_maybe_constexpr_fn): New.
349         (potential_constant_expression_1): Use it.  Check DECL_EXPR for
350         declarations not allowed in constexpr function.  Handle
351         STATIC_ASSERT, RANGE_FOR_STMT.
352         * decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn.
353         (finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members.
354         * lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P.
355         (maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location.
356         (lambda_static_thunk_p): New.
357         * parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR.
358         (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator.
359         (cp_parser_decl_specifier_seq): Handle it.
360         (cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq.
361         * pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P.
362         (tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P.
363         * error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS.
364         (dump_expr) [FUNCTION_DECL]: Pass it.
366 2016-08-08  Jason Merrill  <jason@redhat.com>
368         PR c++/67131
369         * class.c (is_really_empty_class): Call complete_type.
370         * constexpr.c (cxx_eval_constant_expression): Check
371         is_really_empty_class.
372         (potential_constant_expression_1): Likewise.  Check for error type.
374 2016-08-08  Jakub Jelinek  <jakub@redhat.com>
376         PR c++/58706
377         * parser.c: Include tree-iterator.h.
378         (cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init
379         to FOR_BLOCK.
380         (cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK
381         entries.
383 2016-08-06  Jonathan Wakely  <jwakely@redhat.com>
385         * call.c (convert_like_real): Harmonize diagnostics for invalid
386         reference binding.
388 2016-08-05  Martin Sebor  <msebor@redhat.com>
390         * constexpr.c (cxx_eval_store_expression): Remove hyphen from
391         the spelling of "constant-expression" in diagnostic messages
392         for consistency.
393         (cxx_eval_constant_expression): Same.
394         (cxx_eval_outermost_constant_expr): Same.
395         (potential_constant_expression_1): Same.
397 2016-08-05  Nathan Sidwell  <nathan@acm.org>
399         PR c++/68724
400         * pt.c (unify): TRAIT_EXPR is an expr.
402 2016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
404         PR c++/72800
405         * lambda.c (add_capture): Check lambda_capture_field_type return
406         value for error_mark_node.
408 2016-08-04  Patrick Palka  <ppalka@gcc.gnu.org>
410         PR c++/72759
411         * pt.c (tsubst_qualified_id): Return error_mark_node if
412         template_args is error_mark_node.
414 2016-08-04  Jason Merrill  <jason@redhat.com>
416         PR c++/72415
417         * pt.c (tsubst_pack_expansion): Pull a single pack expansion out
418         of the TREE_VEC.
420         * cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P.
421         (TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS.
422         * class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c,
423         name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust.
425         PR c++/72796
426         * typeck.c (finish_class_member_access_expr): Avoid stripping
427         SCOPE_REF to dependent base.
429 2016-08-04  Thomas Schwinge  <thomas@codesourcery.com>
431         * parser.c (cp_ensure_no_oacc_routine): Improve diagnostics.
432         (cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics.
433         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
434         Simplify code, and improve diagnostics.
435         (cp_parser_oacc_routine): Likewise.  Move pragma context
436         checking...
437         (cp_parser_pragma): ... here.
439         * parser.h (struct cp_omp_declare_simd_data): New.
440         (struct cp_parser): Use it for oacc_routine member.
441         * parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine)
442         (cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
443         Use it.  Simplify code.
444         (cp_parser_new): Initialize all members pointing to special
445         parsing data structures.
446         (cp_parser_cilk_simd_fn_vector_attrs): Initialize
447         parser->cilk_simd_fn_info->clauses.
448         (cp_parser_omp_declare_simd): Initialize
449         parser->omp_declare_simd->clauses.
450         (cp_parser_late_parsing_omp_declare_simd): Simplify code.
452 2016-08-04  Marek Polacek  <polacek@redhat.com>
454         PR c++/70229
455         * constexpr.c (check_constexpr_ctor_body_1): Allow typedef
456         declarations.
458 2016-08-01  Jason Merrill  <jason@redhat.com>
460         * mangle.c (mangle_decl): Warn about mangled name change even if
461         DECL_REALLY_EXTERN.
463         * mangle.c (get_abi_tags): New.
464         (find_substitution, write_unqualified_name, write_abi_tags)
465         (maybe_check_abi_tags): Use it.
467         * mangle.c (mangle_decl): Fix mangled name change warning.
469         PR c++/72766
470         * constexpr.c (cxx_eval_pointer_plus_expression): Check constancy
471         of nelts.
472         * cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in
473         C++11 and up.
475 2016-07-30  Martin Sebor  <msebor@redhat.com>
477         PR c++/60760
478         PR c++/71091
479         * constexpr.c (cxx_eval_binary_expression): Reject invalid expressions
480         involving null pointers.
481         (cxx_eval_component_reference): Reject null pointer dereferences.
482         (cxx_eval_indirect_ref): Reject indirecting through null pointers.
483         (cxx_eval_constant_expression): Reject invalid expressions involving
484         null pointers.
486 2016-07-29  Marek Polacek  <polacek@redhat.com>
488         PR c/71926
489         * semantics.c (maybe_convert_cond): Use the location of COND for the
490         parentheses warning.
492 2016-07-29  Jason Merrill  <jason@redhat.com>
494         * decl.c (build_enumerator): Tweak diagnostic.
496         PR c++/72457
497         * init.c (expand_aggr_init_1): Only handle value-init of bases.
498         * constexpr.c (build_data_member_initialization): Handle multiple
499         initializers for the same field.
501 2016-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
503         PR c++/71665
504         * decl.c (build_enumerator): Check the type of the enumerator before
505         calling cxx_constant_value.
507 2016-07-27  Jason Merrill  <jason@redhat.com>
509         PR c++/71747
510         * pt.c (get_partial_spec_bindings): Replace tparms and spec_args
511         parameters with spec_tmpl.  Call push_tinst_level.
512         (most_specialized_partial_spec): Adjust.
513         (more_specialized_partial_spec): Adjust.
515 2016-07-25  Jason Merrill  <jason@redhat.com>
517         PR c++/65970
518         * cp-gimplify.c (genericize_cp_loop): Revert location change.
520         PR c++/71837
521         * lambda.c (add_capture): Leave a pack expansion in a TREE_LIST.
522         (build_lambda_object): Call build_x_compound_expr_from_list.
523         * pt.c (tsubst) [DECLTYPE_TYPE]: Likewise.
525         PR c++/71833
526         PR c++/54440
527         * pt.c (coerce_template_parameter_pack): Fix logic for
528         pack index.
530         PR c++/65970
531         * constexpr.c (cxx_eval_loop_expr): Count iterations.
532         * cp-gimplify.c (genericize_cp_loop): Use start_locus even for
533         infinite loops.
535         PR c++/71972
536         * constexpr.c (cxx_eval_array_reference): Handle looking for the
537         value of an element we're currently modifying.
539 2016-07-24  Jason Merrill  <jason@redhat.com>
541         PR c++/71515
542         * pt.c (resolve_typename_type): Try to avoid calling
543         currently_open_class.
545 2016-07-23  Jason Merrill  <jason@redhat.com>
547         PR c++/66617
548         * call.c (add_list_candidates): Handle VTT parm.
549         (build_new_method_call_1): Likewise.
551         PR c++/55922
552         PR c++/63151
553         * init.c (expand_aggr_init_1): Handle list-initialization from {}.
555         PR c++/70709
556         * class.c (walk_subobject_offsets): Handle 0-length array.
558         PR c++/70778
559         * pt.c (tsubst): Also substitute into the template of a
560         BOUND_TEMPLATE_TEMPLATE_PARM.
562         PR c++/71738
563         * pt.c (lookup_template_class_1): Handle getting template from tsubst.
565         PR c++/71350
566         * decl.c (reshape_init_r): Check complain for missing braces warning.
568 2016-07-22  Jason Merrill  <jason@redhat.com>
570         PR c++/71576
571         * call.c (convert_like_real): Use lvalue_kind.
573         PR c++/71748
574         PR c++/52746
575         * pt.c (tsubst_baselink): Call
576         adjust_result_of_qualified_name_lookup for unqualified
577         destructors.
579 2016-07-21  Jason Merrill  <jason@redhat.com>
581         PR c++/69223
582         * semantics.c (apply_deduced_return_type): Call
583         complete_type_or_else before building the new RESULT_DECL.
585         PR c++/71274
586         * decl2.c (maybe_instantiate_decl): Split out from mark_used.
587         (decl_constant_var_p): Use it instead.
589         PR c++/71630
590         * pt.c (instantiate_decl): Fix pattern_defined for namespace scope
591         variable templates.
593         PR c++/71913
594         * call.c (unsafe_copy_elision_p): It's OK to elide when
595         initializing an unknown object.
597         * call.c (build_over_call): Check unsafe_copy_elision_p even for
598         trivial constructors.
599         * method.c (do_build_copy_constructor): Don't copy tail padding
600         even in a trivial constructor.
602 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
604         PR c++/71728
605         * constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>:
606         Replace assert with test, return false if the goto isn't break
607         or continue.  Formatting fix.
609 2016-07-21  Richard Biener  <rguenther@suse.de>
611         * vtable-class-hierarchy.c (vtv_generate_init_routine): Set
612         DECL_IGNORED_P.
614 2016-07-21  Jakub Jelinek  <jakub@redhat.com>
616         PR c++/71941
617         * cp-gimplify.c (cp_genericize): For nested cp_genericize calls
618         save/restore bc_label array.
620 2016-07-21  Jason Merrill  <jason@redhat.com>
622         PR c++/70781
623         * parser.c (cp_parser_lambda_expression): Unset OK if there was an
624         error parsing the lambda-declarator.
626         PR c++/71896
627         * constexpr.c (cxx_eval_binary_expression): Handle comparison
628         between lowered and unlowered PTRMEM_CST.
630         PR c++/65168
631         * typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr.
632         Don't set c_inhibit_evaluation_warnings.
634         PR c++/71121
635         * cp-gimplify.c (cp_fully_fold): First call maybe_constant_value.
637 2016-07-21  Andrew Sutton  <andrew.n.sutton@gmail.com>
638             Jason Merrill  <jason@redhat.com>
640         Improving concepts performance and diagnostics.
641         PR c++/67565
642         PR c++/67579
643         PR c++/71843
644         * cp-tree.def (CHECK_CONSTR): New.
645         * cp-tree.h (CHECK_CONSTR_CONCEPT): New.
646         (CHECK_CONSTR_ARGS): New.
647         * constraint.cc (make_predicate_constraint): Remove in favor of
648         normalize_expression.
649         (resolve_constraint_check): Actually return error_mark_node when
650         resolution fails.
651         (resolve_variable_concept_check): Perform coercion as if processing
652         a template. Also return errors on resolution failure.
653         (lift_*): Remove all of these functions. Don't unnecessarily inline
654         concepts.
655         (learn_*): Add facilities to memoize implications for subsumption
656         during normalization.
657         (expanding_concept): New.
658         (expand_concept): New. Return the inlined and normalized definition
659         of a concept when needed.
660         (transform_*, xform_*): Rename to normalize_* to better reflect the
661         responsibility of those functions.
662         (normalize_template_id_expression): Check for non-boolean operands
663         when possible. Generate check constraints instead of normal variable
664         references.
665         (normalize_call_expression): Report errors when resolution fails.
666         (check_for_logical_overloads): Rewrite this check to more accurately
667         report the error.
668         (normalize_atom): Check for overloaded calls and invalid types before
669         determining if the expression refers to a concept.
670         (build_constraints): Don't cache normalized constraints or decomposed
671         assumptions.
672         (finish_shorthand_constraint): Return a normalized expression instead
673         of a predicate constraint.
674         (finish_template_introduction): Same.
675         (placeholder_extract_concept_and_args): Rewrite this since we only
676         ever get check constraints here.
677         (equivalent_placeholder_constraints): Rewrite in terms of check
678         constraints, and handle error_mark_nodes correctly.
679         (tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr)
680         (tsubst_implicit_conversion_constr)
681         (tsubst_argument_deduction_constr, tsubst_exception_constr)
682         (tsubst_parameterized_constraint, tsubst_constraint): New.
683         (tsbust_conjunection): Replace with tsubst_logical_operator and
684         actually generate the right kind of constraint.
685         (tsubst_requirement_body): Reverse the order of substituted arguments
686         so that they appear in the order written (helps diagnostics).
687         (satisfy_check_constraint): New.
688         (satisfy_conjunction): Simplify.
689         (satisfy_disjunction): Same.
690         (satisfy_constraint_1): Handle check constraints.
691         (eval_constr): New (private) global state.
692         (evaluating_constraints_sentinel): New. Manages eval_constr.
693         (satisfy_constraint): Add timing variables.
694         (satisfy_associated_constraints): Add hooks for memoization.
695         (evaluate_function_concept): Build a check constraint instead of
696         normalizing its definition.
697         (evaluate_variable_concept): Same.
698         (evaluate_constraint_expression): Normalize, but in the current
699         declaration processing context.
700         (evaluating_constraints_p): New.
701         (elide_constraint_failure_p): Actually emit constraint_thresh errors.
702         (diagnose_*): Remove artificial indentation. Add a new parameter to
703         each that tracks the current (complete) constraint prior to any
704         substitutions.
705         (diagnose_expression): Removed.
706         (diagnose_call_expression): Same.
707         (diagnose_template_id): Same.
708         (diagnose_template_id): New.
709         (diagnose_logical_constraint): New.
710         (diagnose_expression_constraint): Show the original expression.
711         (diagnose_type_constraint): Show the original type.
712         (diagnose_implicit_conversion_constraint): Be specific about
713         failures, don't re-diagnose a known-to-be-failed substitutions,
714         and manage elisions properly.
715         (diagnose_argument_deduction_constraint): Same.
716         (diagnose_exception_constraint): Same.
717         (diagnose_parameterized_constraint): Same.
718         (constraint_p): Allow EXPR_PACK_EXPANSION.
719         * logic.cc (next_by_distance): Removed. No longer used.
720         (any_p): Renamed from any_of.
721         (term_entry, term_hasher): New.
722         (term_list): Rewrite to include a hash table for quick lookup.
723         Also, make less stateful.
724         (proof_state): Extend to allow goals to be discharged once
725         satisfied.
726         (non_atomic_constraint_p): New.
727         (any_non_atomic_constraints_p): New.
728         (...rest...): Previous implementation completely replaced with an
729         iterative algorithm that opportunistically prunes the search space
730         before committing to using more memory.
731         * parser.c: (cp_parser_type_parameter): Normalize constraints.
732         (cp_parser_explicit_template_declaration): Same.
733         * pt.c: (finish_template_variable): Be less redundant with this error
734         message.
735         (template_args_equal): No longer static.
736         (tsubst_decl): Don't try to find specializations of variables that
737         have already been instantiated.
738         (build_non_dependent_expr): Avoid infinite recursion during concept
739         expansion.
740         (make_constrained_auto): Normalize constraints.
741         (do_auto_deduction): When doing auto deduction from a
742         partial-concept-id, be sure to include the explicit args checking
743         the constraints.
744         (constraint_sat_*): New. Memoize satisfied constraints.
745         (concept_spec_*): New. Memoize expressions associated with a concept
746         specialization.
747         (constraint_memos, concept_memos): New.
748         (lookup_constraint_satisfaction, memoize_constraint_satisfaction): New.
749         (lookup_concept_satisfaction, memoize_concept_satisfaction): New.
750         (get_concept_expansion, save_concept_expansion): New.
751         (hash_subsumption_args): New.
752         (comp_subsumption_args): New.
753         (subsumption_*): New. Memoize parts of the subsumption relation.
754         (lookup_subsumption_result, save_subsumption_result): New.
755         (init_constraint_processing): Initialize memo tables.
756         (get_constraints): Shortcut if !flag_concepts.
757         * decl.c (grokfndecl): Normalize constraints.
758         * error.c (dump_simple_decl): Print "concept" when appropriate.
759         (dump_function_decl): Same.
760         (dump_template_decl): Don't write requirements when we're not
761         printing the header.
762         (dump_expr): Handle fold expressions.
763         * cxx-pretty-print.c (cxx_pretty_printer::expression): Handle
764         fold expressions.
765         (get_fold_operator): New.
766         (pp_cxx_unary_left_fold_expression): New.
767         (pp_cxx_unary_right_fold_expression): New.
768         (pp_cxx_binary_fold_expression): New.
769         (pp_cxx_check_constraint): New.
770         (pp_cxx_*_constraint): Rewrite the grammar of internal constraints
771         to make them easier to read when debugging.
772         * search.c (accessible_p): Don't shortcut when evaluating constraints.
773         * tree.c (cp_tree_equal): Handle CHECK_CONSTR.
775 2016-07-20  David Malcolm  <dmalcolm@redhat.com>
777         PR c/70339
778         PR c/71858
779         * name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h,
780         and parser.h.
781         (suggest_alternatives_for): If no candidates are found, try
782         lookup_name_fuzzy and report if if finds a suggestion.
783         (consider_binding_level): New function.
784         (lookup_name_fuzzy) New function.
785         * parser.c: Include gcc-rich-location.h.
786         (cp_lexer_next_token_is_decl_specifier_keyword): Move most of
787         logic into...
788         (cp_keyword_starts_decl_specifier_p): ...this new function.
789         (cp_parser_diagnose_invalid_type_name): When issuing
790         "does not name a type" errors, attempt to make a suggestion using
791         lookup_name_fuzzy.
792         * parser.h (cp_keyword_starts_decl_specifier_p): New prototype.
793         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject
794         types that are not CLASS_TYPE_P, rather than rejecting individual
795         tree codes.
797 2016-07-20  Jakub Jelinek  <jakub@redhat.com>
799         PR c++/71909
800         * parser.c (cp_parser_save_member_function_body): Consume
801         __transaction_relaxed or __transaction_atomic with optional
802         attribute.  Only skip catch with block if try keyword is seen.
804         PR c++/50060
805         * constexpr.c (cxx_eval_builtin_function_call): Pass false as lval
806         when evaluating call arguments.  Use fold_builtin_call_array instead
807         of fold_build_call_array_loc, return t if it returns NULL.  Otherwise
808         check the result with potential_constant_expression and call
809         cxx_eval_constant_expression on it.
811 2016-07-19  Jason Merrill  <jason@redhat.com>
813         PR c++/67164
814         * pt.c (iterative_hash_template_arg, template_args_equal): Don't
815         handle ARGUMENT_PACK_SELECT.
817 2016-07-18  Jakub Jelinek  <jakub@redhat.com>
819         PR c++/70869
820         PR c++/71054
821         * cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change.
822         * tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL
823         non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and
824         DECL_SIZE_UNIT.
826         PR c++/71835
827         * call.c (build_op_call_1): Use convert_like_with_context only
828         if cand->fn is a decl.
830         PR c++/71828
831         * constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
832         For lval don't use cxx_eval_unary_expression and instead recurse
833         and if needed rebuild the reference.
835         PR c++/71826
836         * pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.
838         PR c++/71822
839         * cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively
840         fold *expr_p before genericizing it.
842         PR c++/71871
843         * typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change.
845 2016-07-15  Jason Merrill  <jason@redhat.com>
847         PR c++/71495
848         * call.c (convert_like_real): Mask complain.
849         * semantics.c (perform_koenig_lookup): Likewise.
851         PR c++/71092
852         * constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph
853         threw away DECL_SAVED_TREE.
855         PR c++/71117
856         Core 2189
857         * call.c (add_template_conv_candidate): Disable if there are
858         viable candidates.
860         PR c++/71511
861         * typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE.
863         PR c++/71513
864         * pt.c (tsubst_attributes): Fix loop logic.
866         PR c++/71604
867         PR c++/54430
868         * parser.c (cp_parser_range_for): Modify IDENTIFIER_BINDING directly.
869         (cp_parser_simple_declaration): Diagnose type definition in
870         for-range-declaration.
872         PR c++/71711
873         * operators.def: Add *_FOLD_EXPR.
874         * cp-tree.h (FOLD_EXPR_P): Parenthesize.
875         * mangle.c (write_expression): Handle fold-expressions.
876         * pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold)
877         (tsubst_unary_right_fold, tsubst_binary_right_fold): Handle
878         partial instantiation.
880         PR c++/71814
881         * mangle.c (write_expression): Handle sizeof... an argument pack.
883         PR c++/71718
884         * pt.c (push_tinst_level_loc): Set at_eof before fatal_error.
886         PR c++/70824
887         * init.c (constant_value_1): Don't instantiated DECL_INITIAL of
888         artificial variables.
890 2016-07-15  Cesar Philippidis  <cesar@codesourcery.com>
892         * parser.c (cp_parser_oacc_declare): Don't scan for
893         GOMP_MAP_POINTER.
894         * semantics.c (handle_omp_array_sections): Mark data clauses with
895         GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having
896         zero-length subarrays.
898 2016-07-11  Jason Merrill  <jason@redhat.com>
900         * decl.c (store_parm_decls): Remove check for void parm.
902 2016-07-08  Jason Merrill  <jason@redhat.com>
904         * cp-tree.h: Unpoison lvalue_p.
905         * call.c, class.c, constexpr.c, cvt.c, init.c, lambda.c, pt.c,
906         tree.c, typeck.c, typeck2.c: Use lvalue_p instead of
907         real_lvalue_p.
909         * tree.c (obvalue_p): Rename from lvalue_p.
910         (lvalue_p): Define for c-common.
911         * call.c, cp-tree.h, cvt.c, init.c: Adjust.
912         * typeck.c: Adjust.
913         (cp_build_addr_expr_1): Remove obsolete code.
915         * tree.c (glvalue_p): Rename from lvalue_or_rvalue_with_address_p.
916         * call.c, cp-tree.h, typeck.c: Adjust.
918         * lambda.c (maybe_add_lambda_conv_op): Fix null object argument.
920         P0145R2: Refining Expression Order for C++.
921         * cp-gimplify.c (lvalue_has_side_effects): New.
922         (cp_gimplify_expr): Implement assignment ordering.
923         * call.c (op_is_ordered, build_over_call): Adjust for
924         -fargs-in-order renaming to -fstrong-eval-order.
925         * cp-gimplify.c (cp_gimplify_expr): Likewise.
927 2016-07-07  Jakub Jelinek  <jakub@redhat.com>
928             Kai Tietz  <ktietz70@googlemail.com>
930         PR c++/70869
931         PR c++/71054
932         * cp-gimplify.c (cp_genericize_r): For DECL_EXPR for non-static
933         artificial vars, genericize their initializers.
935 2016-07-05  David Malcolm  <dmalcolm@redhat.com>
937         PR c++/62314
938         * parser.c (cp_parser_class_specifier_1): When reporting
939         missing semicolons, use a fixit-hint to suggest insertion
940         of a semicolon immediately after the closing brace,
941         offsetting the reported column accordingly.
943 2016-07-04  Jan Beulich  <jbeulich@suse.com>
945         * lang-specs.h ("@c++-header"): Conditionalize "-o".
947 2016-06-29  Thomas Schwinge  <thomas@codesourcery.com>
949         * parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>:
950         Move pragma context checking into...
951         (cp_parser_omp_cancellation_point): ... here, and improve
952         diagnostic messages.
953         * semantics.c (finish_omp_cancel, finish_omp_cancellation_point):
954         Improve diagnostic messages.
956 2016-06-28  Jakub Jelinek  <jakub@redhat.com>
958         * Make-lang.in: Don't cat ../stage_current if it does not exist.
960 2016-06-24  Jason Merrill  <jason@redhat.com>
962         P0145R2: Refining Expression Order for C++.
963         * typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS.
965         * tree.c (get_target_expr_sfinae): Handle bit-fields.
966         (build_target_expr): Call mark_rvalue_use.
968 2016-06-24  Jakub Jelinek  <jakub@redhat.com>
970         * call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
971         (build_over_call): For magic == 3, do no conversion only on 3rd
972         argument.
974 2016-06-23  Andi Kleen  <ak@linux.intel.com>
976         * Make-lang.in: Add support for autofdo.
978 2016-06-21  Jason Merrill  <jason@redhat.com>
980         * constraint.cc (constraints_satisfied_p): Keep as many levels of
981         args as our template has levels of parms.
983         * pt.c (template_parm_outer_level, uses_outer_template_parms): New.
984         (type_dependent_expression_p): Use uses_outer_template_parms.
986 2016-06-20  David Malcolm  <dmalcolm@redhat.com>
988         * parser.c (cp_parser_string_literal): Convert non-standard
989         concatenation error to directly use a rich_location, and
990         use that to add the location of the first literal to the
991         diagnostic.
993 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
995         * decl.c (validate_constexpr_redeclaration): Change pair of errors
996         to error + inform.
997         * error.c (dump_function_decl): Save the constexpr specifier too.
999 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
1001         * tree.c (builtin_valid_in_constant_expr_p): Test for
1002         DECL_BUILT_IN_CLASS equal to BUILT_IN_NORMAL instead of just
1003         DECL_BUILT_IN.
1004         (bot_manip): Likewise.
1005         * call.c (magic_varargs_p): Likewise.
1007 2016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
1009         * decl.c (grokfndecl): Change pair of errors to error + inform.
1011 2016-06-17  Jason Merrill  <jason@redhat.com>
1013         PR c++/71209
1014         * typeck.c (finish_class_member_access_expr): Avoid "not a base"
1015         warning when there are dependent bases.
1017 2016-06-17  Jakub Jelinek  <jakub@redhat.com>
1019         * semantics.c (handle_omp_array_sections_1): Don't ICE when
1020         processing_template_decl when checking for bitfields and unions.
1021         Look through REFERENCE_REF_P as base of COMPONENT_REF.
1022         (finish_omp_clauses): Look through REFERENCE_REF_P even for
1023         array sections with COMPONENT_REF bases.
1025 2016-06-16  Jakub Jelinek  <jakub@redhat.com>
1027         * parser.c (cp_parser_omp_var_list_no_open): Call
1028         convert_from_reference before cp_parser_postfix_dot_deref_expression.
1029         * semantics.c (finish_omp_clauses): Don't ICE when
1030         processing_template_decl when checking for bitfields and unions.
1031         Look through REFERENCE_REF_P as base of COMPONENT_REF.
1033 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
1035         * decl.c (wrapup_globals_for_namespace): Use DECL_SOURCE_LOCATION and
1036         "%qF" in warning_at instead of "%q+F" in warning.
1037         (check_redeclaration_exception_specification): Likewise in pedwarn
1038         (and error, inform, for consistency).
1039         * call.c (joust): Likewise.
1041 2016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
1043         PR c++/70202
1044         * decl.c (xref_basetypes): Revert r117839 changes; add fix-up
1045         code at the end of the for loop; also revert r159637 changes,
1046         add back the gcc_assert.
1047         * cp-tree.h (xref_basetypes): Adjust declaration.
1048         * parser.c (cp_parser_class_head): Adjust xref_basetypes call.
1050 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
1052         * search.c: Include spellcheck-tree.h rather than spellcheck.h.
1054 2016-06-14  David Malcolm  <dmalcolm@redhat.com>
1056         * typeck.c: Include "gcc-rich-location.h".
1057         (finish_class_member_access_expr): Simplify fixit code by
1058         using gcc_rich_location::add_fixit_misspelled_id.
1060 2016-06-14  Jason Merrill  <jason@redhat.com>
1062         P0145R2: Refining Expression Order for C++.
1063         * cp-tree.h (CALL_EXPR_OPERATOR_SYNTAX, CALL_EXPR_ORDERED_ARGS)
1064         (CALL_EXPR_REVERSE_ARGS): New.
1065         * call.c (build_new_op_1): Set them.
1066         (extract_call_expr, op_is_ordered): New.
1067         (build_over_call): Set CALL_EXPR_ORDERED_ARGS.
1068         * cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Handle new flags.
1069         * pt.c (tsubst_copy_and_build): Copy new flags.
1070         * semantics.c (simplify_aggr_init_expr): Likewise.
1071         * tree.c (build_aggr_init_expr): Likewise.
1072         (build_min_non_dep_op_overload): Likewise.
1074 2016-06-14  Jakub Jelinek  <jakub@redhat.com>
1076         PR c++/71528
1077         * decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external
1078         olddecl vars, preserve their TREE_READONLY bit.
1080         PR c++/71516
1081         * decl.c (complete_vars): Handle gracefully type == error_mark_node.
1083 2016-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
1085         * typeck2.c (digest_init_r): Use EXPR_LOC_OR_LOC on init.
1087 2016-06-13  Paolo Carlini  <paolo.carlini@oracle.com>
1089         * decl.c (grokdeclarator): Fix typo in pedwarn text.
1091 2016-06-10  Thomas Schwinge  <thomas@codesourcery.com>
1093         PR c/71381
1094         * parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>:
1095         Loosen checking.
1097 2016-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
1099         PR c++/71465
1100         Revert:
1101         2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
1103         PR c++/70202
1104         * parser.c (cp_parser_class_head): When xref_basetypes fails and
1105         emits an error do not zero the type.
1107 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
1109         * decl.c (maybe_deduce_size_from_array_init): Use
1110         DECL_SOURCE_LOCATION in error_at.
1111         (layout_var_decl): Likewise.
1112         (check_array_initializer): Likewise.
1113         (check_initializer): Likewise.
1114         (duplicate_decls, check_elaborated_type_specifier): Tidy.
1116 2016-06-08  Martin Sebor  <msebor@redhat.com>
1117             Jakub Jelinek  <jakub@redhat.com>
1119         PR c++/70507
1120         PR c/68120
1121         * constexpr.c: Include gimple-fold.h.
1122         (cxx_eval_internal_function): New function.
1123         (cxx_eval_call_expression): Call it.
1124         (potential_constant_expression_1): Handle integer arithmetic
1125         overflow built-ins.
1126         * tree.c (builtin_valid_in_constant_expr_p): Handle
1127         BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P.
1129 2016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
1131         * pt.c (tsubst, case TYPENAME_TYPE): Don't delay checking the
1132         return value of tsubst_aggr_type for error_mark_node.
1134 2016-06-08  Jakub Jelinek  <jakub@redhat.com>
1136         PR c++/71442
1137         * pt.c (tsubst_copy): Only set TREE_USED on DECLs.
1139 2016-06-06  Jakub Jelinek  <jakub@redhat.com>
1140             Patrick Palka  <ppalka@gcc.gnu.org>
1142         PR c++/70847
1143         PR c++/71330
1144         PR c++/71393
1145         * cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL
1146         right after cp_fold call if cp_fold has returned the same stmt
1147         already in some earlier cp_fold_r call.
1148         (cp_fold_function): Add pset automatic variable, pass its address
1149         to cp_walk_tree.
1151 2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
1153         PR c++/70202
1154         * parser.c (cp_parser_class_head): When xref_basetypes fails and
1155         emits an error do not zero the type.
1157 2016-06-03  Patrick Palka  <ppalka@gcc.gnu.org>
1159         PR c++/27100
1160         * decl.c (duplicate_decls): Properly copy the
1161         DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and
1162         DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL.
1164 2016-06-03  Chung-Lin Tang  <cltang@codesourcery.com>
1166         * semantics.c (finish_omp_clauses): Mark OpenACC reduction
1167         arguments as addressable when async clause exists.
1169 2016-06-02  Jan Hubicka  <jh@suse.cz>
1171         * cp-gimplify.c (genericize_continue_stmt): Force addition of
1172         predict stmt.
1174 2016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
1176         * decl.c (xref_tag_1): Change pairs of errors to error + inform.
1177         (start_enum): Likewise.
1178         * parser.c (cp_parser_class_head): Likewise.
1180 2016-06-02  Jakub Jelinek  <jakub@redhat.com>
1182         PR c++/71372
1183         * cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression
1184         is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS
1185         and TREE_THIS_VOLATILE flags.  For ARRAY_REF and ARRAY_RANGE_REF, copy
1186         over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags
1187         to the newly built tree.
1189 2016-05-31  Jason Merrill  <jason@redhat.com>
1191         * pt.c (instantiate_decl): Avoid recalculation.
1193         PR c++/60095
1194         PR c++/69515
1195         PR c++/69009
1196         * pt.c (instantiate_template_1): Don't put the partial
1197         specialization in DECL_TI_TEMPLATE.
1198         (partial_specialization_p, impartial_args): Remove.
1199         (regenerate_decl_from_template): Add args parm.
1200         (instantiate_decl): Look up the partial specialization again.
1202         PR c++/71227
1203         * pt.c (check_explicit_specialization): Give better diagnostic about
1204         specializing a hidden friend.
1206 2016-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
1208         PR c++/71248
1209         * decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION
1210         to obtain correct locations; avoid redundant diagnostics on
1211         out-of-class definitions.
1213 2016-05-30  Martin Sebor  <msebor@redhat.com>
1215         PR c++/71306
1216         * init.c (warn_placement_new_too_small): Handle placement new arguments
1217         that are elements of arrays more carefully.  Remove a pointless loop.
1219 2016-05-30  Jakub Jelinek  <jakub@redhat.com>
1221         PR c++/71349
1222         * parser.c (cp_parser_omp_for): Don't disallow nowait clause
1223         when combined with target construct.
1224         (cp_parser_omp_parallel): Pass cclauses == NULL as last argument
1225         to cp_parser_omp_all_clauses.
1227 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
1229         PR c++/71238
1230         * lex.c (unqualified_name_lookup_error): Take a location too.
1231         (unqualified_fn_lookup_error): Take a cp_expr.
1232         * cp-tree.h (unqualified_name_lookup_error,
1233         unqualified_fn_lookup_error): Adjust declarations.
1234         * semantics.c (perform_koenig_lookup): Adjust
1235         unqualified_fn_lookup_error call, pass the location of
1236         the identifier too as part of a cp_expr.
1238 2016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
1240         PR c++/71099
1241         * parser.c (cp_parser_function_specifier_opt): Use current_class_type
1242         to improve the diagnostic about wrong uses of 'virtual'.
1244 2016-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
1246         PR c++/71105
1247         * lambda.c (maybe_add_lambda_conv_op): Early return also when
1248         LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE.
1250 2016-05-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
1252         Revert:
1253         PR c++/69855
1254         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
1255         decls into the global scope after stripping template bits
1256         and setting DECL_ANTICIPATED.
1258 2016-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
1260         PR c++/60385
1261         * name-lookup.c (push_namespace): Return bool, false when pushdecl
1262         fails.
1263         * name-lookup.h (push_namespace): Adjust declaration.
1264         * parser.c (cp_parser_namespace_definition): Check push_namespace
1265         return value.
1267 2016-05-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
1269         PR c++/69855
1270         * name-lookup.c (pushdecl_maybe_friend_1): Push local function
1271         decls into the global scope after stripping template bits
1272         and setting DECL_ANTICIPATED.
1274 2016-05-26  Jakub Jelinek  <jakub@redhat.com>
1276         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn
1277         if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive.
1279 2016-05-26  Patrick Palka  <ppalka@gcc.gnu.org>
1281         PR c++/70822
1282         PR c++/70106
1283         * cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to
1284         SCOPE_REFs too.
1285         * pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set
1286         on the qualified_id then propagate it to the resulting
1287         expression.
1288         (do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs
1289         too.
1290         * semantics.c (force_paren_expr): If given a SCOPE_REF, just set
1291         its REF_PARENTHESIZED_P flag.
1293 2016-05-25  Jason Merrill  <jason@redhat.com>
1295         PR c++/71173
1296         PR c++/70522
1297         * cp-tree.h (enum tag_types): Add scope_type.
1298         * parser.c (cp_parser_class_name): Use scope_type.
1299         (prefer_type_arg): Handle scope_type.
1300         (cp_parser_lookup_name): Use prefer_type_arg.
1301         * name-lookup.c (lookup_qualified_name): Change bool is_type_p to
1302         int prefer_type, use lookup_flags.
1303         * name-lookup.h: Adjust.
1305 2016-05-24  Cesar Philippidis  <cesar@codesourcery.com>
1307         * parser.c (cp_parser_oacc_declare): Add support for
1308         GOMP_MAP_FIRSTPRIVATE_POINTER.
1309         * semantics.c (handle_omp_array_sections_1): Replace bool is_omp
1310         argument with enum c_omp_region_type ort.  Don't privatize OpenACC
1311         non-static members.
1312         (handle_omp_array_sections): Replace bool is_omp argument with enum
1313         c_omp_region_type ort.  Update call to handle_omp_array_sections_1.
1314         (finish_omp_clauses): Add specific errors and warning messages for
1315         OpenACC.  Use firsrtprivate pointers for OpenACC subarrays.  Update
1316         call to handle_omp_array_sections.
1318 2016-05-24  Jason Merrill  <jason@redhat.com>
1320         PR c++/70584
1321         * cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold
1322         returns a decl.
1323         (cp_fold) [INDIRECT_REF]: Don't fold to an rvalue.
1325 2016-05-24  Martin Sebor  <msebor@redhat.com>
1327         PR c++/71147
1328         * decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p.
1329         * pt.c (instantiate_class_template_1): Try to complete the element
1330         type of a flexible array member.
1331         (can_complete_type_without_circularity): Handle arrays of unknown bound.
1332         * typeck.c (complete_type): Also complete the type of the elements of
1333         arrays with an unspecified bound.
1335 2016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
1337         PR c++/69872
1338         * typeck2.c (check_narrowing): Check pedwarn return value.
1340 2016-05-24  Jakub Jelinek  <jakub@redhat.com>
1342         PR c++/71257
1343         * semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>:
1344         For OMP_CLAUSE_LINEAR_REF don't require type to be
1345         integral or pointer.
1347 2016-05-24  Richard Biener  <rguenther@suse.de>
1349         PR middle-end/70434
1350         PR c/69504
1351         * expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.
1352         * constexpr.c (cxx_eval_array_reference): Handle indexed
1353         vectors.
1354         * typeck.c (cp_build_array_ref): Adjust.
1356 2016-05-23  Jason Merrill  <jason@redhat.com>
1358         PR c++/70344
1359         * constexpr.c (cxx_eval_call_expression): Check for
1360         fun == current_function_decl again.
1362         PR c++/70584
1363         * cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call
1364         maybe_undo_parenthesized_ref.
1366         PR c++/70735
1367         * pt.c (tsubst_copy): Just return a local variable from
1368         non-template context.  Don't call rest_of_decl_compilation for
1369         duplicated static locals.
1370         (tsubst_decl): Set DECL_CONTEXT of local static from another
1371         function.
1373 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
1375         PR c++/70972
1376         * method.c (forward_parm): Use cp_build_reference_type.
1378 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
1380         PR c++/69095
1381         * parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs.
1383 2016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
1385         * pt.c (check_for_bare_parameter_packs): Improve error message
1386         location for expressions.
1388 2016-05-20  Nathan Sidwell  <nathan@acm.org>
1390         * constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if
1391         ... goto.
1392         (cxx_eval_call_expression): Fix comment grammar.
1394 2016-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
1396         PR c++/70572
1397         * decl.c (cp_finish_decl): Check do_auto_deduction return value
1398         and return immediately in case of erroneous code.
1400 2016-05-19  Marek Polacek  <polacek@redhat.com>
1402         PR c++/71075
1403         * pt.c (unify_template_argument_mismatch): Use %qE instead of %qD.
1405 2016-05-19  Jason Merrill  <jason@redhat.com>
1407         PR c++/10200
1408         * pt.c (fn_type_unification): Add outer template args if needed.
1409         (type_unification_real): Handle getting full args.
1411 2016-05-19  David Malcolm  <dmalcolm@redhat.com>
1413         PR c++/71184
1414         * parser.c (cp_parser_operator): For array new/delete, check that
1415         cp_parser_require returned a non-NULL token before dereferencing
1416         it.
1418 2016-05-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1420         * decl.c (finish_enum_value_list): Use the specified mode.
1422 2016-05-18  Jason Merrill  <jason@redhat.com>
1424         * pt.c (value_dependent_expression_p): Tweak new cases to better
1425         match the wording in the standard.
1427 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
1429         PR c++/69793
1430         * parser.c (cp_parser_template_id): Don't call cp_lexer_peek_nth_token
1431         when the previous cp_lexer_peek_token returns CPP_EOF.
1433 2016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
1435         PR c++/70466
1436         * call.c (convert_like_real): Check that we are actually converting
1437         from an init list.
1439 2016-05-16  Matthew Wahab  <matthew.wahab@arm.com>
1441         * decl.c (grokdeclarator): Remove errmsg and use of
1442         targetm.invalid_return_type.
1443         (grokparms): Remove errmsg and use of
1444         targetm.invalid_parameter_type.
1446 2016-05-13  Jason Merrill  <jason@redhat.com>
1448         PR c++/10200
1449         PR c++/69753
1450         * pt.c (tsubst_decl): Use uses_template_parms.
1451         (instantiate_template_1): Handle non-dependent calls in templates.
1452         (value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL.
1453         (type_dependent_expression_p): Only consider innermost template args.
1454         (dependent_template_arg_p): Check enclosing class of a template here.
1455         (dependent_template_p): Not here.
1456         (type_dependent_object_expression_p): New.
1457         * typeck.c (finish_class_member_access_expr): Use it.
1458         * parser.c (cp_parser_postfix_expression): Use it.
1459         (cp_parser_postfix_dot_deref_expression): Use it.  Use comptypes
1460         to detect the current instantiation.
1461         (cp_parser_lookup_name): Really implement DR 141.
1462         * search.c (lookup_field_r): Prefer a dependent using-declaration.
1463         (any_dependent_bases_p): Split out from...
1464         * name-lookup.c (do_class_using_decl): ...here.
1465         * call.c (build_new_method_call_1): Use it.
1466         * semantics.c (finish_call_expr): 'this' doesn't make a call dependent.
1467         * tree.c (non_static_member_function_p): Remove.
1468         * typeck2.c (build_x_arrow): Use dependent_scope_p.
1470         * parser.c (cp_parser_postfix_dot_deref_expression): Use
1471         complete_type_or_else for unknown_type_node, too.
1473 2016-05-12  Marek Polacek  <polacek@redhat.com>
1475         PR c/70756
1476         * call.c (build_new_op_1): Pass LOC to cp_build_modify_expr.
1477         * cp-tree.h (cp_build_modify_expr): Update declaration.
1478         (cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline
1479         overloads.
1480         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to
1481         cp_build_modify_expr.
1482         * decl2.c (set_guard): Likewise.
1483         (handle_tls_init): Likewise.
1484         * init.c (perform_member_init): Likewise.
1485         (expand_virtual_init): Likewise.
1486         (build_new_1): Likewise.
1487         (build_vec_delete_1): Likewise.
1488         (get_temp_regvar): Likewise.
1489         (build_vec_init): Likewise.
1490         * method.c (do_build_copy_assign): Likewise.
1491         (assignable_expr): Likewise.
1492         * semantics.c (finish_omp_for): Likewise.
1493         * typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and
1494         cp_pointer_int_sum.
1495         (cp_pointer_int_sum): Add location parameter.  Pass it down to
1496         pointer_int_sum.
1497         (pointer_diff): Add location parameter.  Use it.
1498         (build_modify_expr): Pass location down to cp_build_modify_expr.
1499         (cp_build_modify_expr): Add location parameter.  Use it.
1500         (build_x_modify_expr): Pass location down to cp_build_modify_expr.
1501         * typeck2.c (cxx_incomplete_type_diagnostic,
1502         cxx_incomplete_type_error): Add location parameter.
1504 2016-05-11  Marek Polacek  <polacek@redhat.com>
1506         PR c++/71024
1507         * decl.c (duplicate_decls): Call diagnose_mismatched_decls.
1509 2016-05-05  Jakub Jelinek  <jakub@redhat.com>
1511         * parser.c (cp_parser_selection_statement): For RID_SWITCH,
1512         pass if_p instead of NULL to cp_parser_implicitly_scoped_statement.
1514 2016-05-04  Marek Polacek  <polacek@redhat.com>
1516         * parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses
1517         with OPT_Wdangling_else.
1519 2016-05-03  Martin Sebor  <msebor@redhat.com>
1521         PR c++/66561
1522         * tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE,
1523         BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions.
1525 2016-05-03  Marek Polacek  <polacek@redhat.com>
1527         PR c/70859
1528         * call.c (build_cxx_call): Pass location and vNULL down to
1529         check_builtin_function_arguments.
1531 2016-05-03  Richard Biener  <rguenther@suse.de>
1533         * Make-lang.in (cc1plus-checksum.c): For stage-final re-use
1534         the checksum from the previous stage.
1536 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
1538         PR c++/62314
1539         * typeck.c (finish_class_member_access_expr): When
1540         giving a hint about a possibly-misspelled member name,
1541         add a fix-it replacement hint.
1543 2016-05-02  Cesar Philippidis  <cesar@codesourcery.com>
1545         * cp-tree.h (finish_omp_clauses): Update prototype.
1546         * parser.c (cp_parser_oacc_all_clauses): Update call to
1547         finish_omp_clauses.
1548         (cp_parser_omp_all_clauses): Likewise.
1549         (cp_parser_omp_for_loop): Likewise.
1550         (cp_omp_split_clauses): Likewise.
1551         (cp_parser_oacc_cache): Likewise.
1552         (cp_parser_oacc_loop): Likewise.
1553         (cp_parser_omp_declare_target):
1554         (cp_parser_cilk_simd_all_clauses): Likewise.
1555         (cp_parser_cilk_for): Likewise.
1556         * pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd
1557         arguments with enum c_omp_region_type ort.
1558         (tsubst_omp_clauses): Update calls to finish_omp_clauses.
1559         (tsubst_omp_attribute): Update calls to tsubst_omp_clauses.
1560         (tsubst_omp_for_iterator): Update calls to finish_omp_clauses.
1561         (tsubst_expr): Update calls to tsubst_omp_clauses.
1562         * semantics.c (finish_omp_clauses): Replace bool arguments
1563         allow_fields, declare_simd, and is_cilk with bitmask ort.
1564         (finish_omp_for): Update call to finish_omp_clauses.
1566 2016-05-02  David Malcolm  <dmalcolm@redhat.com>
1568         PR c++/62314
1569         * parser.c (cp_parser_class_head): Capture the start location;
1570         use it to emit a fix-it insertion hint when complaining
1571         about missing "template <> " in explicit specializations.
1573 2016-05-02  Richard Sandiford  <richard.sandiford@arm.com>
1575         * init.c (build_new_1): Use shift operators instead of wi:: shifts.
1577 2016-05-02  Richard Biener  <rguenther@suse.de>
1579         * decl.c (grokdeclarator): Properly insert a DECL_EXPR for
1580         anonymous VLAs.
1582 2016-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
1584         PR c++/66644
1585         * class.c (check_field_decl): Remove final int* parameter, change
1586         the return type to bool; fix logic in order not to reject multiple
1587         initialized fields in anonymous struct.
1588         (check_field_decls): Adjust call.
1590 2016-04-29  Cesar Philippidis  <cesar@codesourcery.com>
1592         PR middle-end/70626
1593         * parser.c (cp_parser_oacc_loop): Don't augment mask with
1594         OACC_LOOP_CLAUSE_MASK.
1595         (cp_parser_oacc_kernels_parallel): Update call to
1596         c_oacc_split_loop_clauses.
1598 2016-04-28  Jason Merrill  <jason@redhat.com>
1600         Implement C++17 [[nodiscard]] attribute.
1601         PR c++/38172
1602         PR c++/54379
1603         * parser.c (cp_parser_std_attribute): Handle [[nodiscard]].
1604         * tree.c (handle_nodiscard_attribute): New.
1605         (cxx_attribute_table): Add [[nodiscard]].
1606         * cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New.
1607         (maybe_warn_nodiscard): New.
1608         (convert_to_void): Call it.
1610         * cvt.c (cp_get_callee): New.
1611         * constexpr.c (get_function_named_in_call): Use it.
1612         * cxx-pretty-print.c (postfix_expression): Use it.
1613         * except.c (check_noexcept_r): Use it.
1614         * method.c (check_nontriv): Use it.
1615         * tree.c (build_aggr_init_expr): Use it.
1616         * cp-tree.h: Declare it.
1618 2015-04-27  Ryan Burn  <contact@rnburn.com>
1619             Jeff Law  <law@redhat.com>
1621         PR c++/69024
1622         PR c++/68997
1623         * cp-gimplify.c (cp_gimplify_expr): Call cilk_cp_detect_spawn_and_unwrap
1624         instead of cilk_detect_spawn_and_unwrap.
1625         * cp-cilkplus.c (is_conversion_operator_function_decl_p): New.
1626         (find_spawn): New.
1627         (cilk_cp_detect_spawn_and_unwrap): New.
1628         * lambda.c: Include cp-cilkplus.h.
1629         * parser.c: Include cp-cilkplus.h.
1630         * cp-tree.h (cpp_validate_cilk_plus_loop): Move prototype into...
1631         * cp-cilkpus.h: New file.
1633 2016-04-27  Nathan Sidwell  <nathan@acm.org>
1635         * constexpr.c (get_fundef_copy): Use the original function for
1636         non-recursive evaluations.
1637         (save_fundef_copy): Always expect a slot to be available.
1639 2016-04-27  Bernd Schmidt  <bschmidt@redhat.com>
1641         * parser.c (cp_parser_postfix_expression): Call
1642         warn_for_memset instead of warning directly here.
1644 2016-04-26  Patrick Palka  <ppalka@gcc.gnu.org>
1646         PR c++/70241
1647         * decl.c (build_enumerator): Set current_access_specifier when
1648         declaring an enumerator belonging to an in-class enumeration.
1649         * parser.c (cp_parser_check_access_in_redecleration): Also
1650         consider in-class enumerations.
1652 2016-04-26  Marek Polacek  <polacek@redhat.com>
1654         PR c++/70744
1655         * call.c (build_conditional_expr_1): Call cp_stabilize_reference
1656         instead of stabilize_reference.
1657         (build_over_call): Likewise.
1658         * cp-tree.h (cp_stabilize_reference): Declare.
1659         * tree.c (cp_stabilize_reference): New function.
1660         * typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of
1661         stabilize_reference.
1662         (unary_complex_lvalue): Likewise.
1663         (cp_build_modify_expr): Likewise.
1665 2016-04-26  Jakub Jelinek  <jakub@redhat.com>
1667         PR bootstrap/70704
1668         * pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of
1669         just flag_checking.
1671 2016-04-25  Jason Merrill  <jason@redhat.com>
1673         * tree.c (std_attribute_table): New.
1674         (init_tree): Register it.
1676 2016-04-22  Jason Merrill  <jason@redhat.com>
1678         * parser.c (cp_parser_perform_range_for_lookup): Decay the array.
1680 2016-04-21  Patrick Palka  <ppalka@gcc.gnu.org>
1682         * name-lookup.c (free_saved_scope): New free list of saved_scope
1683         structures.
1684         (push_to_top_level): Attempt to reuse a saved_scope struct
1685         from free_saved_scope instead of allocating a new one each time.
1686         (pop_from_top_level_1): Chain the now-unused saved_scope structure
1687         onto free_saved_scope.
1689 2016-04-21  Paolo Carlini  <paolo.carlini@oracle.com>
1691         PR c++/70540
1692         * semantics.c (process_outer_var_ref): Unconditionally return
1693         error_mark_node when mark_used returns false.
1695 2016-04-21  Marek Polacek  <polacek@redhat.com>
1697         PR c++/70513
1698         * parser.c (cp_parser_enum_specifier): Check and possibly error for
1699         extra qualification.
1701 2016-04-20  Nathan Sidwell  <nathan@acm.org>
1703         PR c++/55635
1704         * init.c (build_vec_delete_1): Protect operator delete call in try
1705         finally.
1706         (build_delete): Likewise.
1707         * optimize.c (build_delete_destructor_body): Likewise.
1709 2016-04-20  Ilya Verbin  <ilya.verbin@intel.com>
1711         PR c++/69363
1712         * cp-tree.h (finish_omp_clauses): Add new default argument.
1713         * parser.c (cp_parser_cilk_simd_all_clauses): Use finish_omp_clauses
1714         instead of c_finish_cilk_clauses.
1715         * semantics.c (finish_omp_clauses): Add new argument.  Allow
1716         floating-point variables in the linear clause for Cilk Plus.
1718 2016-04-20  Nathan Sidwell  <nathan@acm.org>
1720         * semantics.c (finish_compound_lteral): Don't wrap VECTOR_TYPEs in a
1721         TARGET_EXPR.
1723 2016-04-19  Jason Merrill  <jason@redhat.com>
1725         PR c++/66543
1726         * expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR.
1727         * pt.c (make_pack_expansion): Call mark_exp_read.
1728         * semantics.c (finish_id_expression): Call mark_type_use in
1729         unevaluated context.
1731         DR 2137
1732         * call.c (implicit_conversion): If we choose a copy constructor
1733         for list-initialization from the same type, the conversion is an
1734         exact match.
1736         * constexpr.c (breaks): Handle EXIT_EXPR.
1737         (cxx_eval_loop_expr): Handle COMPOUND_EXPR body.
1738         (cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling
1739         of COMPOUND_EXPR.
1741         PR c++/68206
1742         PR c++/68530
1743         * constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR
1744         and GOTO_EXPR.
1746         * pt.c (tsubst_expr): Remove shadowing declaration.
1747         (tsubst_pack_expansion): Add assert.
1749         * semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION.
1751         PR c++/70522
1752         * name-lookup.c (qualified_lookup_using_namespace): Look through
1753         hidden names.
1755 2016-04-18  Michael Matz  <matz@suse.de>
1757         * class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
1758         (layout_class_type): Ditto.
1759         (build_base_field): Use SET_DECL_ALIGN.
1760         (fixup_attribute_variants): Use SET_TYPE_ALIGN.
1761         * decl.c (duplicate_decls): Use SET_DECL_ALIGN.
1762         (record_unknown_type): Use SET_TYPE_ALIGN.
1763         (cxx_init_decl_processing): Ditto.
1764         (copy_type_enum): Ditto.
1765         (grokfndecl): Use SET_DECL_ALIGN.
1766         (copy_type_enum): Use SET_TYPE_ALIGN.
1767         * pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN.
1768         (tsubst): Ditto.
1769         * tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN.
1770         * lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN.
1771         * method.c (implicitly_declare_fn): Use SET_DECL_ALIGN.
1772         * rtti.c (emit_tinfo_decl): Ditto.
1774 2016-04-18  Jason Merrill  <jason@redhat.com>
1776         PR c++/70690
1777         PR c++/70528
1778         * class.c (type_maybe_constexpr_default_constructor): New.
1779         (type_has_constexpr_default_constructor): Revert.
1781 2016-04-16  Sandra Loosemore  <sandra@codesourcery.com>
1783         PR target/1078
1785         * tree.c (cxx_attribute_table): Remove "com_interface" entry.
1786         (handle_com_interface_attribute): Delete.
1788 2016-04-15  Jason Merrill  <jason@redhat.com>
1790         PR c++/70685
1791         * constexpr.c (get_fundef_copy): Handle null *slot.
1793         PR c++/70505
1794         * pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR
1795         unknown_type_node, too.
1797 2016-04-15  Jason Merrill  <jason@redhat.com>
1798             Nathan Sidwell  <nathan@acm.org>
1800         PR c++/70594
1801         * constexpr.c (constexpr_call_table): Preserve in GC.
1802         (struct fundef_copy, struct fundef_copies_table_t):     Delete.
1803         (fundef_copies_table): Preserve in GC. Change to pointer to
1804         tree->tree hash.
1805         (maybe_initialize_fundef_copies_table): Adjust.
1806         (get_fundef_copy): Return a TREE_LIST.  Use non-inserting search.
1807         (save_fundef_copy): Adjust for a TREE_LIST.
1808         (cxx_eval_call_expression): Adjust for a fundef_copy TREE_LIST.
1809         (fini_constexpr): New.
1810         * cp-tree.h (fini_constexpr): Declare.
1811         * decl2.c (c_parse_final_cleanups): Call fini_constexpr.
1813 2016-04-15  Jakub Jelinek  <jakub@redhat.com>
1815         PR c/70436
1816         * parser.c (cp_parser_pragma): Add IF_P argument, pass it down
1817         where needed.
1818         (cp_parser_declaration_seq_opt, cp_parser_member_specification_opt,
1819         cp_parser_objc_interstitial_code, cp_parser_omp_declare_simd,
1820         cp_parser_oacc_routine): Adjust cp_parser_pragma callers.
1821         (cp_parser_statement): Likewise.  Adjust cp_parser_cilk_for caller.
1822         (cp_parser_omp_structured_block): Add IF_P argument, pass it down to
1823         cp_parser_statement.
1824         (cp_parser_oacc_data, cp_parser_oacc_host_data, cp_parser_oacc_loop,
1825         cp_parser_oacc_kernels_parallel, cp_parser_omp_critical,
1826         cp_parser_omp_simd, cp_parser_omp_for, cp_parser_omp_master,
1827         cp_parser_omp_ordered, cp_parser_omp_parallel, cp_parser_omp_single,
1828         cp_parser_omp_task, cp_parser_omp_taskgroup, cp_parser_omp_distribute,
1829         cp_parser_omp_teams, cp_parser_omp_target_data, cp_parser_omp_target,
1830         cp_parser_omp_taskloop, cp_parser_omp_construct,
1831         cp_parser_cilk_grainsize, cp_parser_cilk_simd, cp_parser_cilk_for):
1832         Add IF_P argument, pass it down where needed.
1833         (cp_parser_omp_for_loop): Likewise.  Clear IF_P if nbraces.
1834         (cp_parser_omp_sections_scope): Adjust cp_parser_omp_structured_block
1835         calls.
1837 2016-04-14  Jason Merrill  <jason@redhat.com>
1839         PR c++/70494
1840         * decl.c (cxx_maybe_build_cleanup): Handle non-decls.
1841         * typeck2.c (split_nonconstant_init_1): Use it.
1843         PR c++/70528
1844         * class.c (type_has_constexpr_default_constructor): Return true
1845         for an implicitly declared constructor.
1847         PR c++/70622
1848         * parser.c (cp_parser_init_declarator): Add auto_result parm.
1849         (cp_parser_simple_declaration): Pass it.
1850         (strip_declarator_types): New.
1852         PR c++/70543
1853         * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent
1854         initializer also makes the variable value-dependent.
1856         PR c++/70648
1857         * constexpr.c (cxx_eval_store_expression): Also copy
1858         CONSTRUCTOR_NO_IMPLICIT_ZERO.
1860 2016-04-14  Martin Sebor  <msebor@redhat.com>
1862         PR c++/69517
1863         PR c++/70019
1864         PR c++/70588
1865         * cp-tree.h, decl.c, init.c, typeck2.c: Revert.
1867 2016-04-14  Jason Merrill  <jason@redhat.com>
1869         * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty
1870         parameter ABI change.
1872 2016-04-13  Martin Sebor  <msebor@redhat.com>
1874         PR c++/69517
1875         PR c++/70019
1876         PR c++/70588
1877         * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new
1878         functions.
1879         * decl.c (check_initializer, cp_finish_decl): Call them.
1880         (reshape_init_r): Reject incompletely braced intializer-lists
1881         for VLAs.
1882         * init.c (throw_bad_array_length, build_vla_check)
1883         (build_vla_size_check, build_vla_init_check): Define new functions.
1884         * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p()
1885         to detect a VLA.
1886         (store_init_value): Same.
1888 2016-04-13  Jason Merrill  <jason@redhat.com>
1890         Warn about empty parameter ABI with -Wabi=9.
1891         * call.c (empty_class_msg, mark_for_abi_warning)
1892         (warn_empty_class_abi): New.
1893         (build_call_a): Use them.
1894         * decl.c (store_parm_decls): Use mark_for_abi_warning.
1895         * error.c (pp_format_to_string): New.
1897         Pass empty class parameters like C.
1898         * call.c (pass_as_empty_struct, empty_class_arg): New.
1899         (type_passed_as, build_x_va_arg): Use pass_as_empty_struct.
1900         (build_call_a): Use empty_class_arg.
1901         * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New.
1902         * decl.c (cxx_init_decl_processing): Create empty_struct_type.
1904 2016-04-13  Jason Merrill  <jason@redhat.com>
1906         PR c++/70627
1907         * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE.
1909 2016-04-13  Paolo Carlini  <paolo.carlini@oracle.com>
1911         PR c++/70635
1912         * pt.c (resolve_typename_type): Fix typos in infinite recursion
1913         avoidance mechanism.
1915 2016-04-13  Jason Merrill  <jason@redhat.com>
1917         PR c++/70634
1918         * pt.c (instantiation_dependent_uneval_expression_p): Split out
1919         from instantiation_dependent_expression_p.
1920         (value_dependent_expression_p): Use it for unevaluated operands.
1921         (instantiation_dependent_r): Don't check value-dependence.
1922         (instantiation_dependent_expression_p): Check
1923         value-dependence of the expression as a whole.
1924         * cp-tree.h: Declare instantiation_dependent_uneval_expression_p.
1925         * semantics.c (finish_decltype_type): Use it.
1927         * constexpr.c (potential_nondependent_constant_expression): New.
1928         (potential_nondependent_static_init_expression): New.
1929         (maybe_constant_value_1, fold_non_dependent_expr)
1930         (maybe_constant_init): Use them.
1931         * pt.c (instantiate_non_dependent_expr_sfinae)
1932         (instantiate_non_dependent_or_null, convert_nontype_argument): Use
1933         them.
1934         * cp-tree.h: Declare them.
1936 2016-04-13  Jakub Jelinek  <jakub@redhat.com>
1938         PR c++/70594
1939         * decl.c (pop_labels_1): Removed.
1940         (note_label, sort_labels): New functions.
1941         (pop_labels): During named_labels traversal, just push the slot
1942         pointers into a vector, then qsort it by DECL_UID and only then
1943         call pop_label and chain it into BLOCK_VARS.
1945 2016-04-13  Jason Merrill  <jason@redhat.com>
1947         PR c++/70615
1948         * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here.
1949         (cp_gimplify_expr): Not here.
1951 2016-04-12  Patrick Palka  <ppalka@gcc.gnu.org>
1953         PR c++/70610
1954         * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally
1955         recurse into it.
1956         * typeck.c (build_x_conditional_expr): Unconditionally remember
1957         that the result is an lvalue or xvalue.
1959 2016-04-12  Jason Merrill  <jason@redhat.com>
1961         * class.c (is_really_empty_class): A zero-length array is empty.
1962         An unnamed bit-field doesn't make a class non-empty.
1964 2016-04-12  Paolo Carlini  <paolo.carlini@oracle.com>
1966         PR c++/68722
1967         * parser.c (cp_parser_cache_defarg): When file ends in default
1968         argument simply return error_mark_node.
1970 2016-04-12  Nathan Sidwell  <nathan@acm.org>
1972         PR c++/70501
1973         * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE
1974         similarly to PMF.
1976 2016-04-11  Jason Merrill  <jason@redhat.com>
1978         * mangle.c (decl_is_template_id): The template itself counts as a
1979         template-id.
1981 2016-04-08  Patrick Palka  <ppalka@gcc.gnu.org>
1983         PR c++/70590
1984         PR c++/70452
1985         * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr
1986         on the result if it's not a CONSTRUCTOR.
1988 2016-04-07  Patrick Palka  <ppalka@gcc.gnu.org>
1990         PR c++/70452
1991         * constexpr.c (find_constructor): New function.
1992         (unshare_constructor): New function.
1993         (cxx_eval_call_expression): Use unshare_constructor instead of
1994         unshare_expr.
1995         (find_array_ctor_elt): Likewise.
1996         (cxx_eval_vec_init_1): Likewise.
1997         (cxx_eval_store_expression): Likewise.
1998         (cxx_eval_constant_expression): Likewise.
2000 2016-04-06  Patrick Palka  <ppalka@gcc.gnu.org>
2002         PR c/70436
2003         * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid
2004         potentially generating a future -Wparentheses warning in its
2005         callers.
2007 2016-04-06  Jason Merrill  <jason@redhat.com>
2009         * class.c (check_abi_tags): Fix function template handling.
2011 2016-04-05  Nathan Sidwell  <nathan@acm.org>
2013         PR c++/70512
2014         * class.c (fixup_may_alias): New.
2015         (fixup_attribute_variants): Call it.
2017 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
2019         PR c++/70452
2020         * constexpr.c (struct fundef_copy): New struct.
2021         (struct fundef_copies_table_t): New struct.
2022         (fundef_copies_table): New static variable.
2023         (maybe_initialize_fundef_copies_table): New static function.
2024         (get_fundef_copy): New static function.
2025         (save_fundef_copy): New static function.
2026         (cxx_eval_call_expression): Use get_fundef_copy, and
2027         save_fundef_copy.
2028         (constexpr_call_table): Add "deletable" GTY marker.
2030 2016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
2032         PR c++/70452
2033         * cp-tree.h (class cache_map): Remove.
2034         * constexpr.c (cv_cache): Change type to
2035         GTY((deletable)) hash_map<tree, tree> *.
2036         (maybe_constant_value): Adjust following the change to cv_cache.
2037         (clear_cv_cache): New static function.
2038         (clear_cv_and_fold_caches): Use it.
2039         * cp-gimplify.c (fold_cache): Change type to
2040         GTY((deletable)) hash_map<tree, tree> *.
2041         (clear_fold_cache): Adjust following the change to fold_cache.
2042         (cp_fold): Likewise.
2044 2016-04-02  Martin Sebor  <msebor@redhat.com>
2046         PR c++/67376
2047         PR c++/70170
2048         PR c++/70172
2049         PR c++/70228
2050         * constexpr.c (diag_array_subscript): New function.
2051         (cxx_eval_array_reference): Detect out of bounds array indices.
2053 2016-04-01  Jason Merrill  <jason@redhat.com>
2055         PR c++/70449
2056         PR c++/70344
2057         * pt.c (instantiate_decl): A function isn't fully defined if
2058         DECL_INITIAL is error_mark_node.
2059         * constexpr.c (cxx_eval_call_expression): Likewise.
2061 2016-04-01  Jakub Jelinek  <jakub@redhat.com>
2062             Marek Polacek  <polacek@redhat.com>
2064         PR c++/70488
2065         * init.c (warn_placement_new_too_small): Test whether
2066         DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi.
2068 2016-04-01  Nathan Sidwell  <nathan@acm.org>
2070         PR c++/68475
2071         * decl.c (check_redeclaration_exception_specification): Check
2072         regardless of -fno-exceptions.
2073         * typeck2.c (merge_exception_specifiers): Relax assert by checking
2074         flag_exceptions too.
2076 2016-03-31  Nathan Sidwell  <nathan@acm.org>
2078         * decl.c (start_preparsed_function): Remove unnecessary bracing.
2079         (finish_destructor_body): Don't emit operator delete here.
2081 2016-03-31  Nathan Sidwell  <nathan@acm.org>
2083         PR c++/70393
2084         * constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR
2085         elements in field order.
2087 2016-03-31  Marek Polacek  <polacek@redhat.com>
2089         PR c/70297
2090         * decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN.
2092 2016-03-31  Richard Biener  <rguenther@suse.de>
2094         PR c++/70430
2095         * typeck.c (cp_build_binary_op): Fix operand order of vector
2096         conditional in truth op handling.
2098 2016-03-29  Jason Merrill  <jason@redhat.com>
2100         PR c++/70353
2101         * decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics
2102         in constexpr functions.
2104 2016-03-28  Jason Merrill  <jason@redhat.com>
2106         PR c++/70422
2107         PR c++/64266
2108         PR c++/70353
2109         * decl.c, pt.c, constexpr.c: Revert last patch.
2111 2016-03-25  Jason Merrill  <jason@redhat.com>
2112             Martin LiÅ¡ka  <mliska@suse.cz>
2114         PR c++/64266
2115         PR c++/70353
2116         Core issue 1962
2117         * decl.c (cp_fname_init): Decay the initializer to pointer.
2118         (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
2119         DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2120         Don't call cp_finish_decl.
2121         * pt.c (tsubst_expr) [DECL_EXPR]: Set DECL_VALUE_EXPR,
2122         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.  Don't call cp_finish_decl.
2123         * constexpr.c (cxx_eval_constant_expression) [VAR_DECL]:
2124         Handle DECL_VALUE_EXPR.
2126 2016-03-24  Jason Merrill  <jason@redhat.com>
2128         PR c++/70386
2129         * constexpr.c (cxx_eval_bare_aggregate): Handle PMFs.
2131         PR c++/70323
2132         * constexpr.c (cxx_eval_call_expression): Don't cache result if
2133         *overflow_p.
2135 2016-03-24  Patrick Palka  <ppalka@gcc.gnu.org>
2137         PR c++/62212
2138         * tree.c (build_cplus_array_type): Determine type-dependentess
2139         with uses_template_parms instead of with dependent_type_p.
2141 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
2143         PR c++/70347
2144         * typeck.c (process_init_constructor_union): If the initializer
2145         is empty, use the union's NSDMI if it has one.
2147 2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
2149         PR c++/70332
2150         * pt.c (tsubst_copy) [PARM_DECL]: Handle the use of 'this' in an
2151         NSDMI that's part of an aggregrate initialization.
2153 2016-03-23  Jakub Jelinek  <jakub@redhat.com>
2155         PR c++/70001
2156         * constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers
2157         for 1..max even for multi-dimensional arrays.  Call unshare_expr
2158         on it.
2160         PR c++/70323
2161         * constexpr.c (cxx_eval_constant_expression): Diagnose overflow
2162         on TREE_OVERFLOW constants.
2164         PR c++/70376
2165         * cp-gimplify.c (genericize_omp_for_stmt): Don't walk OMP_FOR_CLAUSES
2166         for OMP_TASKLOOP here.
2167         (cp_genericize_r): Handle OMP_TASKLOOP like OMP_TASK, except do call
2168         genericize_omp_for_stmt instead of cp_walk_tree on OMP_BODY.
2170 2016-03-23  Alexandre Oliva  <aoliva@redhat.com>
2171             Jason Merrill  <jason@redhat.com>
2172             Jakub Jelinek  <jakub@redhat.com>
2174         PR c++/69315
2175         * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): Remove.
2176         * decl.c (defer_mark_used_calls, deferred_mark_used_calls): Remove.
2177         (finish_function): Don't set or test them.
2178         * decl2.c (mark_used): Don't handle defer_mark_used_calls.
2180 2016-03-23  Jason Merrill  <jason@redhat.com>
2182         PR c++/70344
2183         * constexpr.c (cxx_eval_call_expression): Catch invalid recursion.
2185 2016-03-23  Marek Polacek  <polacek@redhat.com>
2187         PR c++/69884
2188         * pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes.
2190 2016-03-22  Ilya Enkovich  <enkovich.gnu@gmail.com>
2192         * call.c (build_conditional_expr_1): Always use original
2193         condition type for vector type checks and build.
2195 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
2197         PR c++/70096
2198         * pt.c (tsubst_decl): Clear the DECL_MODE of the new decl.
2200 2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
2202         PR c++/70204
2203         * constexpr.c (non_const_var_error): Check
2204         DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
2206 2016-03-21  Richard Henderson  <rth@redhat.com>
2208         PR c++/70273
2209         * decl.c (notice_forced_label_r): New.
2210         (cp_finish_decl): Use it.
2212 2016-03-21  Jason Merrill  <jason@redhat.com>
2214         PR c++/70285
2215         * cp-gimplify.c (cp_fold) [COND_EXPR]: Handle bit-fields.
2217 2016-03-18  Jason Merrill  <jason@redhat.com>
2219         PR c++/70139
2220         * constexpr.c (cxx_eval_call_expression): Fix trivial copy.
2222         PR c++/70147
2223         * class.c (vptr_via_virtual_p): New.
2224         (most_primary_binfo): Factor out of build_rtti_vtbl_entries.
2225         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Don't clear
2226         a vptr from any virtual base in a not-in-charge 'structor.
2228         * decl.c (build_clobber_this): Factor out of
2229         start_preparsed_function and begin_destructor_body.  Handle
2230         virtual bases better.
2232         * class.c (build_if_in_charge): Split out from build_base_path.
2233         * init.c (expand_virtual_init, expand_default_init): Use it.
2234         * call.c (build_special_member_call): Use it.
2236 2016-03-18  Jakub Jelinek  <jakub@redhat.com>
2238         PR c++/70267
2239         * init.c (build_new_1): Complain and return error_mark_node
2240         if alloc_fn is not _Jv_AllocObject function returning pointer.
2242 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
2244         PR c++/70205
2245         * search.c (adjust_result_of_qualified_name_lookup): Don't
2246         update the BASELINK_BINFO of DECL if the second call
2247         to lookup_base fails.
2249 2016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
2251         PR c++/70218
2252         * parser.c (cp_parser_lambda_expression): Move call to
2253         pop_deferring_access_checks ahead of the call to
2254         cp_parser_end_tentative_firewall.
2256 2016-03-17  Jakub Jelinek  <jakub@redhat.com>
2258         PR c++/70144
2259         * cp-tree.h (magic_varargs_p): Return int instead of bool.
2260         * call.c (magic_varargs_p): Return int instead of bool, return 2 for
2261         Cilk+ reductions, otherwise 1 for magic varargs and 0 for normal
2262         varargs.
2263         (build_over_call): If magic_varargs_p == 2, call reject_gcc_builtin,
2264         if magic_varargs_p == 1, call decay_conversion
2265         instead of mark_type_use.  Don't store error_mark_node arguments to
2266         argarray, instead return error_mark_node.
2268         PR c++/70272
2269         * decl.c (begin_destructor_body): Don't insert clobber if
2270         is_empty_class (current_class_type).
2272 2016-03-17  Marek Polacek  <polacek@redhat.com>
2274         PR c++/70194
2275         * typeck.c (warn_for_null_address): New function.
2276         (cp_build_binary_op): Call it.
2278 2016-03-16  Jason Merrill  <jason@redhat.com>
2280         PR c++/70259
2281         * decl.c (start_preparsed_function): Don't clobber an empty base.
2283 2016-03-16  Jakub Jelinek  <jakub@redhat.com>
2285         PR c++/70147
2286         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Conditionalize
2287         BINFO_VIRTUAL_P vtable clearing on current_in_charge_parm.
2289         PR c++/70147
2290         * cp-ubsan.c (cp_ubsan_maybe_initialize_vtbl_ptrs): Temporarily
2291         set in_base_initializer.
2293 2016-03-15  Marek Polacek  <polacek@redhat.com>
2295         PR c++/70209
2296         * tree.c (strip_typedefs): Call strip_typedefs again on the
2297         DECL_ORIGINAL_TYPE result.
2299 2016-03-15  Jason Merrill  <jason@redhat.com>
2301         PR c++/70095
2302         * pt.c (instantiate_decl): Fix call to variable_template_p.
2304         PR c++/70141
2305         * pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE.
2307 2016-03-14  Casey Carter  <casey@carter.net>
2308             Jason Merrill  <jason@redhat.com>
2310         P0184R0: Generalizing the Range-Based For Loop
2311         * parser.c (cp_convert_range_for): Set the type of __end separately.
2312         (cp_parser_perform_range_for_lookup): Allow different begin/end
2313         types if they are comparable.
2315 2016-03-12  Patrick Palka  <ppalka@gcc.gnu.org>
2317         PR c++/70106
2318         * semantics.c (force_paren_expr): Just build a PAREN_EXPR when
2319         processing_template_decl and EXPR is a SCOPE_REF.
2321 2016-03-10  Patrick Palka  <ppalka@gcc.gnu.org>
2322             Jakub Jelinek  <jakub@redhat.com>
2324         PR c++/70001
2325         * constexpr.c (cxx_eval_vec_init_1): For pre_init case, reuse
2326         return value from cxx_eval_constant_expression from earlier
2327         elements if it is valid constant initializer requiring no
2328         relocations.
2330 2016-03-10  Marek Polacek  <polacek@redhat.com>
2332         PR c++/70153
2333         * cp-gimplify.c (cp_fold): Handle UNARY_PLUS_EXPR.
2335 2016-03-09  Cesar Philippidis  <cesar@codesourcery.com>
2337         * parser.c (cp_parser_oacc_loop): Update cclauses and clauses
2338         when calling c_finish_omp_clauses.
2340 2016-03-08  Jason Merrill  <jason@redhat.com>
2342         * parser.c (cp_parser_diagnose_invalid_type_name): Give helpful
2343         diagnostic for use of "concept".
2344         (cp_parser_requires_clause_opt): And "requires".
2345         (cp_parser_type_parameter, cp_parser_late_return_type_opt)
2346         (cp_parser_explicit_template_declaration): Adjust.
2347         * Make-lang.in (check-c++-all): Add "concepts" to std list.
2349         P0036R0: Unary Folds and Empty Parameter Packs
2350         * pt.c (expand_empty_fold): Remove special cases for *,+,&,|.
2352 2016-03-08  Jakub Jelinek  <jakub@redhat.com>
2354         PR c++/70135
2355         * constexpr.c (cxx_eval_loop_expr): Forget saved values of SAVE_EXPRs
2356         even after the last iteration of the loop.
2358         * decl.c (duplicate_decls): Fix spelling - becuase -> because.
2360 2016-03-07  Patrick Palka  <ppalka@gcc.gnu.org>
2362         PR c++/66786
2363         * pt.c (get_template_info): Handle PARM_DECL.
2364         (template_class_depth): Check DECL_P instead of
2365         VAR_OR_FUNCTION_DECL_P.
2367 2016-03-05  Jason Merrill  <jason@redhat.com>
2369         PR c++/67364
2370         * constexpr.c (cxx_eval_store_expression): Replace
2371         CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too.
2373 2016-03-05  Patrick Palka  <ppalka@gcc.gnu.org>
2375         PR c++/66786
2376         * pt.c (template_class_depth): Given a lambda type, iterate
2377         into its LAMBDA_TYPE_EXTRA_SCOPE field instead of its
2378         TYPE_CONTEXT.  Given a VAR_DECL, iterate into its
2379         CP_DECL_CONTEXT.
2381 2016-03-04  Jason Merrill  <jason@redhat.com>
2383         PR c++/69203
2384         * cp-tree.h (COND_EXPR_IS_VEC_DELETE): New.
2385         * init.c (build_vec_delete_1): Set it.
2386         * constexpr.c (potential_constant_expression_1) [COND_EXPR]: Check it.
2388 2016-03-04  Jakub Jelinek  <jakub@redhat.com>
2390         * decl.c (start_preparsed_function): Don't emit start clobber at the
2391         start of constructor clones.
2393         PR c++/70035
2394         * cp-tree.h (cp_ubsan_maybe_initialize_vtbl_ptrs): New prototype.
2395         * decl.c (start_preparsed_function): Call
2396         cp_ubsan_maybe_initialize_vtbl_ptrs if needed.
2397         * cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs,
2398         cp_ubsan_maybe_initialize_vtbl_ptrs): New functions.
2400 2016-03-04  Jason Merrill  <jason@redhat.com>
2402         PR c++/67364
2403         * constexpr.c (cxx_eval_component_reference): Further tweak.
2405         * constexpr.c (struct constexpr_ctx): Add save_exprs field.
2406         (cxx_eval_loop_expr): Discard SAVE_EXPR values before looping.
2407         (cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set.
2408         (cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize.
2410         PR c++/70067
2411         * tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the
2412         same type.
2414 2016-03-03  Jason Merrill  <jason@redhat.com>
2416         * method.c (synthesized_method_walk): operator= can also be constexpr.
2418         * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get
2419         LAMBDA_EXPR_RETURN_TYPE from the instantiated closure.
2421         PR c++/67164
2422         * pt.c (copy_template_args): New.
2423         (tsubst_pack_expansion): Use it.
2425         * call.c (build_aggr_conv): Use get_nsdmi.
2427         PR c++/51406
2428         * typeck.c (build_static_cast_1): Avoid folding back to lvalue.
2430         PR c++/67364
2431         * constexpr.c (cxx_eval_component_reference): Just return an empty
2432         CONSTRUCTOR for an empty class.
2434 2016-03-01  Jason Merrill  <jason@redhat.com>
2436         PR c++/70036
2437         * parser.c (cp_parser_requires_clause): Call
2438         check_for_bare_parameter_packs.
2440         PR c++/51489
2441         * constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
2442         the operands.
2444         PR c++/69995
2445         * constexpr.c (cxx_eval_call_expression): Unshare arg.
2446         (cxx_eval_constant_expression) [DECL_EXPR]: Unshare init.
2447         [TARGET_EXPR]: Unshare init.
2449 2016-03-01  Patrick Palka  <ppalka@gcc.gnu.org>
2451         PR c++/68948
2452         PR c++/69961
2453         * pt.c (tsubst_baselink): Reinstate the check for an invalid
2454         constructor call.
2456 2016-02-28  Jason Merrill  <jason@redhat.com>
2458         PR c++/69995
2459         * constexpr.c (cxx_eval_store_expression): Unshare init.
2461 2016-02-26  Jason Merrill  <jason@redhat.com>
2463         PR c++/69958
2464         * pt.c (make_argument_pack): New.
2465         (tsubst_copy) [SIZEOF_EXPR]: Handle partial expansion.
2466         (tsubst_copy_and_build): Likewise.
2468 2016-02-25  Jason Merrill  <jason@redhat.com>
2470         PR c++/69889
2471         * cp-tree.h (AGGR_INIT_FROM_THUNK_P): New.
2472         * tree.c (build_aggr_init_expr): Set it.
2473         * semantics.c (simplify_aggr_init_expr): Check it.
2474         * cp-gimplify.c (cp_genericize_r): Don't walk into
2475         a call/aggr_init from a thunk.
2477         PR c++/69842
2478         * method.c (forward_parm): Handle parameter packs.
2479         * lambda.c (maybe_add_lambda_conv_op): Use it for them.
2481         PR c++/67364
2482         * constexpr.c (cxx_eval_component_reference): Don't complain about
2483         unevaluated empty classes.
2485         PR c++/68049
2486         * tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE.
2488 2016-02-25  Patrick Palka  <ppalka@gcc.gnu.org>
2490         PR c++/69736
2491         * cp-tree.h (REF_PARENTHESIZED_P): Adjust documentation.
2492         (maybe_undo_parenthesized_ref): Declare.
2493         * semantics.c (maybe_undo_parenthesized_ref): Split out from
2494         check_return_expr.
2495         (finish_call_expr): Use it.
2496         * typeck.c (check_return_expr): Use it.
2497         * pt.c (tsubst_copy_and_build) [INDIRECT_REF]: Retain the
2498         REF_PARENTHESIZED_P flag.
2500 2016-02-24  Jakub Jelinek  <jakub@redhat.com>
2502         PR c++/69922
2503         * class.c (build_base_path): Set TREE_NO_WARNING on the null_test.
2504         Avoid folding it.
2505         * init.c (build_vec_delete_1, build_delete): Don't fold the non-NULL
2506         tests.
2507         * cp-gimplify.c (cp_fold): For TREE_NO_WARNING comparisons with NULL,
2508         unless they are folded into INTEGER_CST, error_mark_node or some
2509         comparison with NULL, avoid folding them and use either the original
2510         comparison or non-folded comparison of folded arguments.
2511         * cp-ubsan.c (cp_ubsan_instrument_vptr): Set TREE_NO_WARNING on the
2512         comparison, don't fold the comparison right away.
2514 2016-02-24  Jason Merrill  <jason@redhat.com>
2516         PR c++/69323
2517         * friend.c (make_friend_class): Likewise.
2518         * decl.c (lookup_and_check_tag): Diagnose invalid dependent friend.
2520 2016-02-24  Jason Merrill  <jason@redhat.com>
2522         PR c++/69323
2523         * pt.c (instantiate_class_template_1): Set
2524         processing_template_decl before substituting friend_type.
2526 016-02-24  Martin Sebor  <msebor@redhat.com>
2528         PR c++/69912
2529         * tree.c (build_ctor_subob_ref): Compare types' main variants
2530         instead of the types as they are.
2532 2016-02-24  Jason Merrill  <jason@redhat.com>
2534         * decl.c (start_preparsed_function): Condition ctor clobber on
2535         flag_lifetime_dse > 1.
2537         * cp-gimplify.c (cp_fold): Don't fold constexpr calls if -fno-inline.
2539 2016-02-19  Jason Merrill  <jason@redhat.com>
2541         PR c++/69743
2542         * call.c (remaining_arguments): No longer static.
2543         * cp-tree.h: Declare it.
2544         * pt.c (more_specialized_fn): Use it.
2546 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
2547             Bernd Edlinger  <bernd.edlinger@hotmail.de>
2549         * Make-lang.in: Invoke gperf with -L C++.
2550         * cfns.gperf: Remove prototypes for hash and libc_name_p
2551         inlines.
2552         * cfns.h: Regenerated.
2553         * except.c (nothrow_libfn_p): Adjust.
2555 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
2557         PR c++/69850
2558         * rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use
2559         NE_EXPR instead of EQ_EXPR and swap last two arguments on COND_EXPR.
2561 2016-02-19  Patrick Palka  <ppalka@gcc.gnu.org>
2563         PR c++/68948
2564         * pt.c (tsubst_baselink): Don't diagnose an invalid constructor
2565         call here.
2566         * semantics.c (finish_call_expr): Don't assume a constructor
2567         call is dependent if only the "this" pointer is dependent.  When
2568         building a constructor call, always use a dummy object.
2570 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
2572         PR c++/69850
2573         * init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR
2574         condition.
2575         * cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary
2576         operators if folding preserved the binop, just with different
2577         arguments.
2579         PR c++/67767
2580         * parser.c (cp_parser_std_attribute_spec_seq): Don't assume
2581         attr_spec is always single element chain, chain all the attributes
2582         properly together in the right order.
2584 2016-02-18  Jason Merrill  <jason@redhat.com>
2586         * mangle.c (maybe_check_abi_tags): Add for_decl parm.  Call
2587         mangle_decl.
2588         (mangle_decl): Call maybe_check_abi_tags for function scope.
2589         (mangle_guard_variable): Call maybe_check_abi_tags here.
2590         (write_guarded_var_name): Not here.
2592 2016-02-17  Jason Merrill  <jason@redhat.com>
2594         PR c++/65985
2595         * constexpr.c (build_constexpr_constructor_member_initializers):
2596         Handle an additional STATEMENT_LIST.
2598         PR c++/68585
2599         * constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection.
2601         PR c++/68679
2602         * decl2.c (reset_type_linkage_2): Look through member templates.
2604 2016-02-17  Jakub Jelinek  <jakub@redhat.com>
2606         PR c++/69850
2607         * init.c (build_delete): Set TREE_NO_WARNING on ifexp.
2609 2016-02-17  Jason Merrill  <jason@redhat.com>
2611         PR c++/69842
2612         * method.c (forward_parm): Split out from...
2613         (add_one_base_init): ...here.
2614         * lambda.c (maybe_add_lambda_conv_op): Use it.
2616 2016-02-16  Jason Merrill  <jason@redhat.com>
2618         PR c++/10200
2619         PR c++/69753
2620         * call.c, cp-tree.h, name-lookup.c, pt.c, search.c, semantics.c,
2621         tree.c, typeck2.c: Revert earlier changes.
2622         * parser.c (cp_parser_lookup_name): Ignore namespace-scope
2623         non-type templates after -> or .
2625 2016-02-16  Jakub Jelinek  <jakub@redhat.com>
2627         PR c/69835
2628         * typeck.c (cp_build_binary_op): Revert 2015-09-09 change.
2630 2016-02-16  Jason Merrill  <jason@redhat.com>
2632         PR c++/69657
2633         * name-lookup.c (lookup_qualified_name): Add find_hidden parm.
2634         (set_decl_namespace): Pass it.  Complain about finding a hidden friend.
2635         * name-lookup.h: Adjust.
2637 2016-02-16  James Norris  <jnorris@codesourcery.com>
2639         * parser.c (cp_parser_oacc_data_clause_deviceptr): Remove checking.
2640         * semantics.c (finish_omp_clauses): Add deviceptr checking.
2642 2016-02-15  Jakub Jelinek  <jakub@redhat.com>
2644         PR c++/69658
2645         * init.c (expand_default_init): Only call reshape_init
2646         in the direct-initialization from an initializer list case.
2648 2016-02-15  Jason Merrill  <jason@redhat.com>
2650         PR c++/69753
2651         * semantics.c (finish_call_expr): Implicit 'this' does not make
2652         the call dependent.
2653         * search.c (any_dependent_bases_p): Split out...
2654         * name-lookup.c (do_class_using_decl): ...from here.
2655         * call.c (build_new_method_call_1): Don't complain about missing object
2656         if there are dependent bases.  Tweak error.
2657         * tree.c (non_static_member_function_p): Remove.
2658         * pt.c (type_dependent_expression_p): A member template of a
2659         dependent type is dependent.
2660         * cp-tree.h: Adjust.
2662         PR c++/68890
2663         * constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check.
2665 2016-02-12  Patrick Palka  <ppalka@gcc.gnu.org>
2667         PR c++/69098
2668         * pt.c (lookup_and_finish_template_variable): New function,
2669         extracted from ...
2670         (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: ... here.  Use it.
2671         (tsubst_qualified_id): Consider that EXPR might be a variable
2672         template.
2673         * typeck.c (check_template_keyword): Don't emit an error
2674         if DECL is a variable template.
2676 2016-02-12  Jakub Jelinek  <jakub@redhat.com>
2678         * error.c: Spelling fixes - behaviour -> behavior and
2679         neighbour -> neighbor.
2680         * decl.c: Likewise.
2681         * typeck.c (cp_build_binary_op): Fix up behavior spelling in
2682         diagnostics.
2683         * init.c (build_delete): Likewise.
2685 2016-02-11  Jakub Jelinek  <jakub@redhat.com>
2687         PR c/69768
2688         * typeck.c (cp_build_binary_op): cp_fully_fold integer_zerop
2689         arguments for -Waddress warning.  Fix up formatting.
2691 2016-02-11  Paolo Carlini  <paolo.carlini@oracle.com>
2693         PR c++/68726
2694         * pt.c (lookup_template_class_1): Check tsubst return value for
2695         error_mark_node.
2697 2016-02-10  Jason Merrill  <jason@redhat.com>
2699         PR c++/68926
2700         * pt.c (resolve_nondeduced_context): Add complain parm.
2701         (do_auto_deduction): Pass it.
2702         * cvt.c (convert_to_void): Likewise.
2703         * decl.c (cp_finish_decl): Likewise.
2704         * init.c (build_new): Likewise.
2705         * rtti.c (get_tinfo_decl_dynamic): Likewise.
2706         * semantics.c (finish_decltype_type): Likewise.
2707         * typeck.c (decay_conversion): Likewise.
2708         * cp-tree.h: Adjust declaration.
2709         * call.c (standard_conversion): Add complain parm, pass it along.
2710         (implicit_conversion): Pass it.
2712         PR c++/69657
2713         * name-lookup.c (ambiguous_decl): Call remove_hidden_names.
2714         (lookup_name_real_1): Likewise.
2715         (remove_hidden_names): Handle non-functions too.
2717         PR c++/10200
2718         * parser.c (cp_parser_lookup_name): When looking for a template
2719         after . or ->, only consider class templates.
2720         (cp_parser_postfix_dot_deref_expression): Handle the current
2721         instantiation.  Remember a dependent object expression.
2722         * typeck2.c (build_x_arrow): Handle the current instantiation.
2724         * ptree.c (debug_tree): Implement for cp_expr.
2726 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
2728         PR c++/69139
2729         * parser.c (cp_parser_simple_type_specifier): Make the check
2730         for disambiguating between an 'auto' placeholder and an implicit
2731         template parameter more robust.
2733 2016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
2735         PR c++/69283
2736         PR c++/67835
2737         * decl2.c (mark_used): When given a TEMPLATE_DECL, return after
2738         setting its TREE_USED flag.
2740 2016-02-08  Jason Merrill  <jason@redhat.com>
2742         PR c++/69657
2743         * name-lookup.c (do_nonmember_using_decl): Leave anticipated
2744         built-ins alone.
2746 2016-02-08  Jakub Jelinek  <jakub@redhat.com>
2748         PR c++/59627
2749         * parser.c (cp_parser_omp_declare_reduction): Set assembler name
2750         of the DECL_OMP_DECLARE_REDUCTION_P decls.
2752 2016-02-08  Marek Polacek  <polacek@redhat.com>
2754         PR c++/69688
2755         * constexpr.c (clear_cv_and_fold_caches): Renamed from clear_cv_cache.
2756         Call clear_fold_cache.
2757         * cp-tree.h: Adjust declaration.
2758         * decl.c (finish_enum_value_list): Call clear_cv_and_fold_caches
2759         rather than clear_cv_cache and clear_fold_cache.
2760         * typeck2.c (store_init_value): Call clear_cv_and_fold_caches.
2762 2016-02-08  Jason Merrill  <jason@redhat.com>
2764         * cp-tree.h (CONV_FOLD, CONV_BACKEND_CONVERT): New.
2765         * cvt.c (convert): Pass CONV_BACKEND_CONVERT.
2766         (ocp_convert): Use *_maybe_fold.
2767         (cp_convert_to_pointer): Add dofold parameter.
2768         * cp-gimplify.c (cp_fold) [CONVERT_EXPR]: Call convert.
2770 2016-02-05  Martin Sebor  <msebor@redhat.com>
2772         PR c++/69662
2773         * init.c (find_field_init): New function.
2774         (warn_placement_new_too_small): Call it.  Handle one-element arrays
2775         at ends of structures special.
2777 2016-02-05  Jason Merrill  <jason@redhat.com>
2779         PR c++/68948
2780         * semantics.c (finish_expr_stmt): If expr is error_mark_node,
2781         make sure we've seen_error().
2783 2016-02-05  Patrick Palka  <ppalka@gcc.gnu.org>
2785         PR c++/68948
2786         * pt.c (tsubst_baselink): Diagnose an invalid constructor call
2787         if lookup_fnfields returns NULL_TREE and the name being looked
2788         up has the form A::A.
2790 2016-02-04  Patrick Palka  <ppalka@gcc.gnu.org>
2792         * constexpr.c (cxx_eval_binary_expression): Fold equality
2793         comparisons involving PTRMEM_CSTs.
2795 2016-02-04  Jakub Jelinek  <jakub@redhat.com>
2797         * class.c (find_flexarrays): Don't declare dom variable.
2798         (diagnose_flexarray): Likewise.
2800 2016-02-02  Martain Sebor  <msebor@redhat.com>
2802         PR c++/69251
2803         PR c++/69253
2804         PR c++/69290
2805         PR c++/69277
2806         PR c++/69349
2807         * class.c (walk_subobject_offsets): Avoid testing the upper bound
2808         of a flexible array member for equality to null.
2809         (find_flexarrays): Remove spurious whitespace introduced in r231665.
2810         (diagnose_flexarrays): Avoid checking the upper bound of arrays.
2811         (check_flexarrays): Same.
2812         * decl.c (compute_array_index_type): Avoid special case for flexible
2813         array members.
2814         (grokdeclarator): Avoid calling compute_array_index_type for flexible
2815         array members.
2816         * error.c (dump_type_suffix): Revert changes introduced in r231665
2817         and rendered unnecessary by the changes above.
2818         * pt.c (tsubst):  Same.
2819         * tree.c (build_ctor_subob_ref): Handle flexible array members.
2820         * typeck2.c (digest_init_r): Revert changes introduced in r231665.
2821         (process_init_constructor_array): Same.
2822         (process_init_constructor_record): Same.
2824 2016-02-03  Patrick Palka  <ppalka@gcc.gnu.org>
2826         PR c++/69056
2827         * pt.c (try_one_overload): Handle comparing argument packs so
2828         that there is no conflict if we deduced more arguments of an
2829         argument pack than were explicitly specified.
2831 2016-01-31  Jakub Jelinek  <jakub@redhat.com>
2832             Jason Merrill  <jason@redhat.com>
2834         PR c++/68763
2835         * tree.c (strip_typedefs) [FUNCTION_TYPE]: Avoid building a new
2836         function type if nothing is changing.
2838 2016-01-31  Jason Merrill  <jason@redhat.com>
2840         PR c++/69009
2841         * pt.c (partial_specialization_p, impartial_args): New.
2842         (instantiate_decl): Call impartial_args.
2844         * mangle.c (maybe_check_abi_tags): New.
2845         (write_guarded_var_name): Call it.
2846         (mangle_ref_init_variable): Call check_abi_tags.
2848         * pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES
2849         between template and instantiation.
2851 2016-01-29  Jakub Jelinek  <jakub@redhat.com>
2853         PR debug/66869
2854         * decl.c (wrapup_globals_for_namespace): Warn about unused static
2855         function declarations.
2857 2016-01-29  Marek Polacek  <polacek@redhat.com>
2859         PR c++/69509
2860         PR c++/69516
2861         * constexpr.c (cxx_eval_array_reference): Give the "array subscript
2862         out of bound" error earlier.
2863         * init.c (build_vec_init): Change NE_EXPR into GT_EXPR.  Update the
2864         commentary.
2866 2016-01-29  Patrick Palka  <ppalka@gcc.gnu.org>
2868         * name-lookup.c (begin_scope): After reusing a cp_binding_level
2869         structure, update free_binding_level before the structure's
2870         level_chain field gets cleared, not after.
2872 2016-01-28  Jason Merrill  <jason@redhat.com>
2874         PR c++/67407
2875         * search.c (dfs_walk_once, dfs_walk_once_r)
2876         (dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use
2877         hash_set instead of BINFO_MARKED.
2878         (dfs_unmark_r): Remove.
2880 2016-01-28  Patrick Palka  <ppalka@gcc.gnu.org>
2882         PR c++/24208
2883         * parser.c (LEXER_DEBUGGING_ENABLED_P): New macro.
2884         (cp_lexer_debugging_p): Use it.
2885         (cp_lexer_start_debugging): Likewise.
2886         (cp_lexer_stop_debugging): Likewise.
2888 2016-01-27  Marek Polacek  <polacek@redhat.com>
2890         PR c/68062
2891         * typeck.c (cp_build_binary_op): Promote operand to unsigned, if
2892         needed.  Add -Wsign-compare warning.
2894 2016-01-27  Ryan Burn  <contact@rnburn.com>
2896         PR cilkplus/69267
2897         * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed
2898         superfluous post_p argument in call to
2899         cilk_gimplify_call_params_in_spawned_fn.
2901 2016-01-27  Marek Polacek  <polacek@redhat.com>
2903         PR c++/69379
2904         * constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs
2905         wrapped in NOP_EXPRs.
2907 2016-01-27  Martin Sebor  <msebor@redhat.com>
2909         PR c++/69317
2910         * mangle.c (mangle_decl): Reference the correct (saved) version
2911         of the ABI in -Wabi diagnostics.
2913 2016-01-27  Marek Polacek  <polacek@redhat.com>
2915         PR c++/69496
2916         * constexpr.c (cxx_eval_array_reference): Evaluate the number of
2917         elements of the array.
2919 2016-01-26  Jason Merrill  <jason@redhat.com>
2921         PR c++/68949
2922         * constexpr.c (register_constexpr_fundef): Keep the un-massaged body.
2923         (cxx_eval_call_expression): Don't look through clones.
2924         * optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias.
2925         * semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of
2926         maybe-in-charge *tor.
2928 2016-01-26  Jason Merrill  <jason@redhat.com>
2930         PR c++/68782
2931         * constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT
2932         and TREE_SIDE_EFFECTS.
2933         (cxx_eval_constant_expression) [CONSTRUCTOR]: Call
2934         verify_constructor_flags.
2936 2016-01-26  Jakub Jelinek  <jakub@redhat.com>
2938         PR c++/68357
2939         * cp-gimplify.c (cp_fold): If some operand folds to error_mark_node,
2940         return error_mark_node instead of building trees with error_mark_node
2941         operands.
2943 2016-01-26  David Malcolm  <dmalcolm@redhat.com>
2945         PR other/69006
2946         * error.c (print_instantiation_partial_context_line): Add missing
2947         newlines from output for the t == NULL case.
2948         (print_instantiation_partial_context): Remove call to pp_newline.
2950 2016-01-24  Patrick Palka  <ppalka@gcc.gnu.org>
2952         Revert:
2953         2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
2955         PR c++/11858
2956         PR c++/24663
2957         PR c++/24664
2958         * decl.c (grokdeclarator): Don't decay array parameter type to
2959         a pointer type if it's dependent.
2960         (grokparms): Invoke strip_top_quals instead of directly invoking
2961         cp_build_qualified_type.
2962         * pt.c (decay_dependent_array_parm_type): New static function.
2963         (type_unification_real): Call decay_dependent_array_parm_type
2964         to decay a dependent array parameter type to its corresponding
2965         pointer type before unification.
2966         (more_specialized_fn): Likewise.
2967         (get_bindings): Likewise.
2968         * tree.c (cp_build_qualified_type): Trivial typofix in
2969         documentation.
2971 2016-01-23  Martin Sebor  <msebor@redhat.com>
2973         PR c++/58109
2974         PR c++/69022
2975         * decl2.c (is_late_template_attribute): Handle dependent argument
2976         to attribute align and attribute vector_size.
2978 2016-01-21  Jason Merrill  <jason@redhat.com>
2980         PR c++/69392
2981         * lambda.c (lambda_capture_field_type): Handle 'this' specially
2982         for init-capture, too.
2984         PR c++/65687
2985         * decl.c (type_is_deprecated): Don't look into a typedef.
2987         PR c++/40751
2988         PR c++/64987
2989         * decl.c (copy_type_enum): Respect TYPE_USER_ALIGN.
2991         PR c++/43407
2992         * decl.c (start_enum): Add attributes parameter.
2993         * parser.c (cp_parser_enum_specifier): Pass it.
2994         * pt.c (lookup_template_class_1): Pass it.
2995         * cp-tree.h: Adjust.
2997 2016-01-19  Jason Merrill  <jason@redhat.com>
2999         PR c++/59759
3000         * pt.c (convert_template_argument): Handle VAR_DECL properly.
3002 2016-01-19  Marek Polacek  <polacek@redhat.com>
3004         PR c++/68586
3005         * constexpr.c (clear_cv_cache): New.
3006         * cp-gimplify.c (clear_fold_cache): New.
3007         * cp-tree.h (clear_cv_cache, clear_fold_cache): Declare.
3008         * decl.c (finish_enum_value_list): Call them.
3010         PR c++/68965
3011         * pt.c (tsubst_copy): Mark elements in expanded vector as used.
3013 2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
3015         PR c++/11858
3016         PR c++/24663
3017         PR c++/24664
3018         * decl.c (grokdeclarator): Don't decay array parameter type to
3019         a pointer type if it's dependent.
3020         (grokparms): Invoke strip_top_quals instead of directly invoking
3021         cp_build_qualified_type.
3022         * pt.c (decay_dependent_array_parm_type): New static function.
3023         (type_unification_real): Call decay_dependent_array_parm_type
3024         to decay a dependent array parameter type to its corresponding
3025         pointer type before unification.
3026         (more_specialized_fn): Likewise.
3027         (get_bindings): Likewise.
3028         * tree.c (cp_build_qualified_type): Trivial typofix in
3029         documentation.
3031 2016-01-18  Jason Merrill  <jason@redhat.com>
3033         * cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input.
3035         * cp-gimplify.c (cp_fold): Remove unnecessary special cases.
3037         PR c++/68767
3038         * cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify.  Do fold COND_EXPR.
3039         (contains_label_1, contains_label_p): Remove.
3041 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
3043         PR c++/69091
3044         * pt.c (type_dependent_expression_p): For a function template
3045         specialization, a type is dependent iff any of its template
3046         arguments are.
3048 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
3050         * cp-array-notation.c (cp_expand_cond_array_notations): Return
3051         error_mark_node only if find_rank failed, not if it was
3052         successful.
3054 2016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
3056         PR c++/68936
3057         * tree.c (build_min_non_dep_call_vec): Don't retain the
3058         KOENIG_LOOKUP_P flag of the non-dependent expression that's
3059         been built.
3060         (build_min_non_dep_op_overload): Instead, do it here.
3062 2016-01-15  Jakub Jelinek  <jakub@redhat.com>
3064         PR bootstrap/68271
3065         * parser.h (cp_token): Remove pragma_kind field.  Add comment
3066         with number of unused bits.
3067         * parser.c (eof_token): Remove pragma_kind field initializer.
3068         (cp_lexer_get_preprocessor_token): Don't set pragma_kind
3069         field, don't clear CPP_PRAGMA u.value.
3070         (cp_parser_pragma_kind): New function.
3071         (cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel,
3072         cp_parser_omp_construct, cp_parser_initial_pragma,
3073         cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing
3074         pragma_kind field.
3076 2016-01-15  Jason Merrill  <jason@redhat.com>
3078         PR c++/68847
3079         * call.c (build_cxx_call): Use fold_non_dependent_expr.
3081         * typeck2.c (cxx_incomplete_type_diagnostic): Use the location of
3082         value.
3084         PR c++/69257
3085         * typeck.c (decay_conversion): Don't call mark_rvalue_use for
3086         array/function-to-pointer conversion.  Call
3087         complete_type_or_maybe_complain for lvalue-to-rvalue conversion.
3088         * call.c (convert_like_real): Print call context if
3089         decay_conversion errors.
3091 2016-01-14  Tom de Vries  <tom@codesourcery.com>
3093         PR tree-optimization/68773
3094         * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't
3095         set force_output.
3097 2016-01-14  Jason Merrill  <jason@redhat.com>
3099         PR c++/69261
3100         * constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR.
3102 2016-01-12  Marek Polacek  <polacek@redhat.com>
3104         PR c++/68979
3105         * constexpr.c (cxx_eval_check_shift_p): Use permerror rather than
3106         error_at and adjust the return value.
3108 2016-01-12  Jakub Jelinek  <jakub@redhat.com>
3110         PR objc++/68511
3111         PR c++/69213
3112         * cp-gimplify.c (cp_gimplify_expr) <case INIT_EXPR>: Don't return
3113         GS_ERROR whenever seen_error (), only if *expr_p contains
3114         cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed.
3116         PR c++/66808
3117         PR c++/69000
3118         * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO.
3120 2016-01-11  Jason Merrill  <jason@redhat.com>
3122         PR c++/69131
3123         * method.c (walk_field_subobs): Add dtor_from_ctor parm.
3124         (process_subob_fn): Likewise.  Don't consider triviality if true.
3125         (synthesize_method_walk): Pass it.
3127 2016-01-11  David Malcolm  <dmalcolm@redhat.com>
3129         PR c++/68795
3130         * parser.c (cp_parser_postfix_expression): Initialize
3131         close_paren_loc to UNKNOWN_LOCATION; only use it if
3132         it has been written to by
3133         cp_parser_parenthesized_expression_list.
3134         (cp_parser_parenthesized_expression_list): Document the behavior
3135         with respect to the CLOSE_PAREN_LOC param.
3137 2016-01-11  Jakub Jelinek  <jakub@redhat.com>
3139         PR c++/69211
3140         * cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR
3141         folded operands have side-effects, but folding changed any of them,
3142         build a new tree with the folded operands instead of returning the
3143         unfolded tree.
3145 2016-01-09  Marek Polacek  <polacek@redhat.com>
3147         PR c++/69113
3148         * decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set.
3150 2016-01-09  Jakub Jelinek  <jakub@redhat.com>
3152         PR c++/69164
3153         * class.c (layout_class_type): Use copy_node to copy FIELD_DECLs.
3155 2016-01-08  Jason Merrill  <jason@redhat.com>
3157         PR c++/69158
3158         * constexpr.c (cxx_fold_indirect_ref): Handle array type differing
3159         in completion.
3161 2016-01-08  Marek Polacek  <polacek@redhat.com>
3163         PR c++/68449
3164         * constexpr.c (cxx_eval_constant_expression): Handle NULL initializer.
3166 2016-01-08  Jason Merrill  <jason@redhat.com>
3168         * constexpr.c (cxx_eval_call_expression): Remove convert_to_void
3169         workaround.
3171         PR c++/68983
3172         PR c++/67557
3173         * cvt.c (convert_to_void): Don't strip a TARGET_EXPR of
3174         TREE_ADDRESSABLE type.
3176         PR c++/68983
3177         PR c++/67557
3178         * call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR.
3180 2016-01-05  Nathan Sidwell  <nathan@acm.org>
3182         PR c++/58583
3183         * pt.c (build_non_dependent_expr): Don't try a checking fold when
3184         parsing an nsdmi.
3186 2016-01-04  Jakub Jelinek  <jakub@redhat.com>
3188         Update copyright years.
3190 Copyright (C) 2016 Free Software Foundation, Inc.
3192 Copying and distribution of this file, with or without modification,
3193 are permitted in any medium without royalty provided the copyright
3194 notice and this notice are preserved.