[NDS32] Add intrinsic functions for TLB operation and data prefech.
[official-gcc.git] / gcc / cp / ChangeLog
blobba323bf7c20e9e4179489d817840cc5b9b994418
1 2018-04-06  Jason Merrill  <jason@redhat.com>
3         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
4         * pt.c (extract_locals_r): Remember local typedefs.
6 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
8         PR c++/84269
9         * name-lookup.c (struct std_name_hint): Move out of
10         get_std_name_hint; add field "min_dialect".
11         (get_std_name_hint): Add min_dialect values to all initializers.
12         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
13         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
14         <shared_mutex>, <string_view>, <thread>, and <variant>.
15         Add fstream, ifstream, and ofstream to <fstream>.
16         Add istringstream, ostringstream, and stringstream to <sstream>.
17         Add basic_string to <string>.
18         Add tuple_element and tuple_size to <tuple>.
19         Add declval to <utility>.
20         Fix ordering of <queue> and <tuple>.
21         Return a std_name_hint, rather than a const char *.
22         (get_cxx_dialect_name): New function.
23         (maybe_suggest_missing_std_header): Detect names that aren't yet
24         available in the current dialect, and instead of suggesting a
25         missing #include, warn about the dialect.
27 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
29         PR c++/85210
30         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
31         errorcount is set if tsubst doesn't return a VAR_DECL.
33 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
35         PR c++/85021
36         * name-lookup.c (using_directives_contain_std_p): New function.
37         (has_using_namespace_std_directive_p): New function.
38         (suggest_alternatives_for): Simplify if/else logic using early
39         returns.  If no candidates were found, and there's a
40         "using namespace std;" directive, call
41         maybe_suggest_missing_std_header.
42         (maybe_suggest_missing_header): Split later part of the function
43         into..
44         (maybe_suggest_missing_std_header): New.
46 2018-04-06  Jason Merrill  <jason@redhat.com>
48         PR c++/85242 - ICE with class definition in template parm.
49         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
50         processing_template_parmlist.
52         PR c++/85240 - LTO ICE with using of undeduced auto fn.
53         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
55 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
57         PR c++/85209
58         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
59         is not prev, if prev == decl.
61         PR c++/85208
62         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
63         maybe_apply_pragma_weak here...
64         (cp_maybe_mangle_decomp): ... but call it here instead.
66 2018-04-05  Jason Merrill  <jason@redhat.com>
68         PR c++/85136 - ICE with designated init in template.
69         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
70         designated initializer.
71         (check_array_designated_initializer): Update ce->index with the
72         constant value.
74         PR c++/83808 - ICE with VLA initialization.
75         * typeck2.c (process_init_constructor_array): Don't require a VLA
76         initializer to have VLA type.
78 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
80         PR c++/80956
81         * call.c (convert_like_real): Fail gracefully for a broken
82         std::initializer_list, missing a definition.
84         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
86 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
88         PR c++/84792
89         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
90         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
92 2018-04-05  Jason Merrill  <jason@redhat.com>
94         PR c++/82152 - ICE with class deduction and inherited ctor.
95         * pt.c (do_class_deduction): Ignore inherited ctors.
97         PR c++/84665 - ICE with array of empty class.
98         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
100         PR c++/85228 - ICE with lambda in enumerator in template.
101         * pt.c (bt_instantiate_type_proc): Don't assume
102         CLASSTYPE_TEMPLATE_INFO is non-null.
104 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
106         Implement P0969
107         * decl.c (find_decomp_class_base): Check accessibility instead
108         of declared access, adjust diagnostic.
110 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
112         Implement P0961
113         * decl.c (get_tuple_decomp_init): Check the templatedness
114         of a member get.
116 2018-04-05  Jason Merrill  <jason@redhat.com>
118         PR c++/85200 - ICE with constexpr if in generic lambda.
119         * pt.c (extract_locals_r): Don't record the local specs of variables
120         declared within the pattern.
122 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
124         PR c++/84979
125         * pt.c (check_auto_in_tmpl_args): New.
126         (tsubst_qualified_id): Use it to reject template args
127         referencing auto for non-type templates.
128         * parser.c (cp_parser_template_id): Likewise.
129         * cp-tree.h (check_auto_in_tmpl_args): Declare.
130         * typeck2.c (build_functional_cast): Report correct location
131         for invalid use of auto.
133 2018-04-04  Jason Merrill  <jason@redhat.com>
135         PR c++/85215 - ICE with copy-init from conversion.
136         * call.c (merge_conversion_sequences): Fix type of direct binding
137         sequence.
139         PR c++/84938 - ICE with division by ~-1.
140         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
142         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
143         * parser.c (cp_parser_mem_initializer_list): Call
144         check_for_bare_parameter_packs.
146 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
148         PR inline-asm/85172
149         * constexpr.c (cxx_eval_builtin_function_call): For calls to
150         builtin_valid_in_constant_expr_p functions, don't call
151         cxx_eval_constant_expression if argument is not
152         potential_constant_expression.
154         PR c++/85146
155         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
156         argument.
157         * semantics.c (calculate_bases): Add complain argument.  Use
158         complete_type_or_maybe_complain instead of just complete_type and
159         return an empty vector if it fails.  Move make_tree_vector () call
160         after early return.  Formatting fixes.
161         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
162         end.
163         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
164         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
165         calculate_direct_bases callers, formatting fixes.
167 2018-04-04  Jason Merrill  <jason@redhat.com>
169         PR c++/85006 - -fconcepts ICE with A<auto...> return type
170         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
172         PR c++/85200 - ICE with constexpr if in generic lambda.
173         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
175         PR c++/84221 - bogus -Wunused with attribute and template.
176         * decl2.c (is_late_template_attribute): Handle unused and used
177         normally on non-TYPE_DECL.
179         PR c++/85135 - ICE with omitted template arguments.
180         * decl.c (grokdeclarator): Catch deduced class type in trailing
181         return type.
183         PR c++/85133 - ICE with missing concept initializer.
184         * decl.c (cp_finish_decl): If a concept initializer is missing, use
185         true.
187         PR c++/85118 - wrong error with generic lambda and std::bind.
188         * call.c (add_template_conv_candidate): Disable if there are any
189         call operators.
191         PR c++/85141 - ICE with compound assignment and static member fn.
192         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
193         compound assignment.
195         PR c++/85148 - ICE with 'this' in array NSDMI.
196         * tree.c (replace_placeholders_r): Use handled_component_p.
198 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
200         PR c++/65923
201         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
202         * parser.c (cp_parser_unqualified_id): ..not here.
204 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
206         PR c++/84943
207         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
208         used.
209         * decl2.c (mark_used): Return without effects if tf_conv.
211 2018-04-03  Jason Merrill  <jason@redhat.com>
213         PR c++/85092 - C++17 ICE with unused list constructor.
214         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
215         from a TARGET_EXPR.
217         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
218         * constexpr.c (cxx_eval_builtin_function_call): Only defer
219         __builtin_constant_p if ctx->quiet.
221 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
223         PR c++/84768
224         * pt.c (rewrite_template_parm): If the first argument is
225         error_mark_node return it immediately.
226         (build_deduction_guide): Check the return value of the
227         latter for error_mark_node.
228         (do_class_deduction): Check the return value of the latter.
230 2018-04-03  Jason Merrill  <jason@redhat.com>
232         * semantics.c (finish_if_stmt_cond): Use
233         instantiation_dependent_expression_p.
235         PR c++/85149 - generic lambda and constexpr if.
236         * pt.c (build_extra_args, add_extra_args): Split from
237         tsubst_pack_expansion.
238         (tsubst_expr) [IF_STMT]: Use them.
239         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
241         * typeck.c (merge_types): Limit matching attribute shortcut to
242         the default case.
244 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
246         PR c++/85147
247         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
249         PR c++/85140
250         * name-lookup.c (handle_namespace_attrs): Return early if attributes
251         is error_mark_node.
253         PR c++/85134
254         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
255         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
256         instead for static data members clear init and set DECL_EXTERNAL.
258 2018-04-02  Jason Merrill  <jason@redhat.com>
260         PR c++/64095 - auto... parameter pack.
261         * parser.c (cp_parser_parameter_declaration): Handle turning autos
262         into packs here.
263         (cp_parser_parameter_declaration_list): Not here.
265 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
267         PR c++/85027
268         * class.c (instantiate_type): Peel off SAVE_EXPR before
269         BASELINK.
271 2018-03-30  Jason Merrill  <jason@redhat.com>
273         * typeck2.c (process_init_constructor_record): Use
274         init_list_type_node for the CONSTRUCTOR around an anonymous union
275         designated initializer.
277 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
279         PR c++/84791
280         * semantics.c (finish_omp_reduction_clause): If
281         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
282         even if processing_template_decl.
284 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
286         PR c++/84269
287         * name-lookup.c (get_std_name_hint): Add names from <memory>,
288         <tuple>, and <utility>.
290 2018-03-29  Jason Merrill  <jason@redhat.com>
292         PR c++/85093 - too many template args with pack expansion.
293         * pt.c (coerce_template_parms): Keep pack expansion args that will
294         need to be empty.
296 2018-03-29  Jason Merrill  <jason@redhat.com>
298         * pt.c (build_non_dependent_expr): Propagate expr location.
300 2018-03-27  Jason Merrill  <jason@redhat.com>
302         PR c++/85060 - wrong-code with call to base member in template.
303         * search.c (any_dependent_bases_p): Check uses_template_parms
304         rather than processing_template_decl.
306 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
308         PR c++/85110
309         * typeck.c (convert_for_assignment): When complaining due to
310         conversions for an argument, attempt to use the location of the
311         argument.
313 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
315         PR c++/85028
316         * pt.c (tsubst_default_argument): Early return if the type of the
317         parameter is erroneous.
319 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
321         PR c++/84973
322         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
323         templates.
325         PR c++/84968
326         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
328 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
330         PR c++/85067
331         * method.c (defaulted_late_check): Partially revert r253321 changes,
332         do not early return upon error.
334 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
336         PR c++/85077
337         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
338         type call fold to generate VECTOR_CSTs when possible.
340         PR c++/85076
341         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
342         return it right away.
344 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
346         * search.c (check_final_overrider): Use inform instead of error
347         for the diagnostics of the overridden functions.  Tweak wording.
349 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
351         PR c++/85068
352         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
353         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
355 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
356             Jason Merrill  <jason@redhat.com>
358         PR c++/84632
359         * init.c (build_aggr_init): When initializing from array,
360         reject anything but CONSTRUCTORs and TARGET_EXPRs.
361         (build_vec_init): Handle separately ARRAY_TYPEs.
363 2018-03-26  Jason Merrill  <jason@redhat.com>
365         PR c++/85062 - ICE with alignas in wrong place.
366         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
367         here.
369         PR c++/85049 - ICE with __integer_pack.
370         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
371         * cp-tree.h (TEMPLATE_PARM_P): New.
373 2018-03-23  Jason Merrill  <jason@redhat.com>
375         PR c++/78489 - wrong SFINAE behavior.
377         PR c++/84489
378         * pt.c (type_unification_real): Don't defer substitution failure.
380 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
382         PR c++/85015
383         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
384         result.
386         PR c++/84942
387         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
388         cp_build_unary_op call with gcc_unreachable ().
390 2018-03-23  Marek Polacek  <polacek@redhat.com>
392         PR c++/85045
393         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
394         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
395         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
397 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
399         Implement P0962
400         * parser.c (cp_parser_perform_range_for_lookup): Change
401         the condition for deciding whether to use members.
403 2018-03-23  Marek Polacek  <polacek@redhat.com>
405         PR c++/85033
406         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
408 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
410         PR c++/71251
411         * parser.c (cp_parser_alias_declaration): Call
412         parser_check_template_parameters.
414         PR c++/84789
415         * pt.c (resolve_typename_type): Drop assert that stopped
416         simplification to template-independent types.  Add assert to
417         verify the initial scope is template dependent.
418         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
419         Reparse the id expression as a type-name, not a declarator.
421         PR c++/84729
422         * init.c (build_vec_init): Error at parenthesized array init.
424         PR c++/84610
425         PR c++/84642
426         PR c++/84942
427         * cp-tree.h (temp_override): New template class, generalizing
428         a cleanup that was only used...
429         * parser.c (cp_parser_parameter_declaration_clause):
430         ... here for auto_is_implicit_function_template_parm_p.
431         (cp_parser_gnu_attributes_opt): Use it here as well.
432         (cp_parser_std_attribute): Likewise.
434 2018-03-22  Marek Polacek  <polacek@redhat.com>
436         PR c++/84854
437         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
438         is boolean.
440 2018-03-21  Jason Merrill  <jason@redhat.com>
442         PR c++/81311 - wrong C++17 overload resolution.
443         * call.c (build_user_type_conversion_1): Remove C++17 code.
444         (conv_binds_ref_to_prvalue): New.
445         (build_over_call): Handle C++17 copy elision.
446         (build_special_member_call): Only do C++17 copy elision here if the
447         argument is already the right type.
449 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
451         PR c++/71965
452         * init.c (build_vec_init): Silence error, former sorry,
453         without tf_error.
455         PR c++/84610
456         PR c++/84642
457         * parser.c (abort_fully_implicit_template_p): New.
458         (cp_parser_skip_to_end_of_statement): Use it.
459         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
460         (finish_fully_implicit_template_p): Clear
461         implicit_template_parms and implicit_template_scope.
463 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
465         PR c++/84972
466         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
467         error_mark_node when check_array_designated_initializer fails.
469 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
471         PR c++/84961
472         * cp-tree.h (genericize_compound_lvalue): Declare.
473         * typeck.c (genericize_compound_lvalue): New function.
474         (unary_complex_lvalue, cp_build_modify_expr): Use it.
475         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
476         and PREDECREMENT_EXPR in output and "m" constrained input operands with
477         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
478         COMPOUND_EXPR operand.
480 2018-03-21  Nathan Sidwell  <nathan@acm.org>
482         PR c++/85008
483         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
484         * decl2.c (vague_linkage_p): Likewise.
486 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
488         PR c++/84994
489         * constexpr.c (constexpr_fn_retval): Make non-"static".
490         * cp-tree.h (constexpr_fn_retval): New decl.
491         * search.c (direct_accessor_p): Update leading comment.
492         (reference_accessor_p): Likewise.
493         (field_accessor_p): Replace check that function body is a
494         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
495         indentation of "field_type" decl.
497 2018-03-21  Nathan Sidwell  <nathan@acm.org>
499         PR c++/84804
500         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
501         complete classes.
503 2018-03-21  Martin Sebor  <msebor@redhat.com>
505         PR c++/84850
506         * call.c (first_non_public_field): New template and function.
507         (first_non_trivial_field): New function.
508         (maybe_warn_class_memaccess): Call them.
510 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
512         PR c++/84892
513         * search.c (field_accessor_p): Use class_of_this_parm rather than
514         type_of_this_parm, to check that "this" is a "const T *", rather
515         than a "T *const".
517 2018-03-21  Nathan Sidwell  <nathan@acm.org>
519         * class.c (finish_struct_anon_r): Refactor, deprecate anything
520         other than public non-static data members.
521         * parser.c (cp_parser_init_declarator): Deprecate attributes after
522         parenthesized initializer.
524         PR c++/84836
525         * name-lookup.c (update_binding): Correct logic for local binding
526         update.
528 2018-03-21  Marek Polacek  <polacek@redhat.com>
530         PR c++/71638, ICE with NSDMI and reference.
531         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
532         even when we replace an element.
534 2018-03-20  Marek Polacek  <polacek@redhat.com>
536         PR c++/84978, ICE with NRVO.
537         * constexpr.c (cxx_eval_constant_expression): Handle the case when
538         a RESULT_DECL isn't in the hash map.
540 2018-03-20  Jason Merrill  <jason@redhat.com>
542         PR c++/84978, ICE with NRVO.
543         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
544         (cp_get_callee_fndecl_nofold): New.
545         * cp-gimplify.c (cp_genericize_r): Use it instead.
546         * call.c (check_self_delegation): Likewise.
548 2018-03-20  Nathan Sidwell  <nathan@acm.org>
550         PR c++/84962
551         * name-lookup.c (pushdecl_class_level): Push anon-struct's
552         member_vec, if there is one.
554         PR c++/84970
555         * cp-tree.h (lookup_list_keep): Declare.
556         * tree.c (lookup_list_keep): New, broken out of ...
557         (build_min): ... here.  Call it.
558         * decl.c (cp_finish_decl): Call lookup_list_keep.
560 2018-03-19  Jason Merrill  <jason@redhat.com>
562         PR c++/84937 - ICE with class deduction and auto.
563         * pt.c (rewrite_template_parm): Fix auto handling.
565 2018-03-19  Marek Polacek  <polacek@redhat.com>
567         PR c++/84925
568         * pt.c (enclosing_instantiation_of): Check if fn is null.
570         PR c++/84927
571         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
572         as we evaluate the elements.
573         (cxx_eval_constant_expression): Verify constructor's flags
574         unconditionally.
576 2018-03-19  Jason Merrill  <jason@redhat.com>
578         PR c++/71834 - template-id with too few arguments.
579         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
581 2018-03-19  Nathan Sidwell  <nathan@acm.org>
583         PR c++/84835
584         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
585         * pt.c (build_template_decl): Propagate language linkage.
587         PR c++/84812
588         * name-lookup.c (set_local_extern_decl_linkage): Defend against
589         ambiguous lookups.
591 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
593         PR c/84910
594         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
595         diagnostics.
596         * method.c (synthesize_method): Likewise.
597         * pt.c (convert_nontype_argument): Likewise.
599 2018-03-16  Jason Merrill  <jason@redhat.com>
601         PR c++/84720 - ICE with rvalue ref non-type argument.
602         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
603         (convert_nontype_argument): Revert earlier change.
605         PR c++/80227 - SFINAE and negative array size.
606         * decl.c (compute_array_index_type): Use
607         build_converted_constant_expr and valid_constant_size_p.
609         PR c++/84906 - silent wrong code with ambiguous conversion.
610         * call.c (build_user_type_conversion_1): Set need_temporary_p on
611         ambiguous conversion.
612         (convert_like_real): Check it.
614         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
615         * call.c (build_special_member_call): Don't convert an init-list
616         argument directly to the class type.
618 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
620         PR c++/79937
621         PR c++/82410
622         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
623         (find_placeholder): Declare.
624         * tree.c (struct replace_placeholders_t): Add exp member.
625         (replace_placeholders_r): Don't walk into ctors with
626         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
627         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
628         (replace_placeholders): Initialize data.exp.
629         (find_placeholders_r, find_placeholders): New functions.
630         * typeck2.c (process_init_constructor_record,
631         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
632         if adding NSDMI on which find_placeholder returns true.
633         * call.c (build_over_call): Don't call replace_placeholders here.
634         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
635         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
636         TARGET_EXPR_INITIAL.
637         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
638         ctor.
640 2018-03-16  Jason Merrill  <jason@redhat.com>
642         PR c++/83911 - ICE with multiversioned constructor.
643         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
644         dispatchere here.
645         * call.c (build_over_call): Not here.
647 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
649         PR c++/84874
650         * decl.c (reshape_init_class): Don't assert d->cur->index == field
651         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
653 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
655         PR c++/84222
656         * cp-tree.h (cp_warn_deprecated_use): Declare.
657         * tree.c (cp_warn_deprecated_use): New function.
658         * typeck2.c (build_functional_cast): Use it.
659         * decl.c (grokparms): Likewise.
660         (grokdeclarator): Likewise.  Temporarily push nested class scope
661         around grokparms call for out of class member definitions.
663 2018-03-14  Jason Merrill  <jason@redhat.com>
665         PR c++/84820 - no error for invalid qualified-id.
666         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
667         cp_error_declarator.
669         PR c++/84801 - ICE with unexpanded pack in lambda.
670         * pt.c (check_for_bare_parameter_packs): Don't return early for a
671         lambda in non-template context.
673         PR c++/81236 - auto variable and auto function
674         * pt.c (tsubst_baselink): Update the type of the BASELINK after
675         mark_used.
677 2018-03-14  Jason Merrill  <jason@redhat.com>
679         PR c++/83916 - ICE with template template parameters.
680         * pt.c (convert_template_argument): Don't substitute into type of
681         non-type parameter if we don't have enough arg levels.
682         (unify): Likewise.
684 2018-03-14  Marek Polacek  <polacek@redhat.com>
686         PR c++/84596
687         * semantics.c (finish_static_assert): Check
688         instantiation_dependent_expression_p instead of
689         {type,value}_dependent_expression_p.
691 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
692             Jason Merrill  <jason@redhat.com>
694         PR c++/82336 - link error with list-init default argument.
695         * decl.c (check_default_argument): Unshare an initializer list.
697 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
699         PR c++/84843
700         * decl.c (duplicate_decls): For redefinition of built-in, use error
701         and return error_mark_node.  For redeclaration, return error_mark_node
702         rather than olddecl if !flag_permissive.
704 2018-03-13  Jason Merrill  <jason@redhat.com>
706         PR c++/82565 - ICE with concepts and generic lambda.
707         * pt.c (instantiate_decl): Clear fn_context for lambdas.
709 2018-03-13  Jason Merrill  <jason@redhat.com>
711         PR c++/84720 - ICE with rvalue ref non-type argument.
712         * pt.c (convert_nontype_argument): Handle rvalue references.
714         PR c++/84839 - ICE with decltype of parameter pack.
715         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
716         instantiating dummy parms.
718         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
719         parameter even without -Wpedantic.
721         PR c++/84798 - ICE with auto in abstract function declarator.
722         * parser.c (cp_parser_parameter_declaration_clause): Check
723         parser->default_arg_ok_p.
725 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
727         PR c++/84808
728         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
729         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
730         sizetype.  Formatting fixes.
732 2018-03-12  Jason Merrill  <jason@redhat.com>
734         PR c++/84355 - ICE with deduction for member class template.
735         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
736         CLASS_PLACEHOLDER_TEMPLATE.
738         PR c++/84802 - ICE capturing uninstantiated class.
739         * lambda.c (build_capture_proxy): Call complete_type.
741 2018-03-09  Jason Merrill  <jason@redhat.com>
743         PR c++/84770 - ICE with typedef and parameter pack.
744         * pt.c (verify_unstripped_args_1): Split out from
745         verify_unstripped_args.
747         PR c++/84785 - ICE with alias template and default targs.
748         * pt.c (type_unification_real): Set processing_template_decl if
749         saw_undeduced == 1.
751         PR c++/84752 - ICE with capture of constexpr array.
752         * call.c (standard_conversion): Set rvaluedness_matches_p on the
753         identity conversion under ck_lvalue.
755 2018-03-09  Jason Merrill  <jason@redhat.com>
756             Paolo Carlini  <paolo.carlini@oracle.com>
758         PR c++/71169
759         PR c++/71832
760         * pt.c (any_erroneous_template_args_p): New.
761         * cp-tree.h (any_erroneous_template_args_p): Declare it.
762         * parser.c (cp_parser_class_specifier_1): Use it.
764 2018-03-09  Jason Merrill  <jason@redhat.com>
766         PR c++/84726 - unnecessary capture of constant vars.
767         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
768         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
769         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
770         * lambda.c (is_constant_capture_proxy)
771         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
772         (prune_lambda_captures): New.
773         (finish_lambda_function): Call prune_lambda_captures.
775 2018-03-09  Jason Merrill  <jason@redhat.com>
776             Jakub Jelinek  <jakub@redhat.com>
778         PR c++/84076
779         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
780         build ADDR_EXPR with REFERENCE_TYPE.
781         (build_over_call): For purposes of check_function_arguments, if
782         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
783         its operand rather than the argument itself.
785 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
787         PR c++/84724
788         * decl.c (duplicate_decls): Don't override __* prefixed builtins
789         except for __[^b]*_chk, instead issue permerror and for -fpermissive
790         also a note and return olddecl.
792 2018-03-09  Nathan Sidwell  <nathan@acm.org>
794         PR c++/84733
795         * name-lookup.c (do_pushdecl_with_scope): Only clear
796         current_function_decl when pushing a non-class (i.e. namespace)
797         scope.
799 2018-03-08  Jason Merrill  <jason@redhat.com>
800             Jakub Jelinek  <jakub@redhat.com>
802         PR c++/80598
803         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
804         not calling mark_used for the benefit of -Wunused-function warning.
806 2018-03-06  Jason Merrill  <jason@redhat.com>
808         * lambda.c (is_capture_proxy_with_ref): Remove.
809         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
811 2018-03-06  Marek Polacek  <polacek@redhat.com>
813         PR c++/84684
814         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
815         arguments.
817 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
819         PR c++/84231
820         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
821         only while processing template decls.
822         * typeck.c (build_x_conditional_expr): Move wrapping of
823         reference type around type...
824         * call.c (build_conditional_expr_1): ... here.  Rename
825         is_lvalue to is_glvalue.
826         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
827         INDIRECT_REF of COND_EXPR too.
829         PR c++/84593
830         * init.c (build_zero_init_1): Zero-initialize references.
832         PR c++/84492
833         * semantics.c (finish_stmt_expr_expr): Reject unresolved
834         overloads used as stmt expr values.
836 2018-03-05  Jason Merrill  <jason@redhat.com>
838         PR c++/84708 - ICE with lambda in local class NSDMI.
839         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
840         context.
842 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
844         PR c++/84684
845         * constexpr.c (constexpr_call_hasher::equal): Return false if
846         lhs->hash != rhs->hash.  Change return 1 to return true and
847         return 0 to return false.
849 2018-03-05  Nathan Sidwell  <nathan@acm.org>
851         PR c++/84702
852         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
854 2018-03-05  Marek Polacek  <polacek@redhat.com>
856         PR c++/84707
857         * decl.c (duplicate_decls): Check DECL_NAME before accessing
858         UDLIT_OPER_P.
860 2018-03-05  Nathan Sidwell  <nathan@acm.org>
862         PR c++/84694
863         * friend.c (do_friend): Restore check for identifier_p inside
864         TEMPLATE_ID_EXPR.
866 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
868         PR c++/84618
869         * parser.c (cp_parser_lambda_introducer): Reject any capture not
870         involving a VAR_DECL or a PARM_DECL.
872 2018-03-05  Pádraig Brady  <P@draigBrady.com>
873             Jason  Merrill  <jason@redhat.com>
874             Nathan Sidwell  <nathan@acm.org>
876         PR c++/84497
877         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
879 2018-03-03  Jason Merrill  <jason@redhat.com>
881         PR c++/84686 - missing volatile loads.
882         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
884 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
886         PR c++/71464
887         * optimize.c (maybe_thunk_body): Bail out immediately if either
888         fns[0] or fns[1] is null.
890 2018-03-02  Marek Polacek  <polacek@redhat.com>
892         PR c++/84578
893         * constexpr.c (get_array_or_vector_nelts): New.
894         (cxx_eval_array_reference): Use it.
895         (cxx_eval_vec_init_1): Likewise.
896         (cxx_eval_store_expression): Likewise.
898 2018-03-02  Jason Merrill  <jason@redhat.com>
900         * semantics.c (force_paren_expr): Remove redundant test.
902 2018-03-02  Marek Polacek  <polacek@redhat.com>
904         PR c++/84663
905         * decl.c (cp_complete_array_type): Check error_mark_node.
907         PR c++/84664
908         * typeck.c (cp_perform_integral_promotions): Check the result of
909         mark_rvalue_use.
911 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
913         PR c++/84662
914         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
915         RETURN instead of return.
916         <case POINTER_PLUS_EXPR>: Likewise.
917         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
918         it instead of wrapping it into CONVERT_EXPR.
920 2018-03-02  Jason Merrill  <jason@redhat.com>
922         Fix MIPS16 ICE.
923         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
925 2018-03-02  Marek Polacek  <polacek@redhat.com>
927         PR c++/84590
928         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
929         wrapped in VIEW_CONVERT_EXPR.
931 2018-03-01  Martin Sebor  <msebor@redhat.com>
933         PR c++/84294
934         * decl.c (check_redeclaration_no_default_args): Merge attributes
935         specified on redeclarations of the same function template.
936         Remove dead code.
938 2018-03-01  Marek Polacek  <polacek@redhat.com>
939             Jason Merrill  <jason@redhat.com>
941         PR c++/84582
942         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
943         a template.
944         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
945         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
946         of instantiate_non_dependent_expr.
947         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
949 2018-03-01  Nathan Sidwell  <nathan@acm.org>
951         PR c++/84434
952         * name-lookup.c (member_vec_dedup): Remove manually peeled
953         iteration.  Ignore dependent ctor inheritance.
955 2018-03-01  Jason Merrill  <jason@redhat.com>
957         PR c++/71569 - decltype of template.
958         * parser.c (cp_parser_decltype_expr): Handle missing template args.
960 2018-03-01  Marek Polacek  <polacek@redhat.com>
962         PR c++/84596
963         * constexpr.c (require_rvalue_constant_expression): New function.
964         * cp-tree.h: Declare it.
965         * semantics.c (finish_static_assert): Use it instead of
966         require_potential_rvalue_constant_expression.
968 2018-03-01  Jason Merrill  <jason@redhat.com>
969             Alexandre Oliva <aoliva@redhat.com>
971         PR c++/71569 - ICE with redundant args on member variable template.
972         * decl.c (start_decl): Handle partial specialization of member
973         variable template.
974         * pt.c (determine_specialization): Allow partial specialization
975         of member variable template without specializing enclosing class.
976         (process_partial_specialization): Improve error message.
978 2018-02-28  Jason Merrill  <jason@redhat.com>
980         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
981         * pt.c (determine_specialization): Check ref-qualifier.
983 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
985         PR c++/84609
986         * parser.c (cp_parser_attributes_opt): Formatting fix.
987         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
988         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
989         New functions.
990         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
991         instead of tentative parse to peek over optional attribute tokens
992         to check for CPP_COLON after them.
994         PR c++/83871
995         PR c++/83503
996         * pt.c (INCLUDE_STRING): Remove define.
997         (warn_spec_missing_attributes): Use pretty_printer instead of
998         std::string.  Fix up inform call so that the list of attributes
999         is in %s argument.
1001 2018-02-28  Martin Sebor  <msebor@redhat.com>
1003         PR testsuite/84617
1004         * decl.c (duplicate_decls): Fully merge attributes const, pure,
1005         and malloc.
1007 2018-02-28  Nathan Sidwell  <nathan@acm.org>
1009         PR c++/84602
1010         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
1011         * name-lookup.c (fields_linear_search): Look in an anon-aggr
1012         regardless of want_type.
1013         (search_anon_aggr): Just use get_class_binding_direct.
1015 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1017         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
1018         inform_n.
1020 2018-02-27  Martin Sebor  <msebor@redhat.com>
1022         * pt.c: Avoid including <string> directly.
1024 2018-02-27  Martin Sebor  <msebor@redhat.com>
1026         PR c++/83871
1027         PR c++/83503
1028         * cp-tree.h (warn_spec_missing_attributes): New function.
1029         ((check_explicit_specialization): Add an argument.  Call the above
1030         function.
1031         * decl.c (duplicate_decls): Avoid applying primary function template's
1032         attributes to its explicit specializations.
1033         cp/pt.c (warn_spec_missing_attributes): Define.
1035 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
1037         PR c++/71546 - lambda init-capture with qualified-id.
1038         * parser.c (cp_parser_lambda_introducer): Clear scope after
1039         each lambda capture.
1041 2018-02-27  Nathan Sidwell  <nathan@acm.org>
1043         PR c++/84426
1044         * name-lookup.h (get_member_slot): Rename ...
1045         (find_member_slot): ... here.
1046         (add_member_slot): New.
1047         * name-lookup.c (member_vec_linear_search): No need to check for
1048         NULL slot.
1049         (get_member_slot): Rename ...
1050         (find_member_slot): ... here.  Don't add slot for incomplete class.
1051         (add_member_slot): New.
1052         * class.c (add_method): Adjust get_member_slot rename.  Bail out
1053         if push_class_level_binding fails.  Create slot and grok
1054         properties once we're committed to insertion.
1056 2018-02-27  Jason Merrill  <jason@redhat.com>
1058         PR c++/84489 - dependent default template argument
1059         * pt.c (type_unification_real): Handle early substitution failure.
1061 2018-02-26  Jason Merrill  <jason@redhat.com>
1063         PR c++/84560 - ICE capturing multi-dimensional VLA.
1064         * tree.c (array_of_runtime_bound_p): False if the element is
1065         variably-modified.
1067         PR c++/84441 - ICE with base initialized from ?:
1068         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
1070         PR c++/84520 - ICE with generic lambda in NSDMI.
1071         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
1072         'this' in a generic lambda instantiation.
1074         PR c++/84559 - ICE with constexpr VLA.
1075         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
1076         for constexpr variable with VLA type.
1078 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1080         PR c++/84558
1081         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
1082         a valid constant initializer.  Formatting fixes.
1084 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1086         PR c++/84540
1087         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
1088         returning NULL_TREE.
1089         (apply_late_template_attributes): Likewise.
1091 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1093         PR c++/84557
1094         * parser.c (cp_parser_omp_var_list_no_open): Only call
1095         cp_parser_lookup_name_simple on names satisfying identifier_p.
1096         (cp_parser_oacc_routine): Likewise.
1098 2018-02-26  Jason Merrill  <jason@redhat.com>
1100         PR c++/84551 - ICE with concepts and -g.
1101         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
1103 2018-02-26  Marek Polacek  <polacek@redhat.com>
1105         PR c++/84325
1106         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
1107         non-types.
1109 2018-02-26  Jason Merrill  <jason@redhat.com>
1111         PR c++/84447 - ICE with deleted inherited ctor with default arg.
1112         * call.c (build_over_call): Handle deleted functions in one place.
1114 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1116         PR c++/84533
1117         * decl.c (redeclaration_error_message): Don't try to use
1118         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
1120 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1122         * lambda.c (build_capture_proxy): Define static.
1123         * cp-tree.h (build_capture_proxy): Remove.
1125 2018-02-26  Marek Polacek  <polacek@redhat.com>
1127         PR c++/84537
1128         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
1129         if name is error node.
1131 2018-02-25  Jason Merrill  <jason@redhat.com>
1133         PR c++/84015 - ICE with class deduction and auto template parm.
1134         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
1136 2018-02-24  Marek Polacek  <polacek@redhat.com>
1138         PR c++/83692
1139         * constexpr.c (maybe_constant_init_1): New function.
1140         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
1141         (cxx_constant_init): New function.
1142         * cp-tree.h (cxx_constant_init): Declare.
1143         * typeck2.c (store_init_value): Call cxx_constant_init instead of
1144         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
1146 2018-02-22  Jason Merrill  <jason@redhat.com>
1148         PR c++/70468 - ICE with constructor delegation via typedef.
1149         * pt.c (tsubst_initializer_list): Check for other mem-initializers
1150         with constructor delegation.
1152 2018-02-22  Jason Merrill  <jason@redhat.com>
1154         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
1155         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
1156         VECTOR_TYPE.
1158 2018-02-22  Marek Polacek  <polacek@redhat.com>
1160         PR c++/84493
1161         * parser.c (cp_parser_braced_list): Use require_open instead of
1162         consume_open.
1164 2018-02-21  Jason Merrill  <jason@redhat.com>
1166         PR c++/84454 - ICE with pack expansion in signature.
1167         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
1169 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
1171         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
1172         IF_STMT.
1174 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
1176         PR c++/84446
1177         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
1178         on error_mark_node.
1180 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
1182         PR c++/84445
1183         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
1184         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
1186         PR c++/84449
1187         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
1188         returns error_mark_node, return it immediately.
1189         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
1190         error_mark_node, return error_mark_node.
1192         PR c++/84455
1193         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
1194         function_depth to avoid GC during finish_lambda_function.
1196 2018-02-19  Jason Merrill  <jason@redhat.com>
1198         PR c++/84429 - ICE capturing VLA.
1199         * lambda.c (build_capture_proxy): Handle reference refs.
1201 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
1203         PR c++/84448
1204         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
1205         either operand is error_mark_node, set current.lhs to that instead of
1206         creating a binary op with error_mark_node operands.
1208         PR c++/84430
1209         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
1211 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
1213         PR c++/84348
1214         * decl.c (grokdeclarator): Early return error_mark_node upon
1215         ill-formed friend declaration.
1217 2018-02-16  Marek Polacek  <polacek@redhat.com>
1218             Jakub Jelinek  <jakub@redhat.com>
1220         PR c++/84192
1221         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
1222         set *jump_target to anything if jump_target is NULL.
1224 2018-02-16  Jason Merrill  <jason@redhat.com>
1226         PR c++/84151 - unnecessary volatile load with static member.
1227         * call.c (build_new_method_call_1): Avoid loading from a volatile
1228         lvalue used as the object argument for a static member function.
1230         PR c++/81853 - using-directive and constexpr.
1231         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
1233         PR c++/84420 - ICE with structured binding in lambda.
1234         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
1236         PR c++/83835 - C++17 error with constructor ctors.
1237         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
1239         PR c++/82664 - ICE with reference to function template parm.
1240         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
1241         NOP_EXPRs.
1243         PR c++/82764 - C++17 ICE with empty base
1244         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
1246 2018-02-16  Jason Merrill  <jason@redhat.com>
1248         PR c++/84421 - type-dependent if constexpr
1249         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
1251 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1253         Deprecate -ffriend-injection.
1254         * decl.c (cxx_init_decl_processing): Emit warning on option.
1255         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
1256         friend.
1258 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
1260         PR c++/82468
1261         * decl.c (check_special_function_return_type): Reject template
1262         template parameter in deduction guide.
1264 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1266         PR c++/84375
1267         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
1269 2018-02-15  Jason Merrill  <jason@redhat.com>
1271         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
1272         * call.c (convert_like_real): Don't use the copy-list-initialization
1273         shortcut for ck_base.
1275         PR c++/84045 - ICE with typedef and noexcept.
1276         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
1278         PR c++/84376 - ICE with omitted template arguments.
1279         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
1281         PR c++/84368 - wrong error with local variable in variadic lambda.
1282         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
1283         local_specializations.
1285 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
1287         PR c++/84330
1288         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
1289         as first argument.
1291 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1293         PR c++/84350
1294         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
1295         init, early return.
1297 2018-02-14  Nathan Sidwell  <nathan@acm.org>
1299         * decl2.c (mark_vtable_entries): Set input_location to decl's.
1300         (c_parse_final_cleanups): Restore input_location after emitting
1301         vtables.
1303 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1305         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
1306         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
1307         auto_deduction_context, tree, int): Add defaults.
1308         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
1309         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
1310         tsubst_flags_t argument.
1311         * init.c (build_new): Likewise.
1313 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
1315         PR c++/84364
1316         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
1317         about return other than *this in assignment operators if
1318         retval is type dependent expression.
1320 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
1322         PR c++/84333
1323         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
1324         save_expr for the G++ extension.
1326 2018-02-13  Jason Merrill  <jason@redhat.com>
1328         PR c++/84080 - ICE with return type deduction and specialization.
1329         * pt.c (determine_specialization): Check uses_template_parms.
1331         Fix more variadic capture issues.
1332         * pt.c (find_parameter_packs_r): Also look at explicit captures.
1333         (check_for_bare_parameter_packs): Check current_class_type for
1334         lambda context.
1335         (extract_locals_r): Handle seeing a full instantiation of a pack.
1336         (tsubst_pack_expansion): Likewise.  Force lambda capture.
1337         * parser.c (cp_parser_lambda_introducer): Don't
1338         check_for_bare_parameter_packs.
1340         PR c++/84338 - wrong variadic sizeof.
1341         * pt.c (argument_pack_select_arg): Like the macro, but look through
1342         a pack expansion.
1343         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
1344         (extract_fnparm_pack): Do make_pack_expansion.
1345         (extract_locals_r): Do strip a pack expansion.
1346         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
1348 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
1350         PR c++/84341
1351         * parser.c (cp_parser_binary_expression): Use build_min instead of
1352         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
1354 2018-02-12  Nathan Sidwell  <nathan@acm.org>
1356         PR c++/84263
1357         * parser.c (cp_parser_decltype): Push and pop
1358         deferring_access_checks.  Reorganize to avoid goto.
1360 2018-02-12  Richard Biener  <rguenther@suse.de>
1362         PR c++/84281
1363         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
1364         uniform constructors and delay allocating them fully.
1366 2018-02-09  Jason Merrill  <jason@redhat.com>
1368         PR c++/84036 - ICE with variadic capture.
1369         Handle variadic capture proxies more like non-variadic.
1370         * lambda.c (build_capture_proxy): Remove workaround.
1371         * pt.c (find_parameter_packs_r): The proxy is a pack.
1372         (instantiate_class_template_1): Remove dead lambda code.
1373         (extract_fnparm_pack): Don't make_pack_expansion.
1374         (extract_locals_r): Don't strip a pack expansion.
1375         (tsubst_pack_expansion): Handle proxy packs.  Use
1376         PACK_EXPANSION_EXTRA_ARGS less.
1377         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
1378         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
1379         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
1380         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
1381         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
1383 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
1385         PR sanitizer/83987
1386         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
1388 2018-02-09  Jason Merrill  <jason@redhat.com>
1390         PR c++/81917 - ICE with void_t and partial specialization.
1391         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
1392         calling most_specialized_partial_spec.
1394 2018-02-09  Nathan Sidwell  <nathan@acm.org>
1396         PR c/84293
1397         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
1398         Pass expr location to strict_aliasing_warning.
1400 2018-02-09  Jason Merrill  <jason@redhat.com>
1402         PR c++/84296 - ICE with qualified-id in template.
1403         PR c++/83714
1404         * pt.c (unknown_base_ref_p): New.
1405         (instantiation_dependent_scope_ref_p): Use it instead of
1406         any_dependent_bases_p.
1408 2018-02-09  Marek Polacek  <polacek@redhat.com>
1409             Jakub Jelinek  <jakub@redhat.com>
1411         PR c++/83659
1412         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1413         fold_indirect_ref_1, including poly_*int64.  Verify first that
1414         tree_fits_poly_int64_p (op01).  Formatting fixes.
1416 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1418         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1419         * lambda.c (build_capture_proxy): Likewise.
1420         * search.c (field_access_p): Likewise.
1421         * semantics.c (omp_clause_decl, omp_privatize_field,
1422         finish_omp_clauses): Likewise.
1424 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1426         PR c++/83806
1427         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1428         case of nullptr too.
1430 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1432         * class.c (finish_struct): Fix std:initializer_list diagnostic
1433         formatting.
1435 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1437         PR c++/83204
1438         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1440 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1442         PR c++/84082
1443         * parser.c (cp_parser_dot_deref_incomplete): New function.
1444         (cp_parser_postfix_dot_deref_expression): Use it.
1446 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1448         PR c++/81610
1449         PR c++/80567
1450         * name-lookup.c (suggest_rid_p): New function.
1451         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1452         suggest_rid_p.
1454 2018-02-07  Jason Merrill  <jason@redhat.com>
1456         PR c++/84182 - ICE with captured lambda
1457         PR c++/84181
1458         * pt.c (extract_locals_r, extract_local_specs): New.
1459         (tsubst_pack_expansion): Use them.
1461 2018-02-07  Martin Liska  <mliska@suse.cz>
1463         PR c++/84059.
1464         * class.c (add_method): Append argument value.
1465         * cp-tree.h (maybe_version_functions): Add new argument.
1466         * decl.c (decls_match): Call it if a declaration does not
1467         have DECL_FUNCTION_VERSIONED.
1468         (maybe_version_functions): record argument is added.
1470 2018-02-05  Marek Polacek  <polacek@redhat.com>
1472         * class.c: Remove unused global variables.
1473         (build_primary_vtable): Don't gather statistics.
1474         (print_class_statistics): Remove.
1475         * cp-tree.h (print_class_statistics): Remove.
1476         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1478 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1480         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1481         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1482         * decl.c (next_initializable_field, find_decomp_class_base,
1483         cp_finish_decomp): Likewise.
1484         * typeck2.c (process_init_constructor_record): Likewise.
1486 2018-02-02  Jason Merrill  <jason@redhat.com>
1488         PR c++/84181 - ICE with lambda parm in template argument.
1489         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1491 2018-02-01  Jason Merrill  <jason@redhat.com>
1493         PR c++/84160 - ICE with nested variadic capture.
1494         * lambda.c (is_capture_proxy_with_ref): New.
1495         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1496         COMPONENT_REF.
1497         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1498         * constexpr.c (potential_constant_expression_1): Likewise.
1499         * semantics.c (process_outer_var_ref): Likewise.
1501 2018-02-01  Marek Polacek  <polacek@redhat.com>
1503         PR c++/84125
1504         * typeck.c (build_address): Relax the assert when
1505         processing_template_decl.
1507 2018-02-01  Jason Merrill  <jason@redhat.com>
1509         PR c++/84126 - ICE with variadic generic lambda
1510         PR c++/84036
1511         PR c++/82249
1512         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1513         PACK_EXPANSION_EXTRA_ARGS.
1515 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1517         PR c++/83796
1518         * call.c (convert_like_real): If w're initializing from {} explicitly
1519         call abstract_virtuals_error_sfinae.
1521 2018-01-31  Jason Merrill  <jason@redhat.com>
1522             Jakub Jelinek  <jakub@redhat.com>
1524         PR c++/83993
1525         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1526         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1527         on ADDR_EXPR.
1529 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1531         PR c++/83993
1532         * constexpr.c (diag_array_subscript): Emit different diagnostics
1533         if TYPE_DOMAIN (arraytype) is NULL.
1534         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1535         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1537 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1539         PR c++/84092
1540         * semantics.c (finish_qualified_id_expr): When handling an
1541         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1543 2018-01-31  Marek Polacek  <polacek@redhat.com>
1545         PR c++/84138
1546         * cp-gimplify.c (cp_fold): Check if X is an error node before
1547         calling useless_type_conversion_p.
1549 2018-01-30  Jason Merrill  <jason@redhat.com>
1551         PR c++/84091 - ICE with local class in lambda in template.
1552         * decl2.c (determine_visibility): Look for outer containing template
1553         instantiation.
1555         PR c++/84098 - ICE with lambda in template NSDMI.
1556         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1558 2018-01-29  Jason Merrill  <jason@redhat.com>
1560         PR c++/68810 - wrong location for reinterpret_cast error.
1561         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1562         !dofold.
1564 2018-01-29  Marek Polacek  <polacek@redhat.com>
1566         PR c++/83996
1567         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1568         => fooarray[1] in offset_int.
1570 2018-01-29  Jason Merrill  <jason@redhat.com>
1572         PR c++/83942 - wrong unused warning with static_cast.
1573         * cvt.c (ocp_convert): Call mark_rvalue_use.
1575 2018-01-26  Jason Merrill  <jason@redhat.com>
1577         PR c++/83956 - wrong dtor error with anonymous union
1578         * method.c (walk_field_subobs): Variant members only affect
1579         deletedness.
1580         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1582         PR c++/84036 - ICE with variadic capture.
1583         PR c++/82249
1584         * pt.c (tsubst_pack_expansion): When optimizing a simple
1585         substitution, pull a single pack expansion out of its pack.
1587         PR c++/82514 - ICE with local class in generic lambda.
1588         * pt.c (regenerated_lambda_fn_p): Remove.
1589         (enclosing_instantiation_of): Don't use it.
1590         (tsubst_function_decl): Call enclosing_instantiation_of.
1592         * pt.c (lookup_template_class_1): Add sanity check.
1593         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1595 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1597         PR c++/84031
1598         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1599         recursive calls that return ret.
1600         (cp_finish_decomp): Ignore unnamed bitfields.
1602 2018-01-23  Jason Merrill  <jason@redhat.com>
1604         PR c++/82249 - wrong mismatched pack length error.
1605         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1606         unsubstituted function parameter pack.
1608 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1610         PR c++/83921
1611         * decl.c (check_for_uninitialized_const_var): Not static; add
1612         bool and tsubst_flags_t parameters; adjust to be used both in
1613         constexpr context and not.
1614         * constexpr.c (potential_constant_expression_1): Use the above.
1615         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1617 2018-01-23  Jason Merrill  <jason@redhat.com>
1619         PR c++/83947 - ICE with auto declarations.
1620         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1621         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1623 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1625         PR c++/83974
1626         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1627         for pointer to member function types.
1629 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1631         PR sanitizer/83987
1632         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1633         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1635 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1637         PR c++/83988
1638         * pt.c (tsubst_baselink): Remove optype assert.
1639         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1641 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1643         PR c++/83958
1644         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1645         refers to incomplete type.
1647 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1649         Deprecate ARM-era for scope handling
1650         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1651         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1652         cleared.
1653         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1654         cleanup handling.
1655         * semantics.c (begin_for_scope): Flag_new_for_scope is
1656         boolean-like.
1657         (finish_for_stmt, begin_range_for_stmt): Likewise.
1659 2018-01-22  Jason Merrill  <jason@redhat.com>
1661         PR c++/83720
1662         * decl2.c (determine_visibility): Fix template_decl handling
1663         instead of blocking it.
1665         PR c++/83720 - ICE with lambda and LTO.
1666         * decl2.c (determine_visibility): Clear template_decl for
1667         function-scope decls.  Propagate anonymous linkage from containing
1668         function.
1670 2018-01-22  Marek Polacek  <polacek@redhat.com>
1672         PR c++/81933
1673         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1674         split out anything.
1676 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1678         PR c++/83895
1679         * decl.c (grokdeclarator): Don't diagnose extra parens
1680         on typedefs.
1682 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1684         PR c++/81167
1685         * call.c (joust): Use TREE_TYPE (source) if source is
1686         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1688         PR c++/83919
1689         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1690         for direct enum init.
1691         * decl.c (reshape_init): Likewise.
1693 2018-01-19  Marek Polacek  <polacek@redhat.com>
1695         * constexpr.c (fold_simple): Simplify.
1697 2018-01-18  Jason Merrill  <jason@redhat.com>
1699         PR c++/83714
1700         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1701         * pt.c (instantiation_dependent_scope_ref_p): True if
1702         any_dependent_bases_p.
1704 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1706         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1707         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1709 2018-01-18  Jason Merrill  <jason@redhat.com>
1711         PR c++/82461 - constexpr list-initialized member
1712         * constexpr.c (potential_constant_expression_1): Check
1713         TARGET_EXPR_DIRECT_INIT_P.
1715 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1717         PR c++/81013
1718         * decl.c (xref_basetypes): Early return upon error about derived
1719         union.
1721 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1723         PR c++/83160
1724         * cp-tree.h (mark_use): Declare.
1725         * expr.c (mark_use): Make extern.
1726         * call.c (direct_reference_binding): Set inner conv's
1727         rvaluedness_matches_p, if it is an identity.
1728         (convert_like_real): Mark lvalue or rvalue use for identity as
1729         rvaledness_matches_p demands.
1731 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1733         PR c++/83824
1734         * parser.c (attr_chainon): New function.
1735         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1736         cp_parser_namespace_definition, cp_parser_init_declarator,
1737         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1738         cp_parser_gnu_attributes_opt): Use it.
1739         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1740         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1741         prefix_attributes if attributes is error_mark_node.
1743 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1745         PR c++/78344
1746         * decl.c (grokdeclarator): Do not append the error_mark_node
1747         due to an erroneous optional attribute-specifier-seq.
1749 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1751         PR c++/83897
1752         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1753         CLEANUP_POINT_EXPR.
1755 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1757         PR c++/81054
1758         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1759         error_mark_node when we give an error.
1760         * decl.c (cp_finish_decl): Use the latter.
1762 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1764         PR c++/83287
1765         * init.c (build_raw_new_expr): Scan list for lookups to keep.
1767 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1769         PR c++/83814
1770         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
1771         the C++ part.  If processing a template, call
1772         fold_non_dependent_expr rather than fully folding.
1774 2018-01-17  Jason Merrill  <jason@redhat.com>
1776         PR c++/81067 - redundant NULL warning.
1777         * call.c (convert_like_real): Restore null_node handling.
1779 2018-01-17  Jason Merrill  <jason@redhat.com>
1781         PR c++/81843 - ICE with variadic member template.
1782         PR c++/72801
1783         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
1784         template args.
1786 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
1788         PR c++/83799
1789         * pt.c (type_dependent_expression_p): Strip any location wrapper
1790         before testing tree codes.
1791         (selftest::test_type_dependent_expression_p): New function.
1792         (selftest::cp_pt_c_tests): Call it.
1794 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1796         PR c++/83739
1797         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
1798         this not a final instantiation.
1800 2018-01-16  Jason Merrill  <jason@redhat.com>
1802         PR c++/83714 - ICE checking return in template.
1803         * typeck.c (check_return_expr): Call build_non_dependent_expr.
1805 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
1807         PR c++/83817
1808         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
1809         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
1810         instead of CALL_FROM_THUNK_P.
1812         PR c++/83825
1813         * name-lookup.c (member_vec_dedup): Return early if len is 0.
1814         (resort_type_member_vec, set_class_bindings,
1815         insert_late_enum_def_bindings): Use vec qsort method instead of
1816         calling qsort directly.
1818 2018-01-15  Martin Sebor  <msebor@redhat.com>
1820         PR c++/83588
1821         * class.c (find_flexarrays): Make a record of multiple flexible array
1822         members.
1824 2018-01-12  Jason Merrill  <jason@redhat.com>
1826         PR c++/83186 - ICE with static_cast of list-initialized temporary.
1827         * typeck.c (build_static_cast): Use build_non_dependent_expr.
1829 2018-01-12  Nathan Sidwell  <nathan@acm.org>
1831         * cp-tree.h (mark_rvalue_use): Add parm name.
1832         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
1833         mark_rvalue_use.
1834         * call.c (convert_like_real): Fix formatting.
1836 2018-01-11  Jason Merrill  <jason@redhat.com>
1838         PR c++/82728 - wrong -Wunused-but-set-variable
1839         PR c++/82799
1840         PR c++/83690
1841         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
1842         * decl.c (case_conversion): Likewise.
1843         * semantics.c (finish_static_assert): Call
1844         perform_implicit_conversion_flags.
1846 2018-01-11  Nathan Sidwell  <nathan@acm.org>
1848         * method.c (enum mangling_flags): Delete long-dead enum.
1850 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1852         * parser.c (cp_parser_std_attribute_spec): When
1853         token_pair::require_open / require_close return false simply
1854         return error_mark_node, avoid duplicate cp_parser_error about
1855         expected '(' / ')', respectively.
1857 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
1859         PR c++/43486
1860         * call.c (null_ptr_cst_p): Strip location wrappers when
1861         converting from '0' to a pointer type in C++11 onwards.
1862         (conversion_null_warnings): Replace comparison with null_node with
1863         call to null_node_p.
1864         (build_over_call): Likewise.
1865         * cp-gimplify.c (cp_fold): Remove the early bailout when
1866         processing_template_decl.
1867         * cp-lang.c (selftest::run_cp_tests): Call
1868         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
1869         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
1870         (selftest::run_cp_tests): Move decl to bottom of file.
1871         (null_node_p): New inline function.
1872         (selftest::cp_pt_c_tests): New decl.
1873         (selftest::cp_tree_c_tests): New decl.
1874         * cvt.c (build_expr_type_conversion): Replace comparison with
1875         null_node with call to null_node_p.
1876         * error.c (args_to_string): Likewise.
1877         * except.c (build_throw): Likewise.
1878         * mangle.c (write_expression): Skip location wrapper nodes.
1879         * parser.c (literal_integer_zerop): New function.
1880         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
1881         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
1882         param of cp_parser_parenthesized_expression_list.  When calling
1883         warn_for_memset, replace integer_zerop calls with
1884         literal_integer_zerop, eliminating the double logical negation
1885         cast to bool.  Eliminate the special-casing for CONST_DECL in
1886         favor of the fold_for_warn within warn_for_memset.
1887         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
1888         param, defaulting to false.  Convert "expr" to a cp_expr, and call
1889         maybe_add_location_wrapper on it when wrap_locations_p is true.
1890         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
1891         the result for RID_ALIGNOF and RID_SIZEOF.
1892         (cp_parser_builtin_offsetof): Likewise.
1893         * pt.c: Include "selftest.h".
1894         (tsubst_copy): Handle location wrappers.
1895         (tsubst_copy_and_build): Likewise.
1896         (build_non_dependent_expr): Likewise.
1897         (selftest::test_build_non_dependent_expr): New function.
1898         (selftest::cp_pt_c_tests): New function.
1899         * tree.c: Include "selftest.h".
1900         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
1901         (selftest::test_lvalue_kind): New function.
1902         (selftest::cp_tree_c_tests): New function.
1903         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
1904         (cp_build_binary_op): Replace comparison with null_node with call
1905         to null_node_p.
1906         (build_address): Use location of operand when building address
1907         expression.
1909 2018-01-10  Marek Polacek  <polacek@redhat.com>
1911         PR c++/82541
1912         * call.c (build_conditional_expr_1): Check complain before warning.
1913         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
1914         -Wduplicated-branches.
1916 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
1918         PR c++/81327
1919         * call.c (maybe_warn_class_memaccess): Add forward declaration.
1920         Change last argument from tree * to const vec<tree, va_gc> *, adjust
1921         args uses and check number of operands too.  Don't strip away any
1922         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
1923         Deal with src argument not having pointer type.  Check
1924         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
1925         test.
1926         (build_over_call): Call maybe_warn_class_memaccess here on the
1927         original arguments.
1928         (build_cxx_call): Rather than here on converted arguments.
1930 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
1932         PR c++/81055
1933         * init.c (build_vec_init): Avoid building an INIT_EXPR with
1934         error_mark_node as second argument.
1936 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
1938         PR c++/83734
1939         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
1940         in STATEMENT_LIST.  Remove unneeded assert.
1942 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
1943             Alan Hayward  <alan.hayward@arm.com>
1944             David Sherwood  <david.sherwood@arm.com>
1946         * constexpr.c (cxx_eval_array_reference): Handle polynomial
1947         VECTOR_CST_NELTS.
1948         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
1949         * call.c (build_conditional_expr_1): Likewise.
1950         * decl.c (cp_finish_decomp): Likewise.
1951         * mangle.c (write_type): Likewise.
1952         * typeck.c (structural_comptypes): Likewise.
1953         (cp_build_binary_op): Likewise.
1954         * typeck2.c (process_init_constructor_array): Likewise.
1956 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1958         PR c++/83555
1959         * typeck.c (build_static_cast_1): For static casts to reference types,
1960         call build_base_path with flag_delete_null_pointer_checks as nonnull
1961         instead of always false.  When -fsanitize=null, call
1962         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
1963         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
1964         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
1966 2018-01-03  Nathan Sidwell  <nathan@acm.org>
1968         PR c++/83667
1969         * method.c (make_alias_for): Copy DECL_CONTEXT.
1971 2018-01-03  Marek Polacek  <polacek@redhat.com>
1973         PR c++/83592
1974         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
1976 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
1978         PR preprocessor/83602
1979         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
1980         for builtin macros.
1982         PR c++/83634
1983         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
1984         error_mark_node, return error_mark_node.
1986         Update copyright years.
1988 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
1990         PR c++/83556
1991         * tree.c (replace_placeholders_r): Pass NULL as last argument to
1992         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
1993         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
1994         to false and return.
1995         (replace_placeholders): Pass NULL instead of &pset as last argument
1996         to cp_walk_tree.
1998 2018-01-02  Nathan Sidwell  <nathan@acm.org>
2000         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
2001         lval var.
2003 Copyright (C) 2018 Free Software Foundation, Inc.
2005 Copying and distribution of this file, with or without modification,
2006 are permitted in any medium without royalty provided the copyright
2007 notice and this notice are preserved.