PR c++/85437
[official-gcc.git] / gcc / cp / ChangeLog
blob037870627f926752caa13a535553aa3ae3564691
1 2018-04-25  Nathan Sidwell  <nathan@acm.org>
3         PR c++/85437
4         PR c++/49171
5         * cp-tree.h (REINTERPRET_CAST_P): New.
6         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
7         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
8         for non-trivial PTRMEM_CST cases.
9         * typeck.c (build_nop_reinterpret): New.
10         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
11         NOP_EXPRs returned by cp_convert.
13 2018-04-23  Jason Merrill  <jason@redhat.com>
15         PR c++/69560 - wrong alignof(double) on x86.
16         CWG 1879 - Inadequate definition of alignment requirement.
17         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
18         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
19         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
20         (cxx_alignof_expr): Pass it.
21         * parser.c (cp_parser_unary_expression): Pass it.
22         * pt.c (tsubst_copy): Copy it.
23         (tsubst_copy_and_build): Pass it.
24         * decl.c (fold_sizeof_expr): Pass it.
26 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
27             Jason Merrill  <jason@redhat.com>
29         PR c++/85470 - wrong error with static data member.
30         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
31         * typeck2.c (store_init_value): Likewise.
33 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
35         PR c++/85462
36         * cp-tree.h (tinst_level): Remove in_system_header_p member,
37         change refcount member from unsigned char to unsigned short,
38         add refcount_infinity static data member, adjust comments.
39         * pt.c (tinst_level::refcount_infinity): Define.
40         (inc_refcount_use): Remove assert, don't increment if refcount
41         is already refcount_infinity, adjust comment.
42         (dec_refcount_use): Remove assert, don't decrement if refcount
43         is refcount_infinity, adjust comment.
44         (push_tinst_level_loc): Formatting fix.
46 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
48         PR c++/84611
49         * pt.c (lookup_template_class_1): Check pushtag return value for
50         error_mark_node.
52 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
54         PR c++/80290
55         * cp-tree.h (tinst_level::free): Fix whitespace.
57 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
59         PR c++/84630
60         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
61         for error_mark_node.
63 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
65         PR c++/84463
66         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
67         tricks from here to ...
68         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
69         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
71 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
73         PR c++/80290
74         * cp-tree.h (struct tinst_level): Split decl into tldcl and
75         targs.  Add private split_list_p, tree_list_p, and not_list_p
76         inline const predicates; to_list private member function
77         declaration; free public member function declaration; list_p,
78         get_node and maybe_get_node accessors, and refcount data
79         member.  Narrow errors to unsigned short.
80         * error.c (print_instantiation_full_context): Use new
81         accessors.
82         (print_instantiation_partial_context_line): Likewise.  Drop
83         const from tinst_level-typed parameter.
84         * mangle.c (mangle_decl_string): Likewise.
85         * pt.c (freelist): New template class.
86         (tree_list_freelist_head): New var.
87         (tree_list_freelist): New fn, along with specializations.
88         (tinst_level_freelist_head): New var.
89         (pending_template_freelist_head): Likewise.
90         (tinst_level_freelist, pending_template_freelist): New fns.
91         (tinst_level::to_list, tinst_level::free): Define.
92         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
93         (set_refcount_ptr): New template fn.
94         (add_pending_template): Adjust for refcounting, freelists and
95         new accessors.
96         (neglectable_inst_p): Take a NULL d as a non-DECL.
97         (limit_bad_template_recursion): Use new accessors.
98         (push_tinst_level): New overload to create the list.
99         (push_tinst_level_loc): Make it static, split decl into two
100         args, adjust tests and initialization to cope with split
101         lists, use freelist, adjust for refcounting.
102         (push_tinst_level_loc): New wrapper with the old interface.
103         (pop_tinst_level): Adjust for refcounting.
104         (record_last_problematic_instantiation): Likewise.
105         (reopen_tinst_level): Likewise.  Use new accessors.
106         (instantiate_alias_template): Adjust for split list.
107         (fn_type_unification): Likewise.
108         (get_partial_spec_bindings): Likewise.
109         (instantiate_pending_templates): Use new accessors.  Adjust
110         for refcount.  Release pending_template to freelist.
111         (instantiating_current_function_p): Use new accessors.
113 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
115         PR c++/85039
116         * parser.c (cp_parser_builtin_offset): Reject type definitions.
117         * mangle.c (nested_anon_class_index): Avoid crash returning -1
118         if we've seen errors.
120 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
122         PR c++/85385
123         * name-lookup.c (macro_use_before_def::maybe_make): New function,
124         checking that the use is indeed before the definition.
125         (macro_use_before_def::macro_use_before_def): Make private.
126         (macro_use_before_def::~macro_use_before_def): Make private.  Move
127         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
128         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
129         than using new directly.
131 2018-04-12  Jason Merrill  <jason@redhat.com>
133         PR c++/85356 - ICE with pointer to member function.
134         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
135         flag_noexcept_type.  Build the new spec within the function context.
136         * except.c (build_noexcept_spec): Do get constant value in templates
137         if flag_noexcept_type.
138         * decl.c (check_redeclaration_exception_specification): Don't
139         instantiate noexcept on a dependent declaration.
141 2018-04-12  Marek Polacek  <polacek@redhat.com>
143         PR c++/85258
144         * constexpr.c (reduced_constant_expression_p): Return false for null
145         trees.
147 2018-04-11  Marek Polacek  <polacek@redhat.com>
149         PR c++/85032
150         * constexpr.c (potential_constant_expression_1): Consider conversions
151         from classes to literal types potentially constant.
153 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
155         PR c++/70808
156         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
157         the type like TYPE_PTR_OR_PTRMEM_P.
159 2018-04-10  Jason Merrill  <jason@redhat.com>
161         PR debug/65821 - wrong location for main().
162         * call.c (clear_location_r, convert_default_arg): Revert.
163         * tree.c (break_out_target_exprs): Add clear_location parm.
164         (struct bot_data): New.
165         (bot_manip): Clear location if requested.
166         * init.c (get_nsdmi): Pass clear_location.
168 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
170         PR c++/85110
171         * call.c (get_fndecl_argument_location): Make non-static.
172         * cp-tree.h (get_fndecl_argument_location): New decl.
173         * typeck.c (convert_for_assignment): When complaining due to
174         conversions for an argument, show the location of the parameter
175         within the decl.
177 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
179         PR c++/85312 - P0962 cleanup
180         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
181         diagnostics.
183 2018-04-10  Jason Merrill  <jason@redhat.com>
185         PR debug/65821 - wrong location for main().
186         * call.c (clear_location_r): New.
187         (convert_default_arg): Use it.
188         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
190         PR c++/85285 - ICE with flexible array after substitution.
191         * pt.c (instantiate_class_template_1): Check for flexible array in
192         union.
194 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
196         PR c++/85227
197         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
198         issue a pedwarn and defer trying to do bindings.
200 2018-04-09  Jason Merrill  <jason@redhat.com>
202         PR c++/85279 - dump_expr doesn't understand decltype.
203         * error.c (dump_expr): Handle DECLTYPE_TYPE.
205         PR c++/85262 - ICE with redundant qualification on constructor.
206         * call.c (build_new_method_call_1): Move make_args_non_dependent
207         after A::A() handling.
209         PR c++/85277 - ICE with invalid offsetof.
210         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
211         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
213         PR c++/85264 - ICE with excess template-parameter-list.
214         * parser.c (cp_parser_check_template_parameters): Add template_id_p
215         parameter.  Don't allow an extra template header if true.
216         (cp_parser_class_head): Pass template_id_p.
217         (cp_parser_elaborated_type_specifier): Likewise.
218         (cp_parser_alias_declaration): Likewise.
219         (cp_parser_check_declarator_template_parameters): Likewise.
221 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
223         PR c++/85194
224         * parser.c (cp_parser_simple_declaration): For structured bindings,
225         if *maybe_range_for_decl is NULL after parsing it, set it to
226         error_mark_node.
228 2018-04-09  Jason Merrill  <jason@redhat.com>
230         PR c++/85256 - ICE capturing pointer to VLA.
231         * lambda.c (add_capture): Distinguish between variable-size and
232         variably-modified types.
234 2018-04-06  Jason Merrill  <jason@redhat.com>
236         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
237         * pt.c (extract_locals_r): Remember local typedefs.
239 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
241         PR c++/84269
242         * name-lookup.c (struct std_name_hint): Move out of
243         get_std_name_hint; add field "min_dialect".
244         (get_std_name_hint): Add min_dialect values to all initializers.
245         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
246         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
247         <shared_mutex>, <string_view>, <thread>, and <variant>.
248         Add fstream, ifstream, and ofstream to <fstream>.
249         Add istringstream, ostringstream, and stringstream to <sstream>.
250         Add basic_string to <string>.
251         Add tuple_element and tuple_size to <tuple>.
252         Add declval to <utility>.
253         Fix ordering of <queue> and <tuple>.
254         Return a std_name_hint, rather than a const char *.
255         (get_cxx_dialect_name): New function.
256         (maybe_suggest_missing_std_header): Detect names that aren't yet
257         available in the current dialect, and instead of suggesting a
258         missing #include, warn about the dialect.
260 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
262         PR c++/85210
263         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
264         errorcount is set if tsubst doesn't return a VAR_DECL.
266 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
268         PR c++/85021
269         * name-lookup.c (using_directives_contain_std_p): New function.
270         (has_using_namespace_std_directive_p): New function.
271         (suggest_alternatives_for): Simplify if/else logic using early
272         returns.  If no candidates were found, and there's a
273         "using namespace std;" directive, call
274         maybe_suggest_missing_std_header.
275         (maybe_suggest_missing_header): Split later part of the function
276         into..
277         (maybe_suggest_missing_std_header): New.
279 2018-04-06  Jason Merrill  <jason@redhat.com>
281         PR c++/85242 - ICE with class definition in template parm.
282         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
283         processing_template_parmlist.
285         PR c++/85240 - LTO ICE with using of undeduced auto fn.
286         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
288 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
290         PR c++/85209
291         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
292         is not prev, if prev == decl.
294         PR c++/85208
295         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
296         maybe_apply_pragma_weak here...
297         (cp_maybe_mangle_decomp): ... but call it here instead.
299 2018-04-05  Jason Merrill  <jason@redhat.com>
301         PR c++/85136 - ICE with designated init in template.
302         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
303         designated initializer.
304         (check_array_designated_initializer): Update ce->index with the
305         constant value.
307         PR c++/83808 - ICE with VLA initialization.
308         * typeck2.c (process_init_constructor_array): Don't require a VLA
309         initializer to have VLA type.
311 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
313         PR c++/80956
314         * call.c (convert_like_real): Fail gracefully for a broken
315         std::initializer_list, missing a definition.
317         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
319 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
321         PR c++/84792
322         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
323         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
325 2018-04-05  Jason Merrill  <jason@redhat.com>
327         PR c++/82152 - ICE with class deduction and inherited ctor.
328         * pt.c (do_class_deduction): Ignore inherited ctors.
330         PR c++/84665 - ICE with array of empty class.
331         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
333         PR c++/85228 - ICE with lambda in enumerator in template.
334         * pt.c (bt_instantiate_type_proc): Don't assume
335         CLASSTYPE_TEMPLATE_INFO is non-null.
337 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
339         Implement P0969
340         * decl.c (find_decomp_class_base): Check accessibility instead
341         of declared access, adjust diagnostic.
343 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
345         Implement P0961
346         * decl.c (get_tuple_decomp_init): Check the templatedness
347         of a member get.
349 2018-04-05  Jason Merrill  <jason@redhat.com>
351         PR c++/85200 - ICE with constexpr if in generic lambda.
352         * pt.c (extract_locals_r): Don't record the local specs of variables
353         declared within the pattern.
355 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
357         PR c++/84979
358         * pt.c (check_auto_in_tmpl_args): New.
359         (tsubst_qualified_id): Use it to reject template args
360         referencing auto for non-type templates.
361         * parser.c (cp_parser_template_id): Likewise.
362         * cp-tree.h (check_auto_in_tmpl_args): Declare.
363         * typeck2.c (build_functional_cast): Report correct location
364         for invalid use of auto.
366 2018-04-04  Jason Merrill  <jason@redhat.com>
368         PR c++/85215 - ICE with copy-init from conversion.
369         * call.c (merge_conversion_sequences): Fix type of direct binding
370         sequence.
372         PR c++/84938 - ICE with division by ~-1.
373         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
375         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
376         * parser.c (cp_parser_mem_initializer_list): Call
377         check_for_bare_parameter_packs.
379 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
381         PR inline-asm/85172
382         * constexpr.c (cxx_eval_builtin_function_call): For calls to
383         builtin_valid_in_constant_expr_p functions, don't call
384         cxx_eval_constant_expression if argument is not
385         potential_constant_expression.
387         PR c++/85146
388         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
389         argument.
390         * semantics.c (calculate_bases): Add complain argument.  Use
391         complete_type_or_maybe_complain instead of just complete_type and
392         return an empty vector if it fails.  Move make_tree_vector () call
393         after early return.  Formatting fixes.
394         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
395         end.
396         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
397         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
398         calculate_direct_bases callers, formatting fixes.
400 2018-04-04  Jason Merrill  <jason@redhat.com>
402         PR c++/85006 - -fconcepts ICE with A<auto...> return type
403         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
405         PR c++/85200 - ICE with constexpr if in generic lambda.
406         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
408         PR c++/84221 - bogus -Wunused with attribute and template.
409         * decl2.c (is_late_template_attribute): Handle unused and used
410         normally on non-TYPE_DECL.
412         PR c++/85135 - ICE with omitted template arguments.
413         * decl.c (grokdeclarator): Catch deduced class type in trailing
414         return type.
416         PR c++/85133 - ICE with missing concept initializer.
417         * decl.c (cp_finish_decl): If a concept initializer is missing, use
418         true.
420         PR c++/85118 - wrong error with generic lambda and std::bind.
421         * call.c (add_template_conv_candidate): Disable if there are any
422         call operators.
424         PR c++/85141 - ICE with compound assignment and static member fn.
425         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
426         compound assignment.
428         PR c++/85148 - ICE with 'this' in array NSDMI.
429         * tree.c (replace_placeholders_r): Use handled_component_p.
431 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
433         PR c++/65923
434         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
435         * parser.c (cp_parser_unqualified_id): ..not here.
437 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
439         PR c++/84943
440         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
441         used.
442         * decl2.c (mark_used): Return without effects if tf_conv.
444 2018-04-03  Jason Merrill  <jason@redhat.com>
446         PR c++/85092 - C++17 ICE with unused list constructor.
447         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
448         from a TARGET_EXPR.
450         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
451         * constexpr.c (cxx_eval_builtin_function_call): Only defer
452         __builtin_constant_p if ctx->quiet.
454 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
456         PR c++/84768
457         * pt.c (rewrite_template_parm): If the first argument is
458         error_mark_node return it immediately.
459         (build_deduction_guide): Check the return value of the
460         latter for error_mark_node.
461         (do_class_deduction): Check the return value of the latter.
463 2018-04-03  Jason Merrill  <jason@redhat.com>
465         * semantics.c (finish_if_stmt_cond): Use
466         instantiation_dependent_expression_p.
468         PR c++/85149 - generic lambda and constexpr if.
469         * pt.c (build_extra_args, add_extra_args): Split from
470         tsubst_pack_expansion.
471         (tsubst_expr) [IF_STMT]: Use them.
472         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
474         * typeck.c (merge_types): Limit matching attribute shortcut to
475         the default case.
477 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
479         PR c++/85147
480         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
482         PR c++/85140
483         * name-lookup.c (handle_namespace_attrs): Return early if attributes
484         is error_mark_node.
486         PR c++/85134
487         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
488         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
489         instead for static data members clear init and set DECL_EXTERNAL.
491 2018-04-02  Jason Merrill  <jason@redhat.com>
493         PR c++/64095 - auto... parameter pack.
494         * parser.c (cp_parser_parameter_declaration): Handle turning autos
495         into packs here.
496         (cp_parser_parameter_declaration_list): Not here.
498 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
500         PR c++/85027
501         * class.c (instantiate_type): Peel off SAVE_EXPR before
502         BASELINK.
504 2018-03-30  Jason Merrill  <jason@redhat.com>
506         * typeck2.c (process_init_constructor_record): Use
507         init_list_type_node for the CONSTRUCTOR around an anonymous union
508         designated initializer.
510 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
512         PR c++/84791
513         * semantics.c (finish_omp_reduction_clause): If
514         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
515         even if processing_template_decl.
517 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
519         PR c++/84269
520         * name-lookup.c (get_std_name_hint): Add names from <memory>,
521         <tuple>, and <utility>.
523 2018-03-29  Jason Merrill  <jason@redhat.com>
525         PR c++/85093 - too many template args with pack expansion.
526         * pt.c (coerce_template_parms): Keep pack expansion args that will
527         need to be empty.
529 2018-03-29  Jason Merrill  <jason@redhat.com>
531         * pt.c (build_non_dependent_expr): Propagate expr location.
533 2018-03-27  Jason Merrill  <jason@redhat.com>
535         PR c++/85060 - wrong-code with call to base member in template.
536         * search.c (any_dependent_bases_p): Check uses_template_parms
537         rather than processing_template_decl.
539 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
541         PR c++/85110
542         * typeck.c (convert_for_assignment): When complaining due to
543         conversions for an argument, attempt to use the location of the
544         argument.
546 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
548         PR c++/85028
549         * pt.c (tsubst_default_argument): Early return if the type of the
550         parameter is erroneous.
552 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
554         PR c++/84973
555         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
556         templates.
558         PR c++/84968
559         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
561 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
563         PR c++/85067
564         * method.c (defaulted_late_check): Partially revert r253321 changes,
565         do not early return upon error.
567 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
569         PR c++/85077
570         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
571         type call fold to generate VECTOR_CSTs when possible.
573         PR c++/85076
574         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
575         return it right away.
577 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
579         * search.c (check_final_overrider): Use inform instead of error
580         for the diagnostics of the overridden functions.  Tweak wording.
582 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
584         PR c++/85068
585         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
586         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
588 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
589             Jason Merrill  <jason@redhat.com>
591         PR c++/84632
592         * init.c (build_aggr_init): When initializing from array,
593         reject anything but CONSTRUCTORs and TARGET_EXPRs.
594         (build_vec_init): Handle separately ARRAY_TYPEs.
596 2018-03-26  Jason Merrill  <jason@redhat.com>
598         PR c++/85062 - ICE with alignas in wrong place.
599         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
600         here.
602         PR c++/85049 - ICE with __integer_pack.
603         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
604         * cp-tree.h (TEMPLATE_PARM_P): New.
606 2018-03-23  Jason Merrill  <jason@redhat.com>
608         PR c++/78489 - wrong SFINAE behavior.
610         PR c++/84489
611         * pt.c (type_unification_real): Don't defer substitution failure.
613 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
615         PR c++/85015
616         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
617         result.
619         PR c++/84942
620         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
621         cp_build_unary_op call with gcc_unreachable ().
623 2018-03-23  Marek Polacek  <polacek@redhat.com>
625         PR c++/85045
626         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
627         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
628         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
630 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
632         Implement P0962
633         * parser.c (cp_parser_perform_range_for_lookup): Change
634         the condition for deciding whether to use members.
636 2018-03-23  Marek Polacek  <polacek@redhat.com>
638         PR c++/85033
639         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
641 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
643         PR c++/71251
644         * parser.c (cp_parser_alias_declaration): Call
645         parser_check_template_parameters.
647         PR c++/84789
648         * pt.c (resolve_typename_type): Drop assert that stopped
649         simplification to template-independent types.  Add assert to
650         verify the initial scope is template dependent.
651         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
652         Reparse the id expression as a type-name, not a declarator.
654         PR c++/84729
655         * init.c (build_vec_init): Error at parenthesized array init.
657         PR c++/84610
658         PR c++/84642
659         PR c++/84942
660         * cp-tree.h (temp_override): New template class, generalizing
661         a cleanup that was only used...
662         * parser.c (cp_parser_parameter_declaration_clause):
663         ... here for auto_is_implicit_function_template_parm_p.
664         (cp_parser_gnu_attributes_opt): Use it here as well.
665         (cp_parser_std_attribute): Likewise.
667 2018-03-22  Marek Polacek  <polacek@redhat.com>
669         PR c++/84854
670         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
671         is boolean.
673 2018-03-21  Jason Merrill  <jason@redhat.com>
675         PR c++/81311 - wrong C++17 overload resolution.
676         * call.c (build_user_type_conversion_1): Remove C++17 code.
677         (conv_binds_ref_to_prvalue): New.
678         (build_over_call): Handle C++17 copy elision.
679         (build_special_member_call): Only do C++17 copy elision here if the
680         argument is already the right type.
682 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
684         PR c++/71965
685         * init.c (build_vec_init): Silence error, former sorry,
686         without tf_error.
688         PR c++/84610
689         PR c++/84642
690         * parser.c (abort_fully_implicit_template_p): New.
691         (cp_parser_skip_to_end_of_statement): Use it.
692         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
693         (finish_fully_implicit_template_p): Clear
694         implicit_template_parms and implicit_template_scope.
696 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
698         PR c++/84972
699         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
700         error_mark_node when check_array_designated_initializer fails.
702 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
704         PR c++/84961
705         * cp-tree.h (genericize_compound_lvalue): Declare.
706         * typeck.c (genericize_compound_lvalue): New function.
707         (unary_complex_lvalue, cp_build_modify_expr): Use it.
708         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
709         and PREDECREMENT_EXPR in output and "m" constrained input operands with
710         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
711         COMPOUND_EXPR operand.
713 2018-03-21  Nathan Sidwell  <nathan@acm.org>
715         PR c++/85008
716         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
717         * decl2.c (vague_linkage_p): Likewise.
719 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
721         PR c++/84994
722         * constexpr.c (constexpr_fn_retval): Make non-"static".
723         * cp-tree.h (constexpr_fn_retval): New decl.
724         * search.c (direct_accessor_p): Update leading comment.
725         (reference_accessor_p): Likewise.
726         (field_accessor_p): Replace check that function body is a
727         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
728         indentation of "field_type" decl.
730 2018-03-21  Nathan Sidwell  <nathan@acm.org>
732         PR c++/84804
733         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
734         complete classes.
736 2018-03-21  Martin Sebor  <msebor@redhat.com>
738         PR c++/84850
739         * call.c (first_non_public_field): New template and function.
740         (first_non_trivial_field): New function.
741         (maybe_warn_class_memaccess): Call them.
743 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
745         PR c++/84892
746         * search.c (field_accessor_p): Use class_of_this_parm rather than
747         type_of_this_parm, to check that "this" is a "const T *", rather
748         than a "T *const".
750 2018-03-21  Nathan Sidwell  <nathan@acm.org>
752         * class.c (finish_struct_anon_r): Refactor, deprecate anything
753         other than public non-static data members.
754         * parser.c (cp_parser_init_declarator): Deprecate attributes after
755         parenthesized initializer.
757         PR c++/84836
758         * name-lookup.c (update_binding): Correct logic for local binding
759         update.
761 2018-03-21  Marek Polacek  <polacek@redhat.com>
763         PR c++/71638, ICE with NSDMI and reference.
764         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
765         even when we replace an element.
767 2018-03-20  Marek Polacek  <polacek@redhat.com>
769         PR c++/84978, ICE with NRVO.
770         * constexpr.c (cxx_eval_constant_expression): Handle the case when
771         a RESULT_DECL isn't in the hash map.
773 2018-03-20  Jason Merrill  <jason@redhat.com>
775         PR c++/84978, ICE with NRVO.
776         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
777         (cp_get_callee_fndecl_nofold): New.
778         * cp-gimplify.c (cp_genericize_r): Use it instead.
779         * call.c (check_self_delegation): Likewise.
781 2018-03-20  Nathan Sidwell  <nathan@acm.org>
783         PR c++/84962
784         * name-lookup.c (pushdecl_class_level): Push anon-struct's
785         member_vec, if there is one.
787         PR c++/84970
788         * cp-tree.h (lookup_list_keep): Declare.
789         * tree.c (lookup_list_keep): New, broken out of ...
790         (build_min): ... here.  Call it.
791         * decl.c (cp_finish_decl): Call lookup_list_keep.
793 2018-03-19  Jason Merrill  <jason@redhat.com>
795         PR c++/84937 - ICE with class deduction and auto.
796         * pt.c (rewrite_template_parm): Fix auto handling.
798 2018-03-19  Marek Polacek  <polacek@redhat.com>
800         PR c++/84925
801         * pt.c (enclosing_instantiation_of): Check if fn is null.
803         PR c++/84927
804         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
805         as we evaluate the elements.
806         (cxx_eval_constant_expression): Verify constructor's flags
807         unconditionally.
809 2018-03-19  Jason Merrill  <jason@redhat.com>
811         PR c++/71834 - template-id with too few arguments.
812         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
814 2018-03-19  Nathan Sidwell  <nathan@acm.org>
816         PR c++/84835
817         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
818         * pt.c (build_template_decl): Propagate language linkage.
820         PR c++/84812
821         * name-lookup.c (set_local_extern_decl_linkage): Defend against
822         ambiguous lookups.
824 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
826         PR c/84910
827         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
828         diagnostics.
829         * method.c (synthesize_method): Likewise.
830         * pt.c (convert_nontype_argument): Likewise.
832 2018-03-16  Jason Merrill  <jason@redhat.com>
834         PR c++/84720 - ICE with rvalue ref non-type argument.
835         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
836         (convert_nontype_argument): Revert earlier change.
838         PR c++/80227 - SFINAE and negative array size.
839         * decl.c (compute_array_index_type): Use
840         build_converted_constant_expr and valid_constant_size_p.
842         PR c++/84906 - silent wrong code with ambiguous conversion.
843         * call.c (build_user_type_conversion_1): Set need_temporary_p on
844         ambiguous conversion.
845         (convert_like_real): Check it.
847         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
848         * call.c (build_special_member_call): Don't convert an init-list
849         argument directly to the class type.
851 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
853         PR c++/79937
854         PR c++/82410
855         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
856         (find_placeholder): Declare.
857         * tree.c (struct replace_placeholders_t): Add exp member.
858         (replace_placeholders_r): Don't walk into ctors with
859         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
860         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
861         (replace_placeholders): Initialize data.exp.
862         (find_placeholders_r, find_placeholders): New functions.
863         * typeck2.c (process_init_constructor_record,
864         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
865         if adding NSDMI on which find_placeholder returns true.
866         * call.c (build_over_call): Don't call replace_placeholders here.
867         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
868         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
869         TARGET_EXPR_INITIAL.
870         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
871         ctor.
873 2018-03-16  Jason Merrill  <jason@redhat.com>
875         PR c++/83911 - ICE with multiversioned constructor.
876         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
877         dispatchere here.
878         * call.c (build_over_call): Not here.
880 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
882         PR c++/84874
883         * decl.c (reshape_init_class): Don't assert d->cur->index == field
884         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
886 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
888         PR c++/84222
889         * cp-tree.h (cp_warn_deprecated_use): Declare.
890         * tree.c (cp_warn_deprecated_use): New function.
891         * typeck2.c (build_functional_cast): Use it.
892         * decl.c (grokparms): Likewise.
893         (grokdeclarator): Likewise.  Temporarily push nested class scope
894         around grokparms call for out of class member definitions.
896 2018-03-14  Jason Merrill  <jason@redhat.com>
898         PR c++/84820 - no error for invalid qualified-id.
899         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
900         cp_error_declarator.
902         PR c++/84801 - ICE with unexpanded pack in lambda.
903         * pt.c (check_for_bare_parameter_packs): Don't return early for a
904         lambda in non-template context.
906         PR c++/81236 - auto variable and auto function
907         * pt.c (tsubst_baselink): Update the type of the BASELINK after
908         mark_used.
910 2018-03-14  Jason Merrill  <jason@redhat.com>
912         PR c++/83916 - ICE with template template parameters.
913         * pt.c (convert_template_argument): Don't substitute into type of
914         non-type parameter if we don't have enough arg levels.
915         (unify): Likewise.
917 2018-03-14  Marek Polacek  <polacek@redhat.com>
919         PR c++/84596
920         * semantics.c (finish_static_assert): Check
921         instantiation_dependent_expression_p instead of
922         {type,value}_dependent_expression_p.
924 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
925             Jason Merrill  <jason@redhat.com>
927         PR c++/82336 - link error with list-init default argument.
928         * decl.c (check_default_argument): Unshare an initializer list.
930 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
932         PR c++/84843
933         * decl.c (duplicate_decls): For redefinition of built-in, use error
934         and return error_mark_node.  For redeclaration, return error_mark_node
935         rather than olddecl if !flag_permissive.
937 2018-03-13  Jason Merrill  <jason@redhat.com>
939         PR c++/82565 - ICE with concepts and generic lambda.
940         * pt.c (instantiate_decl): Clear fn_context for lambdas.
942 2018-03-13  Jason Merrill  <jason@redhat.com>
944         PR c++/84720 - ICE with rvalue ref non-type argument.
945         * pt.c (convert_nontype_argument): Handle rvalue references.
947         PR c++/84839 - ICE with decltype of parameter pack.
948         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
949         instantiating dummy parms.
951         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
952         parameter even without -Wpedantic.
954         PR c++/84798 - ICE with auto in abstract function declarator.
955         * parser.c (cp_parser_parameter_declaration_clause): Check
956         parser->default_arg_ok_p.
958 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
960         PR c++/84808
961         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
962         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
963         sizetype.  Formatting fixes.
965 2018-03-12  Jason Merrill  <jason@redhat.com>
967         PR c++/84355 - ICE with deduction for member class template.
968         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
969         CLASS_PLACEHOLDER_TEMPLATE.
971         PR c++/84802 - ICE capturing uninstantiated class.
972         * lambda.c (build_capture_proxy): Call complete_type.
974 2018-03-09  Jason Merrill  <jason@redhat.com>
976         PR c++/84770 - ICE with typedef and parameter pack.
977         * pt.c (verify_unstripped_args_1): Split out from
978         verify_unstripped_args.
980         PR c++/84785 - ICE with alias template and default targs.
981         * pt.c (type_unification_real): Set processing_template_decl if
982         saw_undeduced == 1.
984         PR c++/84752 - ICE with capture of constexpr array.
985         * call.c (standard_conversion): Set rvaluedness_matches_p on the
986         identity conversion under ck_lvalue.
988 2018-03-09  Jason Merrill  <jason@redhat.com>
989             Paolo Carlini  <paolo.carlini@oracle.com>
991         PR c++/71169
992         PR c++/71832
993         * pt.c (any_erroneous_template_args_p): New.
994         * cp-tree.h (any_erroneous_template_args_p): Declare it.
995         * parser.c (cp_parser_class_specifier_1): Use it.
997 2018-03-09  Jason Merrill  <jason@redhat.com>
999         PR c++/84726 - unnecessary capture of constant vars.
1000         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
1001         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
1002         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
1003         * lambda.c (is_constant_capture_proxy)
1004         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
1005         (prune_lambda_captures): New.
1006         (finish_lambda_function): Call prune_lambda_captures.
1008 2018-03-09  Jason Merrill  <jason@redhat.com>
1009             Jakub Jelinek  <jakub@redhat.com>
1011         PR c++/84076
1012         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
1013         build ADDR_EXPR with REFERENCE_TYPE.
1014         (build_over_call): For purposes of check_function_arguments, if
1015         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
1016         its operand rather than the argument itself.
1018 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
1020         PR c++/84724
1021         * decl.c (duplicate_decls): Don't override __* prefixed builtins
1022         except for __[^b]*_chk, instead issue permerror and for -fpermissive
1023         also a note and return olddecl.
1025 2018-03-09  Nathan Sidwell  <nathan@acm.org>
1027         PR c++/84733
1028         * name-lookup.c (do_pushdecl_with_scope): Only clear
1029         current_function_decl when pushing a non-class (i.e. namespace)
1030         scope.
1032 2018-03-08  Jason Merrill  <jason@redhat.com>
1033             Jakub Jelinek  <jakub@redhat.com>
1035         PR c++/80598
1036         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
1037         not calling mark_used for the benefit of -Wunused-function warning.
1039 2018-03-06  Jason Merrill  <jason@redhat.com>
1041         * lambda.c (is_capture_proxy_with_ref): Remove.
1042         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
1044 2018-03-06  Marek Polacek  <polacek@redhat.com>
1046         PR c++/84684
1047         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
1048         arguments.
1050 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
1052         PR c++/84231
1053         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
1054         only while processing template decls.
1055         * typeck.c (build_x_conditional_expr): Move wrapping of
1056         reference type around type...
1057         * call.c (build_conditional_expr_1): ... here.  Rename
1058         is_lvalue to is_glvalue.
1059         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
1060         INDIRECT_REF of COND_EXPR too.
1062         PR c++/84593
1063         * init.c (build_zero_init_1): Zero-initialize references.
1065         PR c++/84492
1066         * semantics.c (finish_stmt_expr_expr): Reject unresolved
1067         overloads used as stmt expr values.
1069 2018-03-05  Jason Merrill  <jason@redhat.com>
1071         PR c++/84708 - ICE with lambda in local class NSDMI.
1072         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
1073         context.
1075 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
1077         PR c++/84684
1078         * constexpr.c (constexpr_call_hasher::equal): Return false if
1079         lhs->hash != rhs->hash.  Change return 1 to return true and
1080         return 0 to return false.
1082 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1084         PR c++/84702
1085         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
1087 2018-03-05  Marek Polacek  <polacek@redhat.com>
1089         PR c++/84707
1090         * decl.c (duplicate_decls): Check DECL_NAME before accessing
1091         UDLIT_OPER_P.
1093 2018-03-05  Nathan Sidwell  <nathan@acm.org>
1095         PR c++/84694
1096         * friend.c (do_friend): Restore check for identifier_p inside
1097         TEMPLATE_ID_EXPR.
1099 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
1101         PR c++/84618
1102         * parser.c (cp_parser_lambda_introducer): Reject any capture not
1103         involving a VAR_DECL or a PARM_DECL.
1105 2018-03-05  Pádraig Brady  <P@draigBrady.com>
1106             Jason  Merrill  <jason@redhat.com>
1107             Nathan Sidwell  <nathan@acm.org>
1109         PR c++/84497
1110         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
1112 2018-03-03  Jason Merrill  <jason@redhat.com>
1114         PR c++/84686 - missing volatile loads.
1115         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
1117 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
1119         PR c++/71464
1120         * optimize.c (maybe_thunk_body): Bail out immediately if either
1121         fns[0] or fns[1] is null.
1123 2018-03-02  Marek Polacek  <polacek@redhat.com>
1125         PR c++/84578
1126         * constexpr.c (get_array_or_vector_nelts): New.
1127         (cxx_eval_array_reference): Use it.
1128         (cxx_eval_vec_init_1): Likewise.
1129         (cxx_eval_store_expression): Likewise.
1131 2018-03-02  Jason Merrill  <jason@redhat.com>
1133         * semantics.c (force_paren_expr): Remove redundant test.
1135 2018-03-02  Marek Polacek  <polacek@redhat.com>
1137         PR c++/84663
1138         * decl.c (cp_complete_array_type): Check error_mark_node.
1140         PR c++/84664
1141         * typeck.c (cp_perform_integral_promotions): Check the result of
1142         mark_rvalue_use.
1144 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
1146         PR c++/84662
1147         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
1148         RETURN instead of return.
1149         <case POINTER_PLUS_EXPR>: Likewise.
1150         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
1151         it instead of wrapping it into CONVERT_EXPR.
1153 2018-03-02  Jason Merrill  <jason@redhat.com>
1155         Fix MIPS16 ICE.
1156         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
1158 2018-03-02  Marek Polacek  <polacek@redhat.com>
1160         PR c++/84590
1161         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
1162         wrapped in VIEW_CONVERT_EXPR.
1164 2018-03-01  Martin Sebor  <msebor@redhat.com>
1166         PR c++/84294
1167         * decl.c (check_redeclaration_no_default_args): Merge attributes
1168         specified on redeclarations of the same function template.
1169         Remove dead code.
1171 2018-03-01  Marek Polacek  <polacek@redhat.com>
1172             Jason Merrill  <jason@redhat.com>
1174         PR c++/84582
1175         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
1176         a template.
1177         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
1178         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
1179         of instantiate_non_dependent_expr.
1180         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
1182 2018-03-01  Nathan Sidwell  <nathan@acm.org>
1184         PR c++/84434
1185         * name-lookup.c (member_vec_dedup): Remove manually peeled
1186         iteration.  Ignore dependent ctor inheritance.
1188 2018-03-01  Jason Merrill  <jason@redhat.com>
1190         PR c++/71569 - decltype of template.
1191         * parser.c (cp_parser_decltype_expr): Handle missing template args.
1193 2018-03-01  Marek Polacek  <polacek@redhat.com>
1195         PR c++/84596
1196         * constexpr.c (require_rvalue_constant_expression): New function.
1197         * cp-tree.h: Declare it.
1198         * semantics.c (finish_static_assert): Use it instead of
1199         require_potential_rvalue_constant_expression.
1201 2018-03-01  Jason Merrill  <jason@redhat.com>
1202             Alexandre Oliva <aoliva@redhat.com>
1204         PR c++/71569 - ICE with redundant args on member variable template.
1205         * decl.c (start_decl): Handle partial specialization of member
1206         variable template.
1207         * pt.c (determine_specialization): Allow partial specialization
1208         of member variable template without specializing enclosing class.
1209         (process_partial_specialization): Improve error message.
1211 2018-02-28  Jason Merrill  <jason@redhat.com>
1213         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
1214         * pt.c (determine_specialization): Check ref-qualifier.
1216 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1218         PR c++/84609
1219         * parser.c (cp_parser_attributes_opt): Formatting fix.
1220         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
1221         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
1222         New functions.
1223         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
1224         instead of tentative parse to peek over optional attribute tokens
1225         to check for CPP_COLON after them.
1227         PR c++/83871
1228         PR c++/83503
1229         * pt.c (INCLUDE_STRING): Remove define.
1230         (warn_spec_missing_attributes): Use pretty_printer instead of
1231         std::string.  Fix up inform call so that the list of attributes
1232         is in %s argument.
1234 2018-02-28  Martin Sebor  <msebor@redhat.com>
1236         PR testsuite/84617
1237         * decl.c (duplicate_decls): Fully merge attributes const, pure,
1238         and malloc.
1240 2018-02-28  Nathan Sidwell  <nathan@acm.org>
1242         PR c++/84602
1243         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
1244         * name-lookup.c (fields_linear_search): Look in an anon-aggr
1245         regardless of want_type.
1246         (search_anon_aggr): Just use get_class_binding_direct.
1248 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
1250         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
1251         inform_n.
1253 2018-02-27  Martin Sebor  <msebor@redhat.com>
1255         * pt.c: Avoid including <string> directly.
1257 2018-02-27  Martin Sebor  <msebor@redhat.com>
1259         PR c++/83871
1260         PR c++/83503
1261         * cp-tree.h (warn_spec_missing_attributes): New function.
1262         ((check_explicit_specialization): Add an argument.  Call the above
1263         function.
1264         * decl.c (duplicate_decls): Avoid applying primary function template's
1265         attributes to its explicit specializations.
1266         cp/pt.c (warn_spec_missing_attributes): Define.
1268 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
1270         PR c++/71546 - lambda init-capture with qualified-id.
1271         * parser.c (cp_parser_lambda_introducer): Clear scope after
1272         each lambda capture.
1274 2018-02-27  Nathan Sidwell  <nathan@acm.org>
1276         PR c++/84426
1277         * name-lookup.h (get_member_slot): Rename ...
1278         (find_member_slot): ... here.
1279         (add_member_slot): New.
1280         * name-lookup.c (member_vec_linear_search): No need to check for
1281         NULL slot.
1282         (get_member_slot): Rename ...
1283         (find_member_slot): ... here.  Don't add slot for incomplete class.
1284         (add_member_slot): New.
1285         * class.c (add_method): Adjust get_member_slot rename.  Bail out
1286         if push_class_level_binding fails.  Create slot and grok
1287         properties once we're committed to insertion.
1289 2018-02-27  Jason Merrill  <jason@redhat.com>
1291         PR c++/84489 - dependent default template argument
1292         * pt.c (type_unification_real): Handle early substitution failure.
1294 2018-02-26  Jason Merrill  <jason@redhat.com>
1296         PR c++/84560 - ICE capturing multi-dimensional VLA.
1297         * tree.c (array_of_runtime_bound_p): False if the element is
1298         variably-modified.
1300         PR c++/84441 - ICE with base initialized from ?:
1301         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
1303         PR c++/84520 - ICE with generic lambda in NSDMI.
1304         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
1305         'this' in a generic lambda instantiation.
1307         PR c++/84559 - ICE with constexpr VLA.
1308         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
1309         for constexpr variable with VLA type.
1311 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1313         PR c++/84558
1314         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
1315         a valid constant initializer.  Formatting fixes.
1317 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1319         PR c++/84540
1320         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
1321         returning NULL_TREE.
1322         (apply_late_template_attributes): Likewise.
1324 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
1326         PR c++/84557
1327         * parser.c (cp_parser_omp_var_list_no_open): Only call
1328         cp_parser_lookup_name_simple on names satisfying identifier_p.
1329         (cp_parser_oacc_routine): Likewise.
1331 2018-02-26  Jason Merrill  <jason@redhat.com>
1333         PR c++/84551 - ICE with concepts and -g.
1334         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
1336 2018-02-26  Marek Polacek  <polacek@redhat.com>
1338         PR c++/84325
1339         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
1340         non-types.
1342 2018-02-26  Jason Merrill  <jason@redhat.com>
1344         PR c++/84447 - ICE with deleted inherited ctor with default arg.
1345         * call.c (build_over_call): Handle deleted functions in one place.
1347 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1349         PR c++/84533
1350         * decl.c (redeclaration_error_message): Don't try to use
1351         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
1353 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
1355         * lambda.c (build_capture_proxy): Define static.
1356         * cp-tree.h (build_capture_proxy): Remove.
1358 2018-02-26  Marek Polacek  <polacek@redhat.com>
1360         PR c++/84537
1361         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
1362         if name is error node.
1364 2018-02-25  Jason Merrill  <jason@redhat.com>
1366         PR c++/84015 - ICE with class deduction and auto template parm.
1367         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
1369 2018-02-24  Marek Polacek  <polacek@redhat.com>
1371         PR c++/83692
1372         * constexpr.c (maybe_constant_init_1): New function.
1373         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
1374         (cxx_constant_init): New function.
1375         * cp-tree.h (cxx_constant_init): Declare.
1376         * typeck2.c (store_init_value): Call cxx_constant_init instead of
1377         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
1379 2018-02-22  Jason Merrill  <jason@redhat.com>
1381         PR c++/70468 - ICE with constructor delegation via typedef.
1382         * pt.c (tsubst_initializer_list): Check for other mem-initializers
1383         with constructor delegation.
1385 2018-02-22  Jason Merrill  <jason@redhat.com>
1387         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
1388         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
1389         VECTOR_TYPE.
1391 2018-02-22  Marek Polacek  <polacek@redhat.com>
1393         PR c++/84493
1394         * parser.c (cp_parser_braced_list): Use require_open instead of
1395         consume_open.
1397 2018-02-21  Jason Merrill  <jason@redhat.com>
1399         PR c++/84454 - ICE with pack expansion in signature.
1400         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
1402 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
1404         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
1405         IF_STMT.
1407 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
1409         PR c++/84446
1410         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
1411         on error_mark_node.
1413 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
1415         PR c++/84445
1416         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
1417         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
1419         PR c++/84449
1420         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
1421         returns error_mark_node, return it immediately.
1422         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
1423         error_mark_node, return error_mark_node.
1425         PR c++/84455
1426         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
1427         function_depth to avoid GC during finish_lambda_function.
1429 2018-02-19  Jason Merrill  <jason@redhat.com>
1431         PR c++/84429 - ICE capturing VLA.
1432         * lambda.c (build_capture_proxy): Handle reference refs.
1434 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
1436         PR c++/84448
1437         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
1438         either operand is error_mark_node, set current.lhs to that instead of
1439         creating a binary op with error_mark_node operands.
1441         PR c++/84430
1442         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
1444 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
1446         PR c++/84348
1447         * decl.c (grokdeclarator): Early return error_mark_node upon
1448         ill-formed friend declaration.
1450 2018-02-16  Marek Polacek  <polacek@redhat.com>
1451             Jakub Jelinek  <jakub@redhat.com>
1453         PR c++/84192
1454         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
1455         set *jump_target to anything if jump_target is NULL.
1457 2018-02-16  Jason Merrill  <jason@redhat.com>
1459         PR c++/84151 - unnecessary volatile load with static member.
1460         * call.c (build_new_method_call_1): Avoid loading from a volatile
1461         lvalue used as the object argument for a static member function.
1463         PR c++/81853 - using-directive and constexpr.
1464         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
1466         PR c++/84420 - ICE with structured binding in lambda.
1467         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
1469         PR c++/83835 - C++17 error with constructor ctors.
1470         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
1472         PR c++/82664 - ICE with reference to function template parm.
1473         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
1474         NOP_EXPRs.
1476         PR c++/82764 - C++17 ICE with empty base
1477         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
1479 2018-02-16  Jason Merrill  <jason@redhat.com>
1481         PR c++/84421 - type-dependent if constexpr
1482         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
1484 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1486         Deprecate -ffriend-injection.
1487         * decl.c (cxx_init_decl_processing): Emit warning on option.
1488         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
1489         friend.
1491 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
1493         PR c++/82468
1494         * decl.c (check_special_function_return_type): Reject template
1495         template parameter in deduction guide.
1497 2018-02-16  Nathan Sidwell  <nathan@acm.org>
1499         PR c++/84375
1500         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
1502 2018-02-15  Jason Merrill  <jason@redhat.com>
1504         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
1505         * call.c (convert_like_real): Don't use the copy-list-initialization
1506         shortcut for ck_base.
1508         PR c++/84045 - ICE with typedef and noexcept.
1509         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
1511         PR c++/84376 - ICE with omitted template arguments.
1512         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
1514         PR c++/84368 - wrong error with local variable in variadic lambda.
1515         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
1516         local_specializations.
1518 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
1520         PR c++/84330
1521         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
1522         as first argument.
1524 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1526         PR c++/84350
1527         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
1528         init, early return.
1530 2018-02-14  Nathan Sidwell  <nathan@acm.org>
1532         * decl2.c (mark_vtable_entries): Set input_location to decl's.
1533         (c_parse_final_cleanups): Restore input_location after emitting
1534         vtables.
1536 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
1538         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
1539         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
1540         auto_deduction_context, tree, int): Add defaults.
1541         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
1542         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
1543         tsubst_flags_t argument.
1544         * init.c (build_new): Likewise.
1546 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
1548         PR c++/84364
1549         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
1550         about return other than *this in assignment operators if
1551         retval is type dependent expression.
1553 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
1555         PR c++/84333
1556         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
1557         save_expr for the G++ extension.
1559 2018-02-13  Jason Merrill  <jason@redhat.com>
1561         PR c++/84080 - ICE with return type deduction and specialization.
1562         * pt.c (determine_specialization): Check uses_template_parms.
1564         Fix more variadic capture issues.
1565         * pt.c (find_parameter_packs_r): Also look at explicit captures.
1566         (check_for_bare_parameter_packs): Check current_class_type for
1567         lambda context.
1568         (extract_locals_r): Handle seeing a full instantiation of a pack.
1569         (tsubst_pack_expansion): Likewise.  Force lambda capture.
1570         * parser.c (cp_parser_lambda_introducer): Don't
1571         check_for_bare_parameter_packs.
1573         PR c++/84338 - wrong variadic sizeof.
1574         * pt.c (argument_pack_select_arg): Like the macro, but look through
1575         a pack expansion.
1576         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
1577         (extract_fnparm_pack): Do make_pack_expansion.
1578         (extract_locals_r): Do strip a pack expansion.
1579         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
1581 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
1583         PR c++/84341
1584         * parser.c (cp_parser_binary_expression): Use build_min instead of
1585         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
1587 2018-02-12  Nathan Sidwell  <nathan@acm.org>
1589         PR c++/84263
1590         * parser.c (cp_parser_decltype): Push and pop
1591         deferring_access_checks.  Reorganize to avoid goto.
1593 2018-02-12  Richard Biener  <rguenther@suse.de>
1595         PR c++/84281
1596         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
1597         uniform constructors and delay allocating them fully.
1599 2018-02-09  Jason Merrill  <jason@redhat.com>
1601         PR c++/84036 - ICE with variadic capture.
1602         Handle variadic capture proxies more like non-variadic.
1603         * lambda.c (build_capture_proxy): Remove workaround.
1604         * pt.c (find_parameter_packs_r): The proxy is a pack.
1605         (instantiate_class_template_1): Remove dead lambda code.
1606         (extract_fnparm_pack): Don't make_pack_expansion.
1607         (extract_locals_r): Don't strip a pack expansion.
1608         (tsubst_pack_expansion): Handle proxy packs.  Use
1609         PACK_EXPANSION_EXTRA_ARGS less.
1610         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
1611         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
1612         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
1613         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
1614         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
1616 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
1618         PR sanitizer/83987
1619         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
1621 2018-02-09  Jason Merrill  <jason@redhat.com>
1623         PR c++/81917 - ICE with void_t and partial specialization.
1624         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
1625         calling most_specialized_partial_spec.
1627 2018-02-09  Nathan Sidwell  <nathan@acm.org>
1629         PR c/84293
1630         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
1631         Pass expr location to strict_aliasing_warning.
1633 2018-02-09  Jason Merrill  <jason@redhat.com>
1635         PR c++/84296 - ICE with qualified-id in template.
1636         PR c++/83714
1637         * pt.c (unknown_base_ref_p): New.
1638         (instantiation_dependent_scope_ref_p): Use it instead of
1639         any_dependent_bases_p.
1641 2018-02-09  Marek Polacek  <polacek@redhat.com>
1642             Jakub Jelinek  <jakub@redhat.com>
1644         PR c++/83659
1645         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
1646         fold_indirect_ref_1, including poly_*int64.  Verify first that
1647         tree_fits_poly_int64_p (op01).  Formatting fixes.
1649 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1651         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
1652         * lambda.c (build_capture_proxy): Likewise.
1653         * search.c (field_access_p): Likewise.
1654         * semantics.c (omp_clause_decl, omp_privatize_field,
1655         finish_omp_clauses): Likewise.
1657 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1659         PR c++/83806
1660         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
1661         case of nullptr too.
1663 2018-02-08  Nathan Sidwell  <nathan@acm.org>
1665         * class.c (finish_struct): Fix std:initializer_list diagnostic
1666         formatting.
1668 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
1670         PR c++/83204
1671         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
1673 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
1675         PR c++/84082
1676         * parser.c (cp_parser_dot_deref_incomplete): New function.
1677         (cp_parser_postfix_dot_deref_expression): Use it.
1679 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
1681         PR c++/81610
1682         PR c++/80567
1683         * name-lookup.c (suggest_rid_p): New function.
1684         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
1685         suggest_rid_p.
1687 2018-02-07  Jason Merrill  <jason@redhat.com>
1689         PR c++/84182 - ICE with captured lambda
1690         PR c++/84181
1691         * pt.c (extract_locals_r, extract_local_specs): New.
1692         (tsubst_pack_expansion): Use them.
1694 2018-02-07  Martin Liska  <mliska@suse.cz>
1696         PR c++/84059.
1697         * class.c (add_method): Append argument value.
1698         * cp-tree.h (maybe_version_functions): Add new argument.
1699         * decl.c (decls_match): Call it if a declaration does not
1700         have DECL_FUNCTION_VERSIONED.
1701         (maybe_version_functions): record argument is added.
1703 2018-02-05  Marek Polacek  <polacek@redhat.com>
1705         * class.c: Remove unused global variables.
1706         (build_primary_vtable): Don't gather statistics.
1707         (print_class_statistics): Remove.
1708         * cp-tree.h (print_class_statistics): Remove.
1709         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
1711 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
1713         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
1714         * constexpr.c (cx_check_missing_mem_inits): Likewise.
1715         * decl.c (next_initializable_field, find_decomp_class_base,
1716         cp_finish_decomp): Likewise.
1717         * typeck2.c (process_init_constructor_record): Likewise.
1719 2018-02-02  Jason Merrill  <jason@redhat.com>
1721         PR c++/84181 - ICE with lambda parm in template argument.
1722         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
1724 2018-02-01  Jason Merrill  <jason@redhat.com>
1726         PR c++/84160 - ICE with nested variadic capture.
1727         * lambda.c (is_capture_proxy_with_ref): New.
1728         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
1729         COMPONENT_REF.
1730         * expr.c (mark_use): Use is_capture_proxy_with_ref.
1731         * constexpr.c (potential_constant_expression_1): Likewise.
1732         * semantics.c (process_outer_var_ref): Likewise.
1734 2018-02-01  Marek Polacek  <polacek@redhat.com>
1736         PR c++/84125
1737         * typeck.c (build_address): Relax the assert when
1738         processing_template_decl.
1740 2018-02-01  Jason Merrill  <jason@redhat.com>
1742         PR c++/84126 - ICE with variadic generic lambda
1743         PR c++/84036
1744         PR c++/82249
1745         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
1746         PACK_EXPANSION_EXTRA_ARGS.
1748 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1750         PR c++/83796
1751         * call.c (convert_like_real): If w're initializing from {} explicitly
1752         call abstract_virtuals_error_sfinae.
1754 2018-01-31  Jason Merrill  <jason@redhat.com>
1755             Jakub Jelinek  <jakub@redhat.com>
1757         PR c++/83993
1758         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
1759         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
1760         on ADDR_EXPR.
1762 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
1764         PR c++/83993
1765         * constexpr.c (diag_array_subscript): Emit different diagnostics
1766         if TYPE_DOMAIN (arraytype) is NULL.
1767         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
1768         with NULL TYPE_DOMAIN use size_zero_node as nelts.
1770 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
1772         PR c++/84092
1773         * semantics.c (finish_qualified_id_expr): When handling an
1774         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
1776 2018-01-31  Marek Polacek  <polacek@redhat.com>
1778         PR c++/84138
1779         * cp-gimplify.c (cp_fold): Check if X is an error node before
1780         calling useless_type_conversion_p.
1782 2018-01-30  Jason Merrill  <jason@redhat.com>
1784         PR c++/84091 - ICE with local class in lambda in template.
1785         * decl2.c (determine_visibility): Look for outer containing template
1786         instantiation.
1788         PR c++/84098 - ICE with lambda in template NSDMI.
1789         * pt.c (instantiate_class_template_1): Ignore more lambdas.
1791 2018-01-29  Jason Merrill  <jason@redhat.com>
1793         PR c++/68810 - wrong location for reinterpret_cast error.
1794         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
1795         !dofold.
1797 2018-01-29  Marek Polacek  <polacek@redhat.com>
1799         PR c++/83996
1800         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
1801         => fooarray[1] in offset_int.
1803 2018-01-29  Jason Merrill  <jason@redhat.com>
1805         PR c++/83942 - wrong unused warning with static_cast.
1806         * cvt.c (ocp_convert): Call mark_rvalue_use.
1808 2018-01-26  Jason Merrill  <jason@redhat.com>
1810         PR c++/83956 - wrong dtor error with anonymous union
1811         * method.c (walk_field_subobs): Variant members only affect
1812         deletedness.
1813         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
1815         PR c++/84036 - ICE with variadic capture.
1816         PR c++/82249
1817         * pt.c (tsubst_pack_expansion): When optimizing a simple
1818         substitution, pull a single pack expansion out of its pack.
1820         PR c++/82514 - ICE with local class in generic lambda.
1821         * pt.c (regenerated_lambda_fn_p): Remove.
1822         (enclosing_instantiation_of): Don't use it.
1823         (tsubst_function_decl): Call enclosing_instantiation_of.
1825         * pt.c (lookup_template_class_1): Add sanity check.
1826         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
1828 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
1830         PR c++/84031
1831         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
1832         recursive calls that return ret.
1833         (cp_finish_decomp): Ignore unnamed bitfields.
1835 2018-01-23  Jason Merrill  <jason@redhat.com>
1837         PR c++/82249 - wrong mismatched pack length error.
1838         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
1839         unsubstituted function parameter pack.
1841 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
1843         PR c++/83921
1844         * decl.c (check_for_uninitialized_const_var): Not static; add
1845         bool and tsubst_flags_t parameters; adjust to be used both in
1846         constexpr context and not.
1847         * constexpr.c (potential_constant_expression_1): Use the above.
1848         * cp-tree.h (check_for_uninitialized_const_var): Declare.
1850 2018-01-23  Jason Merrill  <jason@redhat.com>
1852         PR c++/83947 - ICE with auto declarations.
1853         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
1854         * decl.c (undeduced_auto_decl): Limit to vars and fns.
1856 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
1858         PR c++/83974
1859         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
1860         for pointer to member function types.
1862 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1864         PR sanitizer/83987
1865         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
1866         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
1868 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1870         PR c++/83988
1871         * pt.c (tsubst_baselink): Remove optype assert.
1872         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
1874 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
1876         PR c++/83958
1877         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
1878         refers to incomplete type.
1880 2018-01-23  Nathan Sidwell  <nathan@acm.org>
1882         Deprecate ARM-era for scope handling
1883         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
1884         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
1885         cleared.
1886         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
1887         cleanup handling.
1888         * semantics.c (begin_for_scope): Flag_new_for_scope is
1889         boolean-like.
1890         (finish_for_stmt, begin_range_for_stmt): Likewise.
1892 2018-01-22  Jason Merrill  <jason@redhat.com>
1894         PR c++/83720
1895         * decl2.c (determine_visibility): Fix template_decl handling
1896         instead of blocking it.
1898         PR c++/83720 - ICE with lambda and LTO.
1899         * decl2.c (determine_visibility): Clear template_decl for
1900         function-scope decls.  Propagate anonymous linkage from containing
1901         function.
1903 2018-01-22  Marek Polacek  <polacek@redhat.com>
1905         PR c++/81933
1906         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
1907         split out anything.
1909 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
1911         PR c++/83895
1912         * decl.c (grokdeclarator): Don't diagnose extra parens
1913         on typedefs.
1915 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
1917         PR c++/81167
1918         * call.c (joust): Use TREE_TYPE (source) if source is
1919         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
1921         PR c++/83919
1922         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
1923         for direct enum init.
1924         * decl.c (reshape_init): Likewise.
1926 2018-01-19  Marek Polacek  <polacek@redhat.com>
1928         * constexpr.c (fold_simple): Simplify.
1930 2018-01-18  Jason Merrill  <jason@redhat.com>
1932         PR c++/83714
1933         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
1934         * pt.c (instantiation_dependent_scope_ref_p): True if
1935         any_dependent_bases_p.
1937 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1939         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
1940         vs DECL_NONTRIVIALLY_INITIALIZED_P).
1942 2018-01-18  Jason Merrill  <jason@redhat.com>
1944         PR c++/82461 - constexpr list-initialized member
1945         * constexpr.c (potential_constant_expression_1): Check
1946         TARGET_EXPR_DIRECT_INIT_P.
1948 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
1950         PR c++/81013
1951         * decl.c (xref_basetypes): Early return upon error about derived
1952         union.
1954 2018-01-18  Nathan Sidwell  <nathan@acm.org>
1956         PR c++/83160
1957         * cp-tree.h (mark_use): Declare.
1958         * expr.c (mark_use): Make extern.
1959         * call.c (direct_reference_binding): Set inner conv's
1960         rvaluedness_matches_p, if it is an identity.
1961         (convert_like_real): Mark lvalue or rvalue use for identity as
1962         rvaledness_matches_p demands.
1964 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
1966         PR c++/83824
1967         * parser.c (attr_chainon): New function.
1968         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
1969         cp_parser_namespace_definition, cp_parser_init_declarator,
1970         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
1971         cp_parser_gnu_attributes_opt): Use it.
1972         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
1973         cp_parser_objc_struct_declaration): Likewise.  Don't reset
1974         prefix_attributes if attributes is error_mark_node.
1976 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1978         PR c++/78344
1979         * decl.c (grokdeclarator): Do not append the error_mark_node
1980         due to an erroneous optional attribute-specifier-seq.
1982 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
1984         PR c++/83897
1985         * cp-gimplify.c (cp_maybe_instrument_return): Handle
1986         CLEANUP_POINT_EXPR.
1988 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
1990         PR c++/81054
1991         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
1992         error_mark_node when we give an error.
1993         * decl.c (cp_finish_decl): Use the latter.
1995 2018-01-17  Nathan Sidwell  <nathan@acm.org>
1997         PR c++/83287
1998         * init.c (build_raw_new_expr): Scan list for lookups to keep.
2000 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2002         PR c++/83814
2003         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
2004         the C++ part.  If processing a template, call
2005         fold_non_dependent_expr rather than fully folding.
2007 2018-01-17  Jason Merrill  <jason@redhat.com>
2009         PR c++/81067 - redundant NULL warning.
2010         * call.c (convert_like_real): Restore null_node handling.
2012 2018-01-17  Jason Merrill  <jason@redhat.com>
2014         PR c++/81843 - ICE with variadic member template.
2015         PR c++/72801
2016         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
2017         template args.
2019 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
2021         PR c++/83799
2022         * pt.c (type_dependent_expression_p): Strip any location wrapper
2023         before testing tree codes.
2024         (selftest::test_type_dependent_expression_p): New function.
2025         (selftest::cp_pt_c_tests): Call it.
2027 2018-01-17  Nathan Sidwell  <nathan@acm.org>
2029         PR c++/83739
2030         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
2031         this not a final instantiation.
2033 2018-01-16  Jason Merrill  <jason@redhat.com>
2035         PR c++/83714 - ICE checking return in template.
2036         * typeck.c (check_return_expr): Call build_non_dependent_expr.
2038 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
2040         PR c++/83817
2041         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
2042         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
2043         instead of CALL_FROM_THUNK_P.
2045         PR c++/83825
2046         * name-lookup.c (member_vec_dedup): Return early if len is 0.
2047         (resort_type_member_vec, set_class_bindings,
2048         insert_late_enum_def_bindings): Use vec qsort method instead of
2049         calling qsort directly.
2051 2018-01-15  Martin Sebor  <msebor@redhat.com>
2053         PR c++/83588
2054         * class.c (find_flexarrays): Make a record of multiple flexible array
2055         members.
2057 2018-01-12  Jason Merrill  <jason@redhat.com>
2059         PR c++/83186 - ICE with static_cast of list-initialized temporary.
2060         * typeck.c (build_static_cast): Use build_non_dependent_expr.
2062 2018-01-12  Nathan Sidwell  <nathan@acm.org>
2064         * cp-tree.h (mark_rvalue_use): Add parm name.
2065         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
2066         mark_rvalue_use.
2067         * call.c (convert_like_real): Fix formatting.
2069 2018-01-11  Jason Merrill  <jason@redhat.com>
2071         PR c++/82728 - wrong -Wunused-but-set-variable
2072         PR c++/82799
2073         PR c++/83690
2074         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
2075         * decl.c (case_conversion): Likewise.
2076         * semantics.c (finish_static_assert): Call
2077         perform_implicit_conversion_flags.
2079 2018-01-11  Nathan Sidwell  <nathan@acm.org>
2081         * method.c (enum mangling_flags): Delete long-dead enum.
2083 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2085         * parser.c (cp_parser_std_attribute_spec): When
2086         token_pair::require_open / require_close return false simply
2087         return error_mark_node, avoid duplicate cp_parser_error about
2088         expected '(' / ')', respectively.
2090 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
2092         PR c++/43486
2093         * call.c (null_ptr_cst_p): Strip location wrappers when
2094         converting from '0' to a pointer type in C++11 onwards.
2095         (conversion_null_warnings): Replace comparison with null_node with
2096         call to null_node_p.
2097         (build_over_call): Likewise.
2098         * cp-gimplify.c (cp_fold): Remove the early bailout when
2099         processing_template_decl.
2100         * cp-lang.c (selftest::run_cp_tests): Call
2101         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
2102         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
2103         (selftest::run_cp_tests): Move decl to bottom of file.
2104         (null_node_p): New inline function.
2105         (selftest::cp_pt_c_tests): New decl.
2106         (selftest::cp_tree_c_tests): New decl.
2107         * cvt.c (build_expr_type_conversion): Replace comparison with
2108         null_node with call to null_node_p.
2109         * error.c (args_to_string): Likewise.
2110         * except.c (build_throw): Likewise.
2111         * mangle.c (write_expression): Skip location wrapper nodes.
2112         * parser.c (literal_integer_zerop): New function.
2113         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
2114         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
2115         param of cp_parser_parenthesized_expression_list.  When calling
2116         warn_for_memset, replace integer_zerop calls with
2117         literal_integer_zerop, eliminating the double logical negation
2118         cast to bool.  Eliminate the special-casing for CONST_DECL in
2119         favor of the fold_for_warn within warn_for_memset.
2120         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
2121         param, defaulting to false.  Convert "expr" to a cp_expr, and call
2122         maybe_add_location_wrapper on it when wrap_locations_p is true.
2123         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
2124         the result for RID_ALIGNOF and RID_SIZEOF.
2125         (cp_parser_builtin_offsetof): Likewise.
2126         * pt.c: Include "selftest.h".
2127         (tsubst_copy): Handle location wrappers.
2128         (tsubst_copy_and_build): Likewise.
2129         (build_non_dependent_expr): Likewise.
2130         (selftest::test_build_non_dependent_expr): New function.
2131         (selftest::cp_pt_c_tests): New function.
2132         * tree.c: Include "selftest.h".
2133         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
2134         (selftest::test_lvalue_kind): New function.
2135         (selftest::cp_tree_c_tests): New function.
2136         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
2137         (cp_build_binary_op): Replace comparison with null_node with call
2138         to null_node_p.
2139         (build_address): Use location of operand when building address
2140         expression.
2142 2018-01-10  Marek Polacek  <polacek@redhat.com>
2144         PR c++/82541
2145         * call.c (build_conditional_expr_1): Check complain before warning.
2146         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
2147         -Wduplicated-branches.
2149 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
2151         PR c++/81327
2152         * call.c (maybe_warn_class_memaccess): Add forward declaration.
2153         Change last argument from tree * to const vec<tree, va_gc> *, adjust
2154         args uses and check number of operands too.  Don't strip away any
2155         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
2156         Deal with src argument not having pointer type.  Check
2157         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
2158         test.
2159         (build_over_call): Call maybe_warn_class_memaccess here on the
2160         original arguments.
2161         (build_cxx_call): Rather than here on converted arguments.
2163 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
2165         PR c++/81055
2166         * init.c (build_vec_init): Avoid building an INIT_EXPR with
2167         error_mark_node as second argument.
2169 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
2171         PR c++/83734
2172         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
2173         in STATEMENT_LIST.  Remove unneeded assert.
2175 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
2176             Alan Hayward  <alan.hayward@arm.com>
2177             David Sherwood  <david.sherwood@arm.com>
2179         * constexpr.c (cxx_eval_array_reference): Handle polynomial
2180         VECTOR_CST_NELTS.
2181         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
2182         * call.c (build_conditional_expr_1): Likewise.
2183         * decl.c (cp_finish_decomp): Likewise.
2184         * mangle.c (write_type): Likewise.
2185         * typeck.c (structural_comptypes): Likewise.
2186         (cp_build_binary_op): Likewise.
2187         * typeck2.c (process_init_constructor_array): Likewise.
2189 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2191         PR c++/83555
2192         * typeck.c (build_static_cast_1): For static casts to reference types,
2193         call build_base_path with flag_delete_null_pointer_checks as nonnull
2194         instead of always false.  When -fsanitize=null, call
2195         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
2196         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
2197         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
2199 2018-01-03  Nathan Sidwell  <nathan@acm.org>
2201         PR c++/83667
2202         * method.c (make_alias_for): Copy DECL_CONTEXT.
2204 2018-01-03  Marek Polacek  <polacek@redhat.com>
2206         PR c++/83592
2207         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
2209 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
2211         PR preprocessor/83602
2212         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
2213         for builtin macros.
2215         PR c++/83634
2216         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
2217         error_mark_node, return error_mark_node.
2219         Update copyright years.
2221 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
2223         PR c++/83556
2224         * tree.c (replace_placeholders_r): Pass NULL as last argument to
2225         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
2226         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
2227         to false and return.
2228         (replace_placeholders): Pass NULL instead of &pset as last argument
2229         to cp_walk_tree.
2231 2018-01-02  Nathan Sidwell  <nathan@acm.org>
2233         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
2234         lval var.
2236 Copyright (C) 2018 Free Software Foundation, Inc.
2238 Copying and distribution of this file, with or without modification,
2239 are permitted in any medium without royalty provided the copyright
2240 notice and this notice are preserved.