PR c++/52869
[official-gcc.git] / gcc / cp / ChangeLog
blob6d99d6a5d79fd4c8284e3f4029611defb84d6edd
1 2018-11-16  Kamlesh Kumar  <kamleshbhalui@gmail.com>
3         DR 1207
4         PR c++/52869
5         * parser.c (cp_parser_noexcept_specification_opt): Call
6         inject_this_parameter.
8 2018-11-16  Jason Merrill  <jason@redhat.com>
10         Implement P0479R5, [[likely]] and [[unlikely]].
11         * tree.c (handle_likeliness_attribute): New.
12         (std_attribute_table): Add likely/unlikely.
13         * cp-gimplify.c (lookup_hotness_attribute, remove_hotness_attribute)
14         (process_stmt_hotness_attribute, first_stmt): New.
15         (genericize_if_stmt): Check for duplicate predictions.
16         * parser.c (cp_parser_statement): Call
17         process_stmt_hotness_attribute.
18         (cp_parser_label_for_labeled_statement): Apply attributes to case.
19         * decl.c (finish_case_label): Give label in template type void.
20         * pt.c (tsubst_expr) [CASE_LABEL_EXPR]: Copy attributes.
21         [PREDICT_EXPR]: Handle.
23 2018-11-16  Nathan Sidwell  <nathan@acm.org>
25         Remove ovl_used, it is no longer needed
26         * cp-tree.h (OVL_USED_P): Delete.
27         (lookup_keep): Delete.
28         * friend.c (add_friend): Don't call it.
29         * parser.c (lookup_literal_operator): Likewise.
30         (cp_parser_primary_expression): Likewise.
31         * semantics.c (perform_koenig_lookup): Likewise.
32         * pt.c (tsubst_copy <OVERLOAD>): Don't assert OVL_USED_P.
33         * tree.c (ovl_copy): Delete.
34         (ovl_insert): Remove OVL_USED_P checks.
35         (ovl_iterator::reveal_node): Likewise.
36         (ovl_iterator::remove__node): Likewise.
37         (ovl_used, lookup_keep): Delete.
39         PR c++/87269
40         * parser.c (lookup_literal_operator): Mark overload for keeping
41         when inside template.  Refactor.
43 2018-11-15  Nathan Sidwell  <nathan@acm.org>
45         PR c++/86246
46         PR c++/87989
47         * typeck.c (finish_class_member_access_expr): Conversion operator
48         to dependent type is dependent.
50 2018-11-15  Paolo Carlini  <paolo.carlini@oracle.com>
52         * constexpr.c (ensure_literal_type_for_constexpr_object): Use
53         DECL_SOURCE_LOCATION in error_at calls.
55 2018-11-15  Nathan Sidwell  <nathan@acm.org>
57         DR 2336
58         * cp-tree.h (enum special_function_kind): Add sfk_virtual_destructor.
59         * method.c (type_has_trivial_fn): Add it.
60         (SFK_DTOR_P): Likewise.
61         (synthesized_method_base_walk): Don't check access of vbases of
62         abstract classes when sfk_virtual_destructor.
63         (synthesized_method_walk): Skip vbases of abstract classes except
64         when sfk_virtual_destructor.
65         (get_defaulted_eh_spec): Set sfk_virtual_destructor as needed.
67         * cp-tree.h (enum special_function_kind): Reorder and comment.
68         * method.c (SFK_CTOR_P, SFK_DTOR_P, SFK_ASSIGN_P, SFK_COPY_P)
69         (SFK_MOVE_P): New predicates.
70         (walk_field_subobs, synthesized_method_base_walk): Drop
71         copy_arg_p, move_p, assign_p args.  Use new SFK predicates.  Order
72         parameters consistently.
73         (synthesized_method_walk): Drop ctor_p, copy_arg_p, move_p,
74         assign_p calculations.  Use new SFK predicates.  Adjust calls to
75         worker functions.
77 2018-11-14  Paolo Carlini  <paolo.carlini@oracle.com>
79         * parser.c (make_id_declarator): Add location_t parameter.
80         (cp_parser_lambda_declarator_opt): Adjust call.
81         (cp_parser_decomposition_declaration): Likewise.
82         (cp_parser_alias_declaration): Likewise.
83         (cp_parser_direct_declarator): Likewise.
84         (cp_parser_member_declaration): Likewise.
85         (cp_parser_objc_class_ivars): Likewise.
86         * decl.c (grokdeclarator): Use declarator->id_loc in two error
87         messages.
89 2018-11-14  Jakub Jelinek  <jakub@redhat.com>
91         P1236R1 - Signed integers are two's complement
92         * constexpr.c (cxx_eval_check_shift_p): Disable the signed LSHIFT_EXPR
93         checks for c++2a.
95 2018-11-13  David Malcolm  <dmalcolm@redhat.com>
97         * call.c: Replace "source_location" with "location_t".
98         * cp-tree.h: Likewise.
99         * cvt.c: Likewise.
100         * name-lookup.c: Likewise.
101         * parser.c: Likewise.
102         * typeck.c: Likewise.
104 2018-11-12  Jason Merrill  <jason@redhat.com>
106         Implement P0315R4, Lambdas in unevaluated contexts.
107         * decl2.c (min_vis_expr_r): Handle LAMBDA_EXPR.
108         * mangle.c (write_expression): Handle LAMBDA_EXPR.
109         * parser.c (cp_parser_lambda_expression): Allow lambdas in
110         unevaluated context.  Start the tentative firewall sooner.
111         (cp_parser_lambda_body): Use cp_evaluated.
112         * pt.c (iterative_hash_template_arg): Handle LAMBDA_EXPR.
113         (tsubst_function_decl): Substitute a lambda even if it isn't
114         dependent.
115         (tsubst_lambda_expr): Use cp_evaluated.  Always complain.
116         (tsubst_copy_and_build) [LAMBDA_EXPR]: Do nothing if tf_partial.
117         * semantics.c (begin_class_definition): Allow in template parm list.
118         * tree.c (strip_typedefs_expr): Pass through LAMBDA_EXPR.
119         (cp_tree_equal): Handle LAMBDA_EXPR.
121         * pt.c (fn_type_unification): If we have a full set of explicit
122         arguments, go straight to substitution.
124         * decl2.c (min_vis_expr_r, expr_visibility): New.
125         (min_vis_r): Call expr_visibility.
126         (constrain_visibility_for_template): Likewise.
128         Implement P0722R3, destroying operator delete.
129         * call.c (std_destroying_delete_t_p, destroying_delete_p): New.
130         (aligned_deallocation_fn_p, usual_deallocation_fn_p): Use
131         destroying_delete_p.
132         (build_op_delete_call): Handle destroying delete.
133         * decl2.c (coerce_delete_type): Handle destroying delete.
134         * init.c (build_delete): Don't call dtor with destroying delete.
135         * optimize.c (build_delete_destructor_body): Likewise.
137         Implement P0780R2, pack expansion in lambda init-capture.
138         * parser.c (cp_parser_lambda_introducer): Parse pack init-capture.
139         * pt.c (tsubst_pack_expansion): Handle init-capture packs.
140         (lookup_init_capture_pack): New.
141         (tsubst_expr) [DECL_EXPR]: Use it.
142         (tsubst_lambda_expr): Remember field pack expansions for
143         init-captures.
145         * cp-tree.h (struct cp_evaluated): New.
146         * init.c (get_nsdmi): Use it.
147         * parser.c (cp_parser_enclosed_template_argument_list): Use it.
148         * pt.c (coerce_template_parms, tsubst_aggr_type): Use it.
150 2018-11-09  Jakub Jelinek  <jakub@redhat.com>
152         * parser.c (cp_parser_omp_clause_final, cp_parser_omp_clause_if): Use
153         cp_parser_assignment_expression instead of cp_parser_condition.
154         (cp_parser_omp_clause_num_threads, cp_parser_omp_clause_num_tasks,
155         cp_parser_omp_clause_grainsize, cp_parser_omp_clause_priority,
156         cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
157         cp_parser_omp_clause_linear, cp_parser_omp_clause_device): Use
158         cp_parser_assignment_expression instead of cp_parser_expression.
159         (cp_parser_omp_clause_hint): Likewise.  Formatting fix.
161         * parser.c (cp_parser_omp_clause_reduction): Call sorry_at on
162         reduction clause with inscan modifier.
164         * parser.c (cp_parser_omp_requires): Call sorry_at on requires
165         clauses other than atomic_default_mem_order.
167 2018-11-09  Martin Sebor  <msebor@redhat.com>
169         PR middle-end/81824
170         * pt.c (warn_spec_missing_attributes): Move code to attribs.c.
171         Call decls_mismatched_attributes.
173 2018-11-08  Jakub Jelinek  <jakub@redhat.com>
175         * constexpr.c (potential_constant_expression_1): Handle OMP_DEPOBJ.
176         * cp-gimplify.c (cp_genericize_r): Handle
177         OMP_CLAUSE_{IN,TASK}_REDUCTION.
178         (cxx_omp_predetermined_sharing_1): Don't return
179         OMP_CLAUSE_DEFAULT_SHARED for const qualified decls with no mutable
180         member.  Return OMP_CLAUSE_DEFAULT_FIRSTPRIVATE for this pointer.
181         * cp-objcp-common.c (cp_common_init_ts): Handle OMP_DEPOBJ.
182         * cp-tree.def (OMP_DEPOBJ): New tree code.
183         * cp-tree.h (OMP_ATOMIC_DEPENDENT_P): Return true also for first
184         argument being OMP_CLAUSE.
185         (OMP_DEPOBJ_DEPOBJ, OMP_DEPOBJ_CLAUSES): Define.
186         (cp_convert_omp_range_for, cp_finish_omp_range_for): Declare.
187         (finish_omp_atomic): Add LOC, CLAUSES and MO arguments.  Remove
188         SEQ_CST argument.
189         (finish_omp_for_block): Declare.
190         (finish_omp_flush): Add MO argument.
191         (finish_omp_depobj): Declare.
192         * cxx-pretty-print.c (cxx_pretty_printer::statement): Handle
193         OMP_DEPOBJ.
194         * dump.c (cp_dump_tree): Likewise.
195         * lex.c (cxx_init): Likewise.
196         * parser.c: Include memmodel.h.
197         (cp_parser_for): Pass false as new is_omp argument to
198         cp_parser_range_for.
199         (cp_parser_range_for): Add IS_OMP argument, return before finalizing
200         if it is true.
201         (cp_parser_omp_clause_name): Handle nontemporal, in_reduction and
202         task_reduction clauses.
203         (cp_parser_omp_var_list_no_open): Handle
204         OMP_CLAUSE_{IN,TASK}_REDUCTION.  For OMP_CLAUSE_DEPEND, parse clause
205         operands as either an array section, or lvalue assignment expression.
206         (cp_parser_omp_clause_if): Handle cancel and simd modifiers.
207         (cp_parser_omp_clause_defaultmap): Parse new kinds of defaultmap
208         clause.
209         (cp_parser_omp_clause_reduction): Add IS_OMP and KIND arguments.
210         Parse reduction modifiers.  Pass KIND to c_parser_omp_variable_list.
211         (cp_parser_omp_clause_lastprivate, cp_parser_omp_iterators): New
212         functions.
213         (cp_parser_omp_clause_depend): Parse iterator modifier and handle
214         iterators.  Parse mutexinoutset and depobj kinds.
215         (cp_parser_oacc_all_clauses): Adjust cp_parser_omp_clause_reduction
216         callers.
217         (cp_parser_omp_all_clauses): Likewise.  Handle
218         PRAGMA_OMP_CLAUSE_NONTEMPORAL and
219         PRAGMA_OMP_CLAUSE_{IN,TASK}_REDUCTION.  Call
220         cp_parser_omp_clause_lastprivate for OpenMP lastprivate clause.
221         (cp_parser_omp_atomic): Pass pragma_tok->location as
222         LOC to finish_omp_atomic.  Parse hint and memory order clauses.
223         Handle default memory order from requires directive if any.  Adjust
224         finish_omp_atomic caller.
225         (cp_parser_omp_critical): Allow comma in between (name) and hint
226         clause.
227         (cp_parser_omp_depobj): New function.
228         (cp_parser_omp_flush): Parse flush with memory-order-clause.
229         (cp_parser_omp_for_cond): Allow NE_EXPR even in OpenMP loops.
230         (cp_convert_omp_range_for, cp_finish_omp_range_for): New functions.
231         (cp_parser_omp_for_loop): Parse C++11 range for loops among omp
232         loops.  Handle OMP_CLAUSE_IN_REDUCTION like OMP_CLAUSE_REDUCTION.
233         (OMP_SIMD_CLAUSE_MASK): Add if and nontemporal clauses.
234         (cp_parser_omp_simd, cp_parser_omp_for): Call keep_next_level before
235         begin_omp_structured_block and call finish_omp_for_block on
236         finish_omp_structured_block result.
237         (cp_parser_omp_master): Add p_name, mask and cclauses arguments.
238         Allow to be called while parsing combined parallel master.
239         Parse combined master taskloop{, simd}.
240         (cp_parser_omp_parallel): Parse combined
241         parallel master{, taskloop{, simd}} constructs.
242         (cp_parser_omp_single): Use SET_EXPR_LOCATION.
243         (OMP_TASK_CLAUSE_MASK): Add in_reduction clause.
244         (OMP_TASKWAIT_CLAUSE_MASK): Define.
245         (cp_parser_omp_taskwait): Handle taskwait with depend clauses.
246         (OMP_TASKGROUP_CLAUSE_MASK): Define.
247         (cp_parser_omp_taskgroup): Parse taskgroup clauses, adjust
248         c_finish_omp_taskgroup caller.
249         (cp_parser_omp_distribute): Call keep_next_level before
250         begin_omp_structured_block and call finish_omp_for_block on
251         finish_omp_structured_block result.
252         (cp_parser_omp_teams): Force a BIND_EXPR with BLOCK around teams
253         body.
254         (cp_parser_omp_target_data): Allow target data with only
255         use_device_ptr clauses.
256         (cp_parser_omp_target): Set OMP_REQUIRES_TARGET_USED bit in
257         omp_requires_mask.
258         (cp_parser_omp_requires): New function.
259         (OMP_TASKLOOP_CLAUSE_MASK): Add reduction and in_reduction clauses.
260         (cp_parser_omp_taskloop): Add forward declaration.  Disallow
261         in_reduction clause when combined with parallel master.  Call
262         keep_next_level before begin_omp_structured_block and call
263         finish_omp_for_block on finish_omp_structured_block result.
264         (cp_parser_omp_construct): Adjust cp_parser_omp_master caller.
265         (cp_parser_pragma): Handle PRAGMA_OMP_DEPOBJ and PRAGMA_OMP_REQUIRES.
266         * pt.c (tsubst_omp_clause_decl): Add iterators_cache argument.
267         Adjust recursive calls.  Handle iterators.
268         (tsubst_omp_clauses): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION and
269         OMP_CLAUSE_NONTEMPORAL.  Adjust tsubst_omp_clause_decl callers.
270         (tsubst_decomp_names):
271         (tsubst_omp_for_iterator): Change orig_declv into a reference.
272         Handle range for loops.  Move orig_declv handling after declv/initv
273         handling.
274         (tsubst_expr): Force a BIND_EXPR with BLOCK around teams body.
275         Adjust finish_omp_atomic caller.  Call keep_next_level before
276         begin_omp_structured_block.  Call cp_finish_omp_range_for for range
277         for loops and use {begin,finish}_omp_structured_block instead of
278         {push,pop}_stmt_list if there are any range for loops.  Call
279         finish_omp_for_block on finish_omp_structured_block result.
280         Handle OMP_DEPOBJ.  Handle taskwait with depend clauses.  For
281         OMP_ATOMIC call tsubst_omp_clauses on clauses if any, adjust
282         finish_omp_atomic caller.  Use OMP_ATOMIC_MEMORY_ORDER rather
283         than OMP_ATOMIC_SEQ_CST.  Handle clauses on OMP_TASKGROUP.
284         (dependent_omp_for_p): Always return true for range for loops if
285         processing_template_decl.  Return true if class type iterator
286         does not have INTEGER_CST increment.
287         * semantics.c: Include memmodel.h.
288         (handle_omp_array_sections_1): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION
289         like OMP_CLAUSE_REDUCTION.
290         (handle_omp_array_sections): Likewise.  Call save_expr on array
291         reductions before calling build_index_type.  Handle depend clauses
292         with iterators.
293         (finish_omp_reduction_clause): Call save_expr for whole array
294         reduction sizes.  Don't mark OMP_CLAUSE_DECL addressable if it has
295         reference type.  Do mark decl_placeholder addressable if needed.
296         Use error_at with OMP_CLAUSE_LOCATION (c) as first argument instead
297         of error.
298         (cp_omp_finish_iterators): New function.
299         (finish_omp_clauses): Don't diagnose nonmonotonic clause with static,
300         runtime or auto schedule kinds.  Diagnose nogroup clause used with
301         reduction clause(s).  Handle depend clause with
302         OMP_CLAUSE_DEPEND_DEPOBJ.  Diagnose bit-fields.  Require
303         omp_depend_t type for OMP_CLAUSE_DEPEND_DEPOBJ kinds and
304         some different type for other kinds.  Use cp_build_addr_expr
305         and cp_build_indirect_ref instead of cxx_mark_addressable.
306         Handle depend clauses with iterators.  Only handle static data members
307         in the special case that const qualified vars may be specified in
308         firstprivate clause.  Complain if const qualified vars without mutable
309         members are mentioned in data-sharing clauses other than firstprivate
310         or shared.  Use error_at with OMP_CLAUSE_LOCATION (c) as first
311         argument instead of error.  Diagnose more than one nontemporal clause
312         refering to the same variable.  Use error_at rather than error for
313         priority and hint clause diagnostics.  Fix pasto for hint clause.
314         Diagnose hint expression that doesn't fold into INTEGER_CST.
315         Diagnose if clause with modifier other than cancel.  Handle
316         OMP_CLAUSE_{IN,TASK}_REDUCTION like OMP_CLAUSE_REDUCTION.  Allow any
317         lvalue as OMP_CLAUSE_DEPEND operand (besides array section), adjust
318         diagnostics.
319         (handle_omp_for_class_iterator): Don't create a new TREE_LIST if one
320         has been created already for range for, just fill TREE_PURPOSE and
321         TREE_VALUE.  Call cp_fully_fold on incr.
322         (finish_omp_for): Don't check cond/incr if cond is global_namespace.
323         Pass to c_omp_check_loop_iv_exprs orig_declv if non-NULL.  Don't
324         use IS_EMPTY_STMT on NULL pre_body.  Adjust c_finish_omp_for caller.
325         (finish_omp_for_block): New function.
326         (finish_omp_atomic): Add LOC argument, pass it through
327         to c_finish_omp_atomic and set it as location of OMP_ATOMIC* trees.
328         Remove SEQ_CST argument.  Add CLAUSES and MO arguments.  Adjust
329         c_finish_omp_atomic caller.  Stick clauses if any into first argument
330         of wrapping OMP_ATOMIC.
331         (finish_omp_depobj): New function.
332         (finish_omp_flush): Add MO argument, if not
333         MEMMODEL_LAST, emit __atomic_thread_fence call with the given value.
334         (finish_omp_cancel): Diagnose if clause with modifier other than
335         cancel.
337 2018-11-07  Nathan Sidwell  <nathan@acm.org>
339         PR c++/87904
340         * cp-tree.h (struct tree_overload): Fix comment.
341         * tree.c (ovl_iterator::reveal_node): Propagate OVL_DEDUP_P.
343 2018-11-04  Jason Merrill  <jason@redhat.com>
345         Implement UDL changes from P0732R2.
346         * cp-tree.h (struct releasing_vec): Move from mangle.c.
347         Add get_ref method.
348         * parser.c (cp_parser_userdef_string_literal): Use it.  Handle
349         passing the string to a single template parameter of class type.
350         (cp_parser_template_declaration_after_parameters): Allow it.
351         Pedwarn about the character pack template that was proposed but not
352         accepted for C++14, and don't suggest it.
354         Implement P0732R2, class types in non-type template parameters.
355         * error.c (dump_simple_decl): Look through a template parm object.
356         * mangle.c (write_template_arg): Likewise.
357         (mangle_template_parm_object): New.
358         * pt.c (template_parm_object_p, get_template_parm_object): New.
359         (invalid_tparm_referent_p): Factor from convert_nontype_argument.
360         (convert_nontype_argument, invalid_nontype_parm_type_p): Handle
361         class-type template arguments.
362         * tree.c (lvalue_kind): Likewise.
364         * cvt.c (ocp_convert): Don't wrap a CONSTRUCTOR in a NOP_EXPR.
365         * constexpr.c (initialized_type): Fix AGGR_INIT_EXPR handling.
366         (cxx_eval_vec_init_1): Correct type of AGGR_INIT_EXPR.
367         (cxx_eval_outermost_constant_expr): Make sure a CONSTRUCTOR has the
368         right type.  Don't wrap a CONSTRUCTOR if one was passed in.
369         * tree.c (build_aggr_init_expr): Check for void.
371         PR c++/60503 - wrong lambda attribute syntax.
372         * parser.c (cp_parser_lambda_declarator_opt): Fix attribute
373         handling.
375 2018-11-02  Nathan Sidwell  <nathan@acm.org>
377         * decl.c (duplicate_decls): Refactor checks.
379 2018-11-01  Marek Polacek  <polacek@redhat.com>
381         Implement P0846R0, ADL and function templates.
382         * decl.c (grokfndecl): Allow FUNCTION_DECL in assert.
383         * lex.c (unqualified_fn_lookup_error): Handle TEMPLATE_ID_EXPR.
384         * parser.c (cp_parser_postfix_expression): Do ADL for a template-name.
385         (cp_parser_template_id): Give errors if parsing the template argument
386         list didn't go well.  Allow FUNCTION_DECL in assert.
387         (cp_parser_template_name): Consider a name to refer to a template if
388         it is an unqualified-id followed by a <.  Don't return the identifier
389         if the decl is a function and dependent.
390         * pt.c (tsubst_copy) <case OVERLOAD>: Remove assert.
392 2018-11-01  Nathan Sidwell  <nathan@acm.org>
394         * cp-tree.h (struct lang_function): Delete x_local_names field.
395         (struct lang_decl_base): Rename u2sel to spare.
396         (struct lang_decl_min): Remove lang_decl_u2 union.  Keep access
397         field.
398         (LANG_DECL_U2_CHECK): Delete.
399         (DECL_DISCRIMINATOR_P): Require function scope.
400         (DECL_DISCRIMINATOR): Adjust.
401         (DECL_DISCRIMINATOR_SET_P): Delete.
402         (DECL_CAPTURED_VARIABLE, DECL_ACCESS, THUnK_VIRTUAL_OFFSET): Adjust.
403         (local_classes): Don't declare.
404         (determine_local_discriminator): Declare.
405         * decl.c (push_local_name): Delete.
406         (local_entities, determina_local_discrminator): New.
407         (duplicate_decls): Copy DECL_ACCESS. Fix formatting.
408         (cp_finish_decl): Use determine_local_discriminator.
409         (save_function_data): Drop x_local_names.
410         (finish_function): Drop local_names.
411         * decl2.c (finish_anon_union): Use determine_local_disciminator.
412         * mangle.c (write_unnamed_type_name): Use
413         discriminator_for_local_entity.
414         (local_class_index): Delete.
415         (discriminator_for_local_entity): Reimplement.
416         (write_local_name): Adjust discriminator code.
417         * name-lookup.c (do_pushtag): Call determine_local_discrimiator.
418         * semantics.c (finish_omp_threadprivate): Drop DECL_DISCRIMINATOR
419         handling.
420         * class.c (local_classes): Delete.
421         (init_class_processing): Don't init it.
423 2018-11-01  Martin Liska  <mliska@suse.cz>
424             Jason Merrill  <jason@redhat.com>
426         PR c++/64266
427         PR bootstrap/70422
428         PR ipa/81277
429         * cp-tree.h (DECL_FNAME_P): New macro.
430         * decl.c (cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
431         DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
432         (cp_finish_decl):
433         * lambda.c (is_capture_proxy): Use DECL_FNAME_P.
434         * pt.c (tsubst_expr): Handle DECL_PRETTY_FUNCTION_P.
436 2018-10-31  Nathan Sidwell  <nathan@acm.org>
438         * cp-tree.h (OVL_DEDUP_P): New.
439         * name-lookup.c (name_lookup::add_overload): Check OVL_DEDUP_P.
440         (get_class_binding_direct): Likwise.
441         * tree.c (ovl_make): Propagate OVL_DEDUP_P.
442         (ovl_copy): Copy it.
443         (ovl_insert): Do not keep using-decls ordered.
444         (lookup_maybe_add): Adjust comment.
446 2018-10-30  Marek Polacek  <polacek@redhat.com>
448         Implement P0892R2, explicit(bool).
449         * call.c (add_template_candidate_real): Return if the declaration is
450         explicit and we're only looking for non-converting constructor.
451         * cp-tree.h (lang_decl_fn): Add has_dependent_explicit_spec_p bit.
452         (DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P): New macro.
453         (cp_decl_specifier_seq): Add explicit_specifier field.
454         (build_explicit_specifier, store_explicit_specifier): Declare.
455         * decl.c (grokdeclarator): Call store_explicit_specifier.
456         (build_explicit_specifier): New function.
457         * parser.c (cp_parser_function_specifier_opt) <case RID_EXPLICIT>:
458         Parse C++20 explicit(bool).
459         * pt.c (store_explicit_specifier, lookup_explicit_specifier): New.
460         (tsubst_function_decl): Handle explicit(dependent-expr).
462 2018-10-30  Paolo Carlini  <paolo.carlini@oracle.com>
464         * decl.c (grokdeclarator): Use declarator->id_loc in diagnostic
465         about flexible array members.
467 2018-10-29  David Malcolm  <dmalcolm@redhat.com>
469         * cp-name-hint.h: New file.
470         * cp-tree.h (expr_to_string): New decl.
471         (suggest_alternatives_for): Move to cp-name-hint.h, changing
472         return type from bool to name_hint.
473         (suggest_alternative_in_explicit_scope): Likewise.
474         * error.c: Define INCLUDE_UNIQUE_PTR.  Include "cp-name-hint.h".
475         (expr_to_string): Make non-static.
476         (qualified_name_lookup_error): For the non-"::" case, take
477         responsibity for issuing any suggestion from
478         suggest_alternative_in_explicit_scope, as it changes from
479         returning a bool to returning a name_hint.  Replace fallback call
480         to suggest_alternatives_for to a call to
481         suggest_alternatives_in_other_namespaces, capturing the fact that
482         we don't have enough location information to issue a fix-it hint
483         for this case.  Update the error to support emitting a fix-it hint
484         where appropriate.  For the "::" case, take responsibility for
485         issuing any suggestion from suggest_alternatives_for, supporting
486         emitting a fix-it hint.
487         * lex.c: Define INCLUDE_UNIQUE_PTR.  Include "gcc-rich-location.h"
488         and "cp-name-hint.h".
489         (unqualified_name_lookup_error): Take responsibility for issuing
490         any suggestion from suggest_alternatives_for, supporting emitting
491         a fix-it hint.
492         * name-lookup.c (class namespace_limit_reached): New subclass of
493         deferred_diagnostic.
494         (class show_candidate_location): Likewise.
495         (class suggest_alternatives): Likewise.
496         (class namespace_hints): New class.
497         (suggest_alternatives_for): Convert return type from bool to
498         name_hint, replacing all direct diagnostic emission by setting
499         suggestions on the return value, or creating deferred diagnostics.
500         Specifically, split out initial traversal of namespaces into
501         namespace_hints' ctor, and maybe_decorate_with_limit, and move the
502         rest of the implementation to
503         namespace_hints::convert_candidates_to_name_hint and
504         suggest_alternatives_for_1.
505         (namespace_hints::namespace_hints): New ctor, adapted from
506         suggest_alternatives_for's initial namespace traversal, storing
507         location and name, and converting locals "candidates", "limited"
508         and "limit" into members.
509         (namespace_hints::convert_candidates_to_name_hint): New member
510         function.
511         (namespace_hints::maybe_decorate_with_limit): New member function.
512         (suggest_alternatives_for_1): New function, based on second half
513         of old implementation of suggest_alternatives_for, converting from
514         immediate emission of suggestions to using name_hint.
515         (suggest_alternatives_in_other_namespaces): New function.
516         (maybe_suggest_missing_std_header): Convert from immediate
517         emission of suggestions to using name_hint, moving emission
518         implementation to...
519         (class missing_std_header): New subclass of deferred_diagnostic.
520         (maybe_suggest_missing_header): Convert return type from bool to
521         name_hint.
522         (suggest_alternative_in_explicit_scope): Convert from immediate
523         emission of suggestions to using name_hint.
524         * parser.c: Replace include of "c-family/name-hint.h" with
525         "cp-name-hint.h".
526         (cp_parser_diagnose_invalid_type_name): Update
527         "is there a suggestion" logic for change to
528         name_hint::operator bool.  Take responsibility for emitting
529         fix-it hints from suggest_alternative_in_explicit_scope.
530         (cp_parser_namespace_name): Take responsibility for emitting
531         fix-it hints from suggest_alternative_in_explicit_scope.  Don't
532         emit the "expected namespace-name" error if we've already emitted
533         an "is not a namespace-name" error.
535 2018-10-29  David Malcolm  <dmalcolm@redhat.com>
537         PR c++/56856
538         * call.c (build_over_call): Eliminate the "arglocs" array, and the
539         call to maybe_constant_value when building "fargs".
541 2018-10-29  Paolo Carlini  <paolo.carlini@oracle.com>
543         * decl.c (create_array_type_for_decl): Add location_t parameter
544         and use it.
545         (grokdeclarator): Adjust call.
547 2018-10-29  Marek Polacek  <polacek@redhat.com>
549         PR c++/87594 - constexpr rejects-valid with range-based for.
550         * constexpr.c (potential_constant_expression_1): If the condition
551         can't be evaluated, return true.
553 2018-10-29  Joseph Myers  <joseph@codesourcery.com>
554             Julian Brown  <julian@codesourcery.com>
556         PR c++/66053
557         * semantics.c (handle_omp_array_sections_1): Allow array
558         sections with "this" pointer for OpenACC.
560 2018-10-25  Jason Merrill  <jason@redhat.com>
562         * parser.c (cp_parser_sizeof_operand): Remove redundant use of
563         grokdeclarator.
565 2018-10-24  Jakub Jelinek  <jakub@redhat.com>
567         PR c++/86288
568         * parser.c (cp_parser_std_attribute): Canonicalize attr_ns, and when
569         :: is not present and attr_ns non-NULL, canonicalize also attr_id.
570         (cp_parser_attribute_spec): Fix comment typo.
572 2018-10-24  Martin Sebor  <msebor@redhat.com>
574         PR c++/84851
575         * call.c (maybe_warn_class_memaccess): Tighten up.
577 2018-10-17  David Malcolm  <dmalcolm@redhat.com>
579         * Make-lang.in (selftest-c++): New.
580         (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++)
581         (selftest-c++-gdb, selftest-c++-valgrind): Move here from
582         gcc/Makefile.in.
584 2018-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
586         PR c++/84705
587         * tree.c (build_cplus_new): Avoid duplicate diagnostic about
588         incomplete type, early return error_mark_node if the second
589         argument is error_mark_node.
591 2018-10-12  Nathan Sidwell  <nathan@acm.org>
593         * parser.h (struct cp_parser): Drop implicit_extern_c.
594         * parser.c (cp_debug_parser): Drop implicit_extern_c.
595         (cp_parser_new): Likewise.
596         (cp_parser_translation_unit): Handle implicit extern c here.  Call
597         cp_parser_toplevel_declaration.
598         (cp_parser_toplevel_declaration): New, broken out of ...
599         (cp_parser_declaration_seq_opt): ... here.  Call it.  Drop
600         implicit extern C handling.
602 2018-10-11  Will Wray  <wjwray@gmail.com>
604         PR c++/87364
605         * cxx-pretty-print.c (pp_cxx_enumeration_constant): New function.
606         (cxx_pretty_printer::constant): Use it.
608 2018-10-11  David Malcolm  <dmalcolm@redhat.com>
610         PR c++/84993
611         * call.c (enforce_access): Move diagnostics to...
612         (complain_about_access): ...this new function.
613         * cp-tree.h (class access_failure_info): Rename split out field
614         "m_field_decl" into "m_decl" and "m_diag_decl".
615         (access_failure_info::record_access_failure): Add tree param.
616         (access_failure_info::was_inaccessible_p): New accessor.
617         (access_failure_info::get_decl): New accessor.
618         (access_failure_info::get_diag_decl): New accessor.
619         (access_failure_info::get_any_accessor): New member function.
620         (access_failure_info::add_fixit_hint): New static member function.
621         (complain_about_access): New decl.
622         * typeck.c (access_failure_info::record_access_failure): Update
623         for change to fields.
624         (access_failure_info::maybe_suggest_accessor): Split out into...
625         (access_failure_info::get_any_accessor): ...this new function...
626         (access_failure_info::add_fixit_hint): ...and this new function.
627         (finish_class_member_access_expr): Split out "has no member named"
628         error-handling into...
629         (complain_about_unrecognized_member): ...this new function, and
630         check that the guessed name is accessible along the access path.
631         Only provide a spell-correction fix-it hint if it is; otherwise,
632         attempt to issue an accessor fix-it hint.
634 2018-10-11  Nathan Sidwell  <nathan@acm.org>
636         * parser.c (cp_parser_translation_unit): Return void.  Don't fail
637         at first extra }, simplify logic.
638         (c_parse_file): Call finish_translation_unit here.
640 2018-10-11  Jakub Jelinek  <jakub@redhat.com>
642         PR c++/87582
643         * typeck.c (maybe_warn_about_returning_address_of_local): If
644         whats_returned is a structured binding identifier and the structured
645         binding is a reference, recurse on its initializer.
647         PR c++/87547
648         * rtti.c (get_tinfo_decl_dynamic): Use unlowered_expr_type instead
649         of TREE_TYPE.
651 2018-10-10  Marek Polacek  <polacek@redhat.com>
653         PR c++/87567 - constexpr rejects call to non-constexpr function.
654         * constexpr.c (potential_constant_expression_1) <case FOR_STMT>: Return
655         true if the condition is always false.
656         <case WHILE_STMT>: Likewise.
658 2018-10-09  Paolo Carlini  <paolo.carlini@oracle.com>
660         PR c++/84423
661         * pt.c (convert_template_argument): Immediately return error_mark_node
662         if the second argument is erroneous.
663         * parser.c (cp_parser_type_id): Add location_t * parameter.
664         (cp_parser_type_id_1): Likewise.
665         (cp_parser_alias_declaration): Adjust cp_parser_type_id call,
666         obtain the location of the type and save it.
667         (cp_parser_template_type_arg): Adjust.
668         (cp_parser_trailing_type_id): Likewise.
669         * decl.c (grokdeclarator): Improve error message for 'auto' in
670         alias declaration.
672 2018-10-08  Paolo Carlini  <paolo.carlini@oracle.com>
674         PR c++/71128
675         * pt.c (do_decl_instantiation): Per 12.6.8/5, a concept cannot be
676         explicitly instantiated.
678 2018-10-05  David Malcolm  <dmalcolm@redhat.com>
680         PR c++/56856
681         * call.c (build_over_call): Build a vec of locations of the
682         arguments before the call to maybe_constant_value, and pass to
683         check_function_arguments.
684         * cp-lang.c (LANG_HOOKS_GET_SUBSTRING_LOCATION): Define as
685         c_get_substring_location.
686         * parser.c (cp_parser_string_literal): Capture string
687         concatenation locations.
689 2018-10-04  Nathan Sidwell  <nathan@acm.org>
691         * lang-specs.h: Use string contatenation, not line splicing.
693 2018-10-03  Jason Merrill  <jason@redhat.com>
695         Implement P0840, language support for empty objects.
696         * tree.c (handle_no_unique_addr_attribute): New.
697         (cxx_attribute_table): Add [[no_unique_address]].
698         * class.c (field_poverlapping_p): New.
699         (layout_class_type): Check it.  Adjust DECL_SIZE of potentially
700         overlapping fields.
701         (layout_empty_base_or_field): Rename from layout_empty_base, handle
702         FIELD_DECL as well.
703         (build_base_field, record_subobject_offsets): Adjust.
705 2018-10-03  Martin Liska  <mliska@suse.cz>
707         PR gcov-profile/86109
708         * parser.c (cp_parser_lambda_declarator_opt):
709         Set DECL_LAMBDA_FUNCTION for lambdas.
711 2018-10-02  Richard Biener  <rguenther@suse.de>
713         * name-lookup.c (check_local_shadow): Do not test DECL_FROM_INLINE.
715 2018-09-28  Eric Botcazou  <ebotcazou@adacore.com>
716             Pierre-Marie de Rodat  <derodat@adacore.com>
718         * method.c (use_thunk): Adjust call to cgraph_node::create_thunk.
720 2018-09-28  Richard Biener  <rguenther@suse.de>
722         * error.c (cp_print_error_function): Simplify by eliding
723         the BLOCK_ABSTRACT_ORIGIN chasing.
725 2018-09-27  Paolo Carlini  <paolo.carlini@oracle.com>
727         PR c++/84940
728         * semantics.c (finish_unary_op_expr): Check return value of
729         build_x_unary_op for error_mark_node.
731 2018-09-25  Jakub Jelinek  <jakub@redhat.com>
733         PR c++/87398
734         * constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Only
735         look through COMPONENT_REFs with DECL_FIELD_IS_BASE FIELD_DECLs.
737 2018-09-25  Martin Liska  <mliska@suse.cz>
739         * name-lookup.c (namespace_scope_ht_size): Remove
740         unused function.
741         * parser.c (cp_lexer_next_token_is_not_keyword): Likewise.
743 2018-09-24  Paolo Carlini  <paolo.carlini@oracle.com>
745         PR c++/85070
746         * method.c (lazily_declare_fn): During error-recovery add_method
747         may return false.
749 2018-09-21  Marek Polacek  <polacek@redhat.com>
751         PR c++/87372 - __func__ constexpr evaluation.
752         * constexpr.c (maybe_constant_init_1): Pass false for strict down to
753         cxx_eval_outermost_constant_expr.
755 2018-09-20  Marek Polacek  <polacek@redhat.com>
757         PR c++/87109 - wrong ctor with maybe-rvalue semantics.
758         * call.c (build_user_type_conversion_1): Refine the maybe-rvalue
759         check to only return if we're converting the return value to a base
760         class.
762 2018-09-20  Allan Sandfeld Jensen  <allan.jensen@qt.io>
764         * g++spec.c (lang_specific_driver): Handle -r like -nostdlib.
766 2018-09-20  Jason Merrill  <jason@redhat.com>
768         PR c++/87075 - ICE with constexpr array initialization.
769         * constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization.
771 2018-09-19  Marek Polacek  <polacek@redhat.com>
773         Add -Wclass-conversion.
774         * decl.c (grok_op_properties): Change a warning from -Wconversion to
775         -Wclass-conversion.  Make it print the types.
777 2018-09-19  Paolo Carlini  <paolo.carlini@oracle.com>
779         PR c++/87324
780         * parser.c (cp_parser_initializer_list): Assign error_mark_node
781         to the index upon error.
783 2018-09-19  Marek Polacek  <polacek@redhat.com>
785         PR c++/87357 - missing -Wconversion warning
786         * decl.c (grok_op_properties): Remove diagnostic parts mentioning
787         a conversion to a reference to void.  Use
788         same_type_ignoring_top_level_qualifiers_p rather than comparing types
789         directly.
791 2018-09-18  Marek Polacek  <polacek@redhat.com>
793         P1064R0 - Allowing Virtual Function Calls in Constant Expressions
794         * call.c (build_over_call): No longer check if we're outside a template
795         function.
796         * class.c (build_vtbl_initializer): Build vtable's constructor with
797         indexes.
798         * constexpr.c (cxx_eval_constant_expression): Don't ignore _vptr's
799         initializer.  Handle OBJ_TYPE_REF.
800         (potential_constant_expression_1): Handle OBJ_TYPE_REF.
801         * decl.c (maybe_commonize_var): Bail out for any DECL_ARTIFICIAL.
802         (initialize_artificial_var): Mark the variable as constexpr.
803         (grokdeclarator): Change error to pedwarn.  Only warn when
804         pedantic and not C++2a.
806 2018-09-18  Paolo Carlini  <paolo.carlini@oracle.com>
808         PR c++/85065
809         * cp-tree.h (NON_ERROR): New.
810         * pt.c (auto_hash::hash): Use it.
811         (do_auto_deduction): Likewise.
813 2018-09-18  Nathan Sidwell  <nathan@acm.org>
815         PR c++/86881
816         * name-lookup.c (check_local_shadow): Ignore auto types.
818 2018-09-17  David Malcolm  <dmalcolm@redhat.com>
820         * error.c (range_label_for_type_mismatch::get_text): Update for
821         new param.
823 2018-09-13  Bernd Edlinger  <bernd.edlinger@hotmail.de>
825         * typeck2.c (digest_init_r): Fix overlength strings.
827 2018-09-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
829         PR c++/87093
830         * method.c (constructible_expr): We're in an unevaluated context
831         in all cases, not just for class targets.
833 2018-09-12  David Malcolm  <dmalcolm@redhat.com>
835         PR c++/85110
836         * call.c (struct conversion_info): Add "loc" field.
837         (arg_conversion_rejection): Add "loc" param, using it to
838         initialize the new field.
839         (bad_arg_conversion_rejection): Likewise.
840         (explicit_conversion_rejection): Initialize the new field to
841         UNKNOWN_LOCATION.
842         (template_conversion_rejection): Likewise.
843         (add_function_candidate): Pass on the argument location to the new
844         param of arg_conversion_rejection.
845         (add_conv_candidate): Likewise.
846         (build_builtin_candidate): Likewise.
847         (build_user_type_conversion_1): Likewise.
848         (single_z_candidate): New function.
849         (maybe_get_bad_conversion_for_unmatched_call): New function.
850         (complain_about_bad_argument): New function, based on part of
851         convert_for_assignment.
852         (build_new_method_call_1): Split out handling of the "no viable
853         candidates" case into...
854         (complain_about_no_candidates_for_method_call): ...this new
855         function, and use the new functions above to special-case the
856         handling of a single non-viable candidate due to a bad argument.
857         * cp-tree.h (complain_about_bad_argument): New decl.
858         * typeck.c (convert_for_assignment): Split out one error-handling
859         case into complain_about_bad_argument.
861 2018-09-09  Cesar Philippidis  <cesar@codesourcery.com>
862             Julian Brown  <julian@codesourcery.com>
864         PR middle-end/86336
865         * semantics.c (finish_omp_clauses): Treat C++ references the same in
866         OpenACC as OpenMP.
868 2018-08-28  Martin Liska  <mliska@suse.cz>
870         * constexpr.c (cxx_eval_call_expression): Add quotes
871         to -fconstexpr-depth=.
873 2018-09-10  Marek Polacek  <polacek@redhat.com>
875         * class.c (build_vtbl_ref): Remove.
876         (build_vtbl_ref_1): Rename to build_vtbl_ref.
877         (build_vfn_ref): Call build_vtbl_ref instead of build_vtbl_ref_1.
879 2018-09-08  Marek Polacek  <polacek@redhat.com>
881         PR c++/87150 - wrong ctor with maybe-rvalue semantics.
882         * call.c (struct conversion): Update commentary.
883         (standard_conversion): Set rvaluedness_matches_p if LOOKUP_PREFER_RVALUE
884         for ck_base.
886 2018-09-08  Jason Merrill  <jason@redhat.com>
888         PR c++/86678 - constexpr function with non-constant after return.
889         * constexpr.c (potential_constant_expression_1): Add jump_target.
890         (breaks): Check for BREAK_STMT.
891         (continues): Check for CONTINUE_STMT.
893 2018-09-08  Marek Polacek  <polacek@redhat.com>
895         * cxx-pretty-print.c (cxx_pretty_printer::statement) <case
896         RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT.
898 2018-09-07  Marek Polacek  <polacek@redhat.com>
900         PR c++/87152 - range-based for loops with initializer broken in templates.
901         * constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>:
902         Recur into RANGE_FOR_INIT_STMT.
903         * cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT.
904         * cp-tree.h (RANGE_FOR_INIT_STMT): Define.
905         * dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump
906         RANGE_FOR_INIT_STMT.
907         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into
908         RANGE_FOR_INIT_STMT.
909         * semantics.c (begin_range_for_stmt): Adjust call to build_stmt.
910         Do put the init statement in RANGE_FOR_INIT_STMT.
911         (finish_range_for_decl): Pop it for templates.
913 2018-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
915         * decl.c (check_initializer): Call cp_complete_array_type.
917 2018-09-05  Marek Polacek  <polacek@redhat.com>
919         PR c++/87109, wrong overload with ref-qualifiers.
920         * call.c (build_user_type_conversion_1): Use NULL instead of 0.  Bail
921         out if performing the maybe-rvalue overload resolution and a conversion
922         function is getting called.
924         PR c++/86982, -Wreturn-local-addr and std::move and std::forward.
925         * typeck.c (maybe_warn_about_returning_address_of_local): Handle calls
926         to std::move or std::forward.
927         (is_std_forward_p): New function.
929 2018-09-05  Pádraig Brady  <p@draigbrady.com>
931         PR c++/87185
932         * lambda.c (prune_lambda_captures): Protect against const_vars.get
933         returning NULL.
935 2018-09-04  Marek Polacek  <polacek@redhat.com>
937         * cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
938         * except.c (build_throw): Use it.  Use CP_TYPE_VOLATILE_P.
939         * typeck.c (treat_lvalue_as_rvalue_p): No longer static.  Add PARM_OK
940         parameter.
941         (maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call.
942         (check_return_expr): Likewise.
944 2018-09-03  Paolo Carlini  <paolo.carlini@oracle.com>
946         PR c++/84980
947         * constraint.cc (finish_shorthand_constraint): Early return if the
948         constraint is erroneous.
950 2018-09-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
952         * decl.c (eval_check_narrowing): Remove.
953         (check_initializer): Move call to braced_list_to_string from here ...
954         * typeck2.c (store_init_value): ... to here.
955         (digest_init_r): Remove handing of signed/unsigned char strings.
957 2018-08-31  Nathan Sidwell  <nathan@acm.org>
959         PR c++/87155
960         PR c++/84707
961         * name-lookup.c (name_lookup::search_namespace): Don't look at
962         inlines when searching for NULL names.
964         * decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching
965         of return types and parms.
966         * parser.c (cp_parser_parameter_declaration_clause): Likewise,
967         '()' always means '(void)'.
969 2018-08-29  Jakub Jelinek  <jakub@redhat.com>
971         PR c++/87095
972         * decl.c (begin_destructor_body): If current_class_type has
973         virtual bases and the primary base is nearly empty virtual base,
974         voidify clearing of vptr and make it conditional on in-charge
975         argument.
977 2018-08-29  Paolo Carlini  <paolo.carlini@oracle.com>
979         PR c++/85265
980         * parser.c (cp_parser_introduction_list): If cp_parser_identifier
981         returns error_mark_node early exit the loop.
982         (cp_parser_template_introduction): Improve error-recovery, remove
983         error call about empty introduction-list.
985 2018-08-29  David Malcolm  <dmalcolm@redhat.com>
987         PR c++/85110
988         * call.c (print_conversion_rejection): Add "fn" param and use it
989         for "no known conversion" messages to underline the pertinent
990         param.
991         (print_z_candidate): Supply "fn" to the new param above.
993 2018-08-29  Jakub Jelinek  <jakub@redhat.com>
995         PR c++/87122
996         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: If
997         processing_template_decl and decl is structured binding decl, call
998         cp_finish_decomp.
1000 2018-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
1002         PR c++/86546
1003         * decl.c (finish_case_label): If the type is erroneous early
1004         return error_mark_node.
1006 2018-08-27  David Malcolm  <dmalcolm@redhat.com>
1008         PR c++/63392
1009         * parser.c (cp_parser_diagnose_invalid_type_name): Add fix-it
1010         hint.
1012 2018-08-27  Jakub Jelinek  <jakub@redhat.com>
1014         PR c++/86993
1015         * cp-tree.h (cxx_readonly_error): Add location_t argument.
1016         * typeck2.c (cxx_readonly_error): Add LOC argument, pass it to
1017         ERROR_FOR_ASSIGNMENT macro and readonly_error.  Add LOC argument
1018         to ERROR_FOR_ASSIGNMENT macro, use error_at instead of error and
1019         pass LOC to it.  Formatting fixes.
1020         * typeck.c (cp_build_unary_op): Pass location to cxx_readonly_error.
1021         (cp_build_modify_expr): Pass loc to cxx_readonly_error.
1022         * semantics.c (finish_asm_stmt): Pass input_location to
1023         cxx_readonly_error.
1025 2018-08-27  David Malcolm  <dmalcolm@redhat.com>
1027         PR c++/87091
1028         * decl.c (grokdeclarator): Update for conversion of show_caret_p
1029         to a tri-state.
1030         * error.c (cp_printer): Likewise.
1031         * name-lookup.c (maybe_suggest_missing_std_header): Update call to
1032         maybe_add_include_fixit to suggest overriding the location, as it
1033         is for a note.
1034         * parser.c (cp_parser_string_literal): Update for conversion of
1035         show_caret_p to a tri-state.
1036         (cp_parser_elaborated_type_specifier): Likewise.
1037         (set_and_check_decl_spec_loc): Likewise.
1038         * pt.c (listify): Update call to maybe_add_include_fixit to not
1039         override the location, as it is for an error.
1040         * rtti.c (typeid_ok_p): Likewise.
1042 2018-08-27  Martin Liska  <mliska@suse.cz>
1044         * call.c (build_call_a): Use new function
1045         fndecl_built_in_p and remove check for FUNCTION_DECL if
1046         possible.
1047         (build_cxx_call): Likewise.
1048         * constexpr.c (constexpr_fn_retval): Likewise.
1049         (cxx_eval_builtin_function_call): Likewise.
1050         (cxx_eval_call_expression): Likewise.
1051         (potential_constant_expression_1): Likewise.
1052         * cp-gimplify.c (cp_gimplify_expr): Likewise.
1053         (cp_fold): Likewise.
1054         * decl.c (decls_match): Likewise.
1055         (validate_constexpr_redeclaration): Likewise.
1056         (duplicate_decls): Likewise.
1057         (make_rtl_for_nonlocal_decl): Likewise.
1058         * name-lookup.c (consider_binding_level): Likewise.
1059         (cp_emit_debug_info_for_using): Likewise.
1060         * semantics.c (finish_call_expr): Likewise.
1061         * tree.c (builtin_valid_in_constant_expr_p): Likewise.
1063 2018-08-26  Marek Polacek  <polacek@redhat.com>
1065         PR c++/87080
1066         * typeck.c (maybe_warn_pessimizing_move): Do nothing in a template.
1068         PR c++/87029, Implement -Wredundant-move.
1069         * typeck.c (treat_lvalue_as_rvalue_p): New function.
1070         (maybe_warn_pessimizing_move): Call convert_from_reference.
1071         Warn about redundant moves.
1073 2018-08-24  Marek Polacek  <polacek@redhat.com>
1075         PR c++/67012
1076         PR c++/86942
1077         * decl.c (grokdeclarator): Disallow functions with trailing return
1078         type with decltype(auto) as its type.  Also check the function if
1079         it's inner declarator doesn't exist
1081 2018-08-21  Marek Polacek  <polacek@redhat.com>
1083         PR c++/86499
1084         * parser.c (cp_parser_lambda_introducer): Give error if a non-local
1085         lambda has a capture-default.
1087 2018-08-21  Paolo Carlini  <paolo.carlini@oracle.com>
1089         * decl.c (check_static_variable_definition): Change to return void.
1091 2018-08-21  Marek Polacek  <polacek@redhat.com>
1093         PR c++/86981, Implement -Wpessimizing-move.
1094         * typeck.c (decl_in_std_namespace_p): New.
1095         (is_std_move_p): New.
1096         (maybe_warn_pessimizing_move): New.
1097         (can_do_nrvo_p): New, factored out of ...
1098         (check_return_expr): ... here.  Warn about potentially harmful
1099         std::move in a return statement.
1101         PR c++/65043
1102         * call.c (standard_conversion): Set check_narrowing.
1103         * typeck2.c (check_narrowing): Use CP_INTEGRAL_TYPE_P rather
1104         than comparing with INTEGER_TYPE.
1106         * cp-tree.h: Fix typo.
1108 2018-08-20  David Malcolm  <dmalcolm@redhat.com>
1110         PR other/84889
1111         * call.c (build_user_type_conversion_1): Add auto_diagnostic_group
1112         instance(s).
1113         (print_error_for_call_failure): Likewise.
1114         (build_op_call_1): Likewise.
1115         (build_conditional_expr_1): Likewise.
1116         (build_new_op_1): Likewise.
1117         (build_op_delete_call): Likewise.
1118         (convert_like_real): Likewise.
1119         (build_over_call): Likewise.
1120         (build_new_method_call_1): Likewise.
1121         (joust): Likewise.
1122         * class.c (check_tag): Likewise.
1123         (finish_struct_anon_r): Likewise.
1124         (one_inherited_ctor): Likewise.
1125         (finalize_literal_type_property): Likewise.
1126         (explain_non_literal_class): Likewise.
1127         (find_flexarrays): Likewise.
1128         (resolve_address_of_overloaded_function): Likewise.
1129         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
1130         (is_valid_constexpr_fn): Likewise.
1131         (cx_check_missing_mem_inits): Likewise.
1132         * cp-gimplify.c (cp_genericize_r): Likewise.
1133         * cvt.c (maybe_warn_nodiscard): Likewise.
1134         * decl.c (warn_extern_redeclared_static): Likewise.
1135         (check_redeclaration_exception_specification): Likewise.
1136         (check_no_redeclaration_friend_default_args): Likewise.
1137         (duplicate_decls): Likewise.
1138         (redeclaration_error_message): Likewise.
1139         (warn_misplaced_attr_for_class_type): Likewise.
1140         * decl2.c (finish_static_data_member_decl): Likewise.
1141         (no_linkage_error): Likewise.
1142         (cp_warn_deprecated_use): Likewise.
1143         * error.c (qualified_name_lookup_error): Likewise.
1144         * friend.c (make_friend_class): Likewise.
1145         (do_friend): Likewise.
1146         * init.c (perform_member_init): Likewise.
1147         (build_new_1): Likewise.
1148         (build_vec_delete_1): Likewise.
1149         (build_delete): Likewise.
1150         * lex.c (unqualified_name_lookup_error): Likewise.
1151         * name-lookup.c (check_extern_c_conflict): Likewise.
1152         (inform_shadowed): New function.
1153         (check_local_shadow): Add auto_diagnostic_group instances,
1154         replacing goto "inform_shadowed" label with call to subroutine.
1155         (set_local_extern_decl_linkage): Add auto_diagnostic_group
1156         instance(s).
1157         * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
1158         (cp_parser_namespace_name): Likewise.
1159         * pt.c (check_specialization_namespace): Likewise.
1160         (check_template_variable): Likewise.
1161         (warn_spec_missing_attributes): Likewise.
1162         (check_explicit_specialization): Likewise.
1163         (process_partial_specialization): Likewise.
1164         (lookup_template_class_1): Likewise.
1165         (finish_template_variable): Likewise.
1166         (do_auto_deduction): Likewise.
1167         * search.c (check_final_overrider): Likewise.
1168         (look_for_overrides_r): Likewise.
1169         * tree.c (maybe_warn_parm_abi): Likewise.
1170         * typeck.c (cxx_sizeof_expr): Likewise.
1171         (cp_build_function_call_vec): Likewise.
1172         (cp_build_binary_op): Likewise.
1173         (convert_for_assignment): Likewise.
1174         (maybe_warn_about_returning_address_of_local): Likewise.
1175         * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
1176         (check_narrowing): Likewise.
1178 2018-08-17  David Malcolm  <dmalcolm@redhat.com>
1180         * typeck.c (string_conv_p): Extract location from EXP and use it
1181         in preference to input_location when issuing warnings.
1183 2018-08-15  David Malcolm  <dmalcolm@redhat.com>
1185         * call.c: Include "gcc-rich-location.h".
1186         (convert_like_real): Add range label for "invalid conversion"
1187         diagnostic.
1188         (perform_implicit_conversion_flags): Add type label to the
1189         "could not convert" error.
1190         * error.c: Include "gcc-rich-location.h".
1191         (range_label_for_type_mismatch::get_text): New function.
1192         * typeck.c (convert_for_assignment): Add type label to
1193         the "cannot convert" error if a location is available.
1195 2018-08-15  Paolo Carlini  <paolo.carlini@oracle.com>
1197         * decl.c (check_previous_goto_1): When decl_jump_unsafe returns 2
1198         emit an error instead of a permerror.
1200 2018-08-13  Marek Polacek  <polacek@redhat.com>
1202         PR c++/57891
1203         * call.c (struct conversion): Add check_narrowing_const_only.
1204         (build_converted_constant_expr): Set check_narrowing and
1205         check_narrowing_const_only.  Give error if expr is error node.
1206         (convert_like_real): Pass it to check_narrowing.
1207         * cp-tree.h (check_narrowing): Add a default parameter.
1208         * decl.c (compute_array_index_type): Use input_location instead of
1209         location_of.
1210         * pt.c (convert_nontype_argument): Return NULL_TREE if tf_error.
1211         * typeck2.c (check_narrowing): Don't warn for instantiation-dependent
1212         expressions.  Call maybe_constant_value instead of
1213         fold_non_dependent_expr.  Don't mention { } in diagnostic.  Only check
1214         narrowing for constants if CONST_ONLY.
1216 2018-08-13  Martin Sebor  <msebor@redhat.com>
1218         PR tree-optimization/71625
1219         * decl.c (check_initializer):  Call braced_list_to_string.
1220         (eval_check_narrowing): New function.
1221         * gcc/cp/typeck2.c (digest_init_r): Accept strings literals
1222         as initilizers for all narrow character types.
1224 2018-08-13  Marek Polacek  <polacek@redhat.com>
1226         P0806R2 - Deprecate implicit capture of this via [=]
1227         * lambda.c (add_default_capture): Formatting fixes.  Warn about
1228         deprecated implicit capture of this via [=].
1230         PR c++/86915
1231         * decl.c (create_array_type_for_decl): Handle null name.
1233 2018-08-10  Jason Merrill  <jason@redhat.com>
1235         PR c++/86728 - C variadic generic lambda.
1236         * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into
1237         a pack if it's followed by a declarator-id.
1239 2018-08-08  Jakub Jelinek  <jakub@redhat.com>
1241         P0595R1 - is_constant_evaluated
1242         * cp-tree.h (enum cp_built_in_function): New.
1243         (maybe_constant_init): Add pretend_const_required argument.
1244         * typeck2.c (store_init_value): Pass true as new argument to
1245         maybe_constant_init.
1246         * constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS
1247         for BUILT_IN_UNREACHABLE.
1248         (struct constexpr_ctx): Add pretend_const_required field.
1249         (cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P
1250         macro.  Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED.  Check also
1251         DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE.
1252         (cxx_eval_outermost_constant_expr): Add pretend_const_required
1253         argument, initialize pretend_const_required field in ctx.  If the
1254         result is TREE_CONSTANT and non_constant_p, retry with
1255         pretend_const_required false if it was true.
1256         (is_sub_constant_expr): Initialize pretend_const_required_field in
1257         ctx.
1258         (cxx_constant_value): Pass true as pretend_const_required to
1259         cxx_eval_outermost_constant_expr.
1260         (maybe_constant_value): Pass false as pretend_const_required to
1261         cxx_eval_outermost_constant_expr.
1262         (fold_non_dependent_expr): Likewise.
1263         (maybe_constant_init_1): Add pretend_const_required argument, pass it
1264         down to cxx_eval_outermost_constant_expr.  Pass !allow_non_constant
1265         instead of false as strict to cxx_eval_outermost_constant_expr.
1266         (maybe_constant_init): Add pretend_const_required argument, pass it
1267         down to maybe_constant_init_1.
1268         (cxx_constant_init): Pass true as pretend_const_required to
1269         maybe_constant_init_1.
1270         * cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to
1271         CP_BUILT_IN_IS_CONSTANT_EVALUATED.
1272         (cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls.
1273         * decl.c: Include langhooks.h.
1274         (cxx_init_decl_processing): Register __builtin_is_constant_evaluated
1275         built-in.
1276         * tree.c (builtin_valid_in_constant_expr_p): Return true for
1277         CP_BUILT_IN_IS_CONSTANT_EVALUATED.
1278         * pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE.
1280         PR c++/86836
1281         * pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names
1282         before tsubst_init, not after it.
1284         PR c++/86738
1285         * constexpr.c (cxx_eval_binary_expression): For arithmetics involving
1286         NULL pointer set *non_constant_p to true.
1287         (cxx_eval_component_reference): For dereferencing of a NULL pointer,
1288         set *non_constant_p to true and return t.
1290 2018-08-07  Paolo Carlini  <paolo.carlini@oracle.com>
1292         PR c++/59480, DR 136
1293         * decl.c (check_no_redeclaration_friend_default_args): New.
1294         (duplicate_decls): Use the latter; also check that a friend
1295         declaration specifying default arguments is a definition.
1297 2018-08-07  Ville Voutilainen  <ville.voutilainen@gmail.com>
1299         PR c++/79133
1300         * name-lookup.c (check_local_shadow): Reject captures and parameters
1301         with the same name.
1303 2018-08-06  Marek Polacek  <polacek@redhat.com>
1305         PR c++/86767
1306         * constexpr.c (cxx_eval_statement_list): Handle continue.
1308 2018-08-03  David Malcolm  <dmalcolm@redhat.com>
1309             Jonathan Wakely  <jwakely@redhat.com>
1311         * decl.c: Include "gcc-rich-location.h".
1312         (add_return_star_this_fixit): New function.
1313         (finish_function): When warning about missing return statements in
1314         functions returning non-void, add a "return *this;" fix-it hint for
1315         assignment operators.
1317 2018-08-03  Jason Merrill  <jason@redhat.com>
1319         PR c++/86706
1320         * class.c (build_base_path): Use currently_open_class.
1322 2018-08-02  David Malcolm  <dmalcolm@redhat.com>
1324         * error.c (cxx_print_error_function): Duplicate "file" before
1325         passing it to pp_set_prefix.
1326         (cp_print_error_function): Use pp_take_prefix when saving the
1327         existing prefix.
1329 2018-08-02  Richard Biener  <rguenther@suse.de>
1331         PR c++/86763
1332         * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE
1333         to the CLASSTYPE_AS_BASE.
1335 2018-08-01  Martin Sebor  <msebor@redhat.com>
1337         PR tree-optimization/86650
1338         * error.c (cp_printer): Move usage of EXPR_LOCATION (t) and
1339         TREE_BLOCK (t) from within percent_K_format to this callsite.
1341 2018-08-01  Paolo Carlini  <paolo.carlini@oracle.com>
1343         PR c++/86661
1344         * class.c (note_name_declared_in_class): Use location_of in permerror
1345         instead of DECL_SOURCE_LOCATION (for OVERLOADs).
1347 2018-07-31  Tom de Vries  <tdevries@suse.de>
1349         PR debug/86687
1350         * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE.
1352 2018-07-31  Jakub Jelinek  <jakub@redhat.com>
1354         P1008R1 - prohibit aggregates with user-declared constructors
1355         * class.c (check_bases_and_members): For C++2a set
1356         CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
1357         type_has_user_provided_or_explicit_constructor.
1359 2018-07-31  Martin Liska  <mliska@suse.cz>
1361         PR c++/86653
1362         * parser.c (cp_parser_condition): Initialize non_constant_p
1363         to false.
1365 2018-07-28  David Malcolm  <dmalcolm@redhat.com>
1367         * error.c (cp_printer): In the leading comment, move "%H" and "%I"
1368         into alphabetical order, and add missing "%G" and "%K".  Within
1369         the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
1370         cases are in alphabetical order.
1372 2018-07-25  Jakub Jelinek  <jakub@redhat.com>
1374         * cp-tree.h (enum cp_tree_index): Add
1375         CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
1376         and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
1377         (abi_tag_identifier, aligned_identifier, begin_identifier,
1378         end_identifier, get__identifier, gnu_identifier,
1379         tuple_element_identifier, tuple_size_identifier, type_identifier,
1380         value_identifier, fun_identifier, closure_identifier): Define.
1381         * decl.c (initialize_predefined_identifiers): Initialize the above
1382         identifiers.
1383         (get_tuple_size): Use tuple_size_identifier instead of
1384         get_identifier ("tuple_size") and value_identifier instead of
1385         get_identifier ("value").
1386         (get_tuple_element_type): Use tuple_element_identifier instead of
1387         get_identifier ("tuple_element") and type_identifier instead of
1388         get_identifier ("type").
1389         (get_tuple_decomp_init): Use get__identifier instead of
1390         get_identifier ("get").
1391         * lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
1392         get_identifier ("_FUN").
1393         * parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
1394         instead of get_identifier ("__closure").
1395         (cp_parser_std_attribute): Use gnu_identifier instead of
1396         get_identifier ("gnu").
1397         (cp_parser_std_attribute_spec): Likewise.  Use aligned_identifier
1398         instead of get_identifier ("aligned").
1399         * class.c (check_abi_tags, inherit_targ_abi_tags): Use
1400         abi_tag_identifier instead of get_identifier ("abi_tag").
1402         PR c++/85515
1403         * cp-tree.h (enum cp_tree_index): Add
1404         CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
1405         (for_range__identifier, for_begin__identifier, for_end__identifier,
1406         for_range_identifier, for_begin_identifier, for_end_identifier):
1407         Define.
1408         * decl.c (initialize_predefined_identifiers): Initialize
1409         for_{range,begin,end}{,_}_identifier.
1410         * parser.c (build_range_temp): Use for_range__identifier instead of
1411         get_identifier ("__for_range").
1412         (cp_convert_range_for): Use for_begin__identifier and
1413         for_end__identifier instead of get_identifier ("__for_begin") and
1414         get_identifier ("__for_end").
1415         * semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
1416         local symbols to "__for_{range,begin,end}".
1418 2018-07-23  Jakub Jelinek  <jakub@redhat.com>
1420         PR c++/86569
1421         * cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
1422         of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
1423         or warn_nonnull_compare.
1425 2018-07-19  Paolo Carlini  <paolo.carlini@oracle.com>
1427         Revert fix for c++/59480 (and testsuite followup)
1429         2019-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
1431         PR c++/59480, DR 136
1432         * decl.c (check_no_redeclaration_friend_default_args): New.
1433         (duplicate_decls): Use the latter; also check that a friend
1434         declaration specifying default arguments is a definition.
1436 2018-07-18  Jakub Jelinek  <jakub@redhat.com>
1438         PR c++/86550
1439         * parser.c (cp_parser_decl_specifier_seq): Diagnose invalid type
1440         specifier if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
1442 2018-07-18  Marek Polacek  <polacek@redhat.com>
1444         PR c++/86190 - bogus -Wsign-conversion warning
1445         * typeck.c (cp_build_binary_op): Fix formatting.  Add a warning
1446         sentinel.
1448 2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
1450         PR c++/59480, DR 136
1451         * decl.c (check_no_redeclaration_friend_default_args): New.
1452         (duplicate_decls): Use the latter; also check that a friend
1453         declaration specifying default arguments is a definition.
1455 2018-07-18  Paolo Carlini  <paolo.carlini@oracle.com>
1457         * class.c (note_name_declared_in_class): Prefer permerror + inform
1458         to a pair of permerrors; use DECL_SOURCE_LOCATION.
1460 2018-07-18  Richard Biener  <rguenther@suse.de>
1462         PR debug/86523
1463         * decl2.c (c_parse_final_cleanups): Call write_out_vars before
1464         start_static_storage_duration_function sets current_function_decl.
1466 2018-07-17  Jason Merrill  <jason@redhat.com>
1468         PR c++/86480 - nested variadic lambda and constexpr if.
1469         * pt.c (find_parameter_packs_r) [IF_STMT]: Don't walk into
1470         IF_STMT_EXTRA_ARGS.
1471         * tree.c (cp_walk_subtrees) [DECLTYPE_TYPE]: Set
1472         cp_unevaluated_operand.
1473         [ALIGNOF_EXPR] [SIZEOF_EXPR] [NOEXCEPT_EXPR]: Likewise.
1475 2018-07-16  Paolo Carlini  <paolo.carlini@oracle.com>
1477         * class.c (resolve_address_of_overloaded_function): Don't emit an
1478         inform if the matching permerror returns false.
1479         * pt.c (check_specialization_namespace): Likewise.
1481 2018-07-16  Jakub Jelinek  <jakub@redhat.com>
1483         PR c++/3698
1484         PR c++/86208
1485         * cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
1486         in TREE_USED flag from stmt to h->to.
1488 2018-07-13  Nathan Sidwell  <nathan@acm.org>
1490         PR c++/86374
1491         * pt.c (lookup_template_class_1): Use tsubst_aggr_type for
1492         contexts that are classes.
1493         * parser.c (cp_parser_template_id): Combine entering_scope decl &
1494         initializer.
1496 2018-07-12  Jakub Jelinek  <jakub@redhat.com>
1498         * decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
1499         type here, instead add "omp declare target implicit" attribute.  Add
1500         that attribute instead of "omp declare target" also when
1501         processing_template_decl.
1502         * decl.c (cp_finish_decl): Diagnose vars without mappable type here,
1503         and before calling cp_omp_mappable_type call complete_type.
1505 2018-07-10  Jakub Jelinek  <jakub@redhat.com>
1507         PR sanitizer/86406
1508         * cp-gimplify.c (cp_maybe_instrument_return): Skip trailing
1509         DEBUG_BEGIN_STMTs.
1511         PR c++/86443
1512         * semantics.c (handle_omp_for_class_iterator): Remove lastp argument,
1513         instead of setting *lastp turn orig_declv elt into a TREE_LIST.
1514         (finish_omp_for): Adjust handle_omp_for_class_iterator caller.
1515         * pt.c (tsubst_omp_for_iterator): Allow OMP_FOR_ORIG_DECLS to contain
1516         TREE_LIST for both the original class iterator and the "last" helper
1517         var.
1519 2018-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
1521         * decl.c (grokdeclarator): Use rich_location::add_range in three
1522         more places; include gcc-rich-location.h.
1524 2018-07-07  Aldy Hernandez  <aldyh@redhat.com>
1526         * decl.c (build_enumerator): Change overflow type to overflow_type.
1527         * init.c (build_new_1): Same.
1529 2018-07-05  Nathan Sidwell  <nathan@acm.org>
1531         * cp/decl.c (decls_match): Check SYSTEM_IMPLICIT_EXTERN_C not
1532         NO_IMPLICIT_EXTERN_C.
1533         * cp/parser.c (cp_parser_parameter_declaration_clause): Likewise.
1535 2018-07-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
1537         PR c++/86398
1538         * method.c (is_trivially_xible): Return false
1539         if is_xible_helper returns a NULL_TREE.
1541 2018-07-03  Paolo Carlini  <paolo.carlini@oracle.com>
1543         * decl.c (min_location): New.
1544         (smallest_type_quals_location): Use the latter.
1545         (check_concept_fn): Use DECL_SOURCE_LOCATION.
1546         (grokdeclarator): Use accurate locations in a number of error
1547         messages involving ds_thread, ds_storage_class, ds_virtual,
1548         ds_constexpr, ds_typedef and ds_friend; exploit min_location.
1550 2018-07-03  Marek Polacek  <polacek@redhat.com>
1552         PR c++/86201
1553         * typeck.c (cp_build_binary_op): Check c_inhibit_evaluation_warnings.
1555 2018-07-03  Jason Merrill  <jason@redhat.com>
1557         PR c++/86378 - functional cast in noexcept-specifier.
1558         * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration.
1560 2018-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
1562         * parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
1563         in error message about __thread and thread_local at the same time.
1565 2018-06-29  Marek Polacek  <polacek@redhat.com>
1567         PR c++/86184
1568         * tree.c (cp_save_expr): Don't call save_expr for TARGET_EXPRs.
1570 2018-06-28  David Malcolm  <dmalcolm@redhat.com>
1572         * parser.c (cp_parser_error_1): After issuing a conflict marker
1573         error, consume tokens until the end of the source line.
1575 2018-06-28  Jason Merrill  <jason@redhat.com>
1577         PR c++/86342 - -Wdeprecated-copy and system headers.
1578         * decl2.c (cp_warn_deprecated_use): Don't warn about declarations
1579         in system headers.
1581 2018-06-27  David Malcolm  <dmalcolm@redhat.com>
1583         PR c++/86329
1584         * name-lookup.c (consider_binding_level): Filter out names that
1585         match anon_aggrname_p.
1587 2018-06-27  Jason Merrill  <jason@redhat.com>
1589         * name-lookup.c (do_pushtag): If we skip a class level, also skip
1590         its template level.
1592 2018-06-26  Jason Merrill  <jason@redhat.com>
1594         PR c++/86320 - memory-hog with std::array of pair
1595         * typeck2.c (process_init_constructor_array): Only compute a
1596         constant initializer once.
1598         PR c++/80290 - memory-hog with std::pair.
1599         * pt.c (fn_type_unification): Add convs parameter.
1600         (check_non_deducible_conversion): Remember conversion.
1601         (check_non_deducible_conversions): New.  Do checks here.
1602         (type_unification_real): Not here.  Remove flags parm.
1603         * call.c (add_function_candidate): Make convs a parameter.
1604         Don't recalculate the conversion if it's already set.
1605         (add_template_candidate_real): Allocate convs here.
1606         (good_conversion, conv_flags): New.
1608 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
1610         PR c++/86291
1611         * parser.c (cp_parser_omp_for_loop_init): Change for_block argument
1612         type from vec<tree, va_gc> * to vec<tree, va_gc> *&.
1614 2018-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
1616         * decl.c (bad_specifiers): Add const location_t* parameter and
1617         use locations in error messages about 'inline' and 'virtual'.
1618         (mark_inline_variable): Add location_t parameter and use it in
1619         error_at and pedwarn messages.
1620         (grokdeclarator): Use declspecs->locations[ds_constexpr],
1621         declspecs->locations[ds_concept], declspecs->locations[ds_virtual],
1622         declspecs->locations[ds_inline] in many error messages; adjust
1623         bad_specifiers and mark_inline_variable calls.
1624         (grokvardecl): Use declspecs->locations[ds_concept] in error message.
1626 2018-06-22  Jason Merrill  <jason@redhat.com>
1628         PR c++/86219 - ICE with erroneous initializer in template.
1629         * constexpr.c (fold_non_dependent_expr): Add complain parm.
1630         * call.c, expr.c, init.c, pt.c, semantics.c, typeck.c, typeck2.c:
1631         Pass it.
1632         * call.c (build_cxx_call): Don't mess with builtins in a template.
1633         * typeck2.c (store_init_value): If fold_non_dependent_expr didn't
1634         produce a constant value, go back to the uninstantiated form.
1636         Avoid taking the address of something just because it's in parens.
1637         * constexpr.c (same_type_ignoring_tlq_and_bounds_p): New.
1638         (cxx_fold_indirect_ref): Use it.
1639         (cxx_eval_constant_expression) [VIEW_CONVERT_EXPR]: Use it.
1640         * cp-tree.h (REF_PARENTHESIZED_P): Allow VIEW_CONVERT_EXPR.
1641         * semantics.c (force_paren_expr): Use VIEW_CONVERT_EXPR instead of
1642         static_cast to reference type.
1643         (maybe_undo_parenthesized_ref): Handle VIEW_CONVERT_EXPR.
1645 2018-06-21  Jason Merrill  <jason@redhat.com>
1647         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Use TEMPLATE_PARM_DESCENDANTS.
1649         * name-lookup.c (do_push_to_top_level): Don't allocate
1650         current_lang_base.
1651         (do_pop_from_top_level): Release current_lang_base.
1653         Let -fmem-report see callers of cxx_make_type.
1654         * lex.c (cxx_make_type): Add MEM_STAT_DECL.
1655         (make_class_type): Likewise.
1656         (cxx_make_type_hook): New.
1657         * cp-objcp-common.h (LANG_HOOKS_MAKE_TYPE): Use cxx_make_type_hook.
1659 2018-06-20  Nathan Sidwell  <nathan@acm.org>
1661         PR c++/85634
1662         * friend.c (add_friend): Keep lookup sets of tempate sets.
1664 2018-06-20  Paolo Carlini  <paolo.carlini@oracle.com>
1666         * decl.c (grokfndecl): Add const cp_decl_specifier_seq* parameter;
1667         tidy handling of a null location_t argument; use proper location
1668         information in a few additional error messages.
1669         (grokdeclarator): Update calls.
1671 2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
1672             Thomas Schwinge <thomas@codesourcery.com>
1673             Cesar Philippidis  <cesar@codesourcery.com>
1675         * parser.c (cp_parser_omp_clause_name): Add support for finalize
1676         and if_present. Make present_or_{copy,copyin,copyout,create} aliases
1677         to their non-present_or_* counterparts. Make 'self' an alias to
1678         PRAGMA_OACC_CLAUSE_HOST.
1679         (cp_parser_oacc_data_clause): Update GOMP mappings for
1680         PRAGMA_OACC_CLAUSE_{COPY,COPYIN,COPYOUT,CREATE,DELETE}. Remove
1681         PRAGMA_OACC_CLAUSE_{SELF,PRESENT_OR_*}.
1682         (cp_parser_oacc_all_clauses): Handle finalize and if_present clauses.
1683         Remove support for present_or_* clauses.
1684         (OACC_KERNELS_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
1685         (OACC_PARALLEL_CLAUSE_MASK): Likewise.
1686         (OACC_DECLARE_CLAUSE_MASK): Likewise.
1687         (OACC_DATA_CLAUSE_MASK): Likewise.
1688         (OACC_ENTER_DATA_CLAUSE_MASK): Remove PRESENT_OR_* clauses.
1689         (OACC_EXIT_DATA_CLAUSE_MASK): Add FINALIZE clause.
1690         (OACC_UPDATE_CLAUSE_MASK): Remove SELF, add IF_PRESENT.
1691         (cp_parser_oacc_declare): Remove PRESENT_OR_* clauses.
1692         * pt.c (tsubst_omp_clauses): Handle IF_PRESENT and FINALIZE.
1693         * semantics.c (finish_omp_clauses): Handle IF_PRESENT and FINALIZE.
1695 2018-06-20  Marek Polacek  <polacek@redhat.com>
1697         PR c++/86240
1698         * constexpr.c (cxx_eval_constant_expression): Handle ABSU_EXPR.
1699         (fold_simple_1): Likewise.
1700         * error.c (dump_expr): Likewise.
1702 2018-06-20  Nathan Sidwell  <nathan@acm.org>
1704         PR c++/85634
1705         * cp-tree.h (lookup_keep): Drop KEEP parm.
1706         (lookup_list_keep): Delete.
1707         (maybe_get_fns): Declare.
1708         * parser.c (cp_parser_primary_expression): Call lookup_keep here.
1709         (cp_parser_template_id): Not here ...
1710         * decl.c (cp_finish_decl): ... nor here ...
1711         * init.c (build_raw_new_expr): ... nor here ...
1712         * pt.c (process_template_parm): ... nor here ...
1713         * semantics.c (perform_koenig_lookup): Call lookup_keep.
1714         (finish_call_expr): Not here.
1715         * tree.c (ovl_cache): Delete.
1716         (ovl_make, ovl_copy): No cache.
1717         (lookup_keep): Always keep.
1718         (lookup_list_keep): Delete.
1719         (maybe_get_fns): New, broken out of ...
1720         (get_fns): ... here.  Call it.
1721         (built_min_nt_loc, build_min, build_min_non_dep): Drop lookup_keep.
1722         (build_min_nt_call_vec): Likewise.
1724 2018-06-19  Jason Merrill  <jason@redhat.com>
1726         * cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): Remove.
1727         * constexpr.c: Use CONSTRUCTOR_NO_CLEARING instead.
1729         PR c++/86182 - ICE with anonymous union passed to template.
1730         * pt.c (tsubst_expr) [DECL_EXPR]: Handle an anonymous union type
1731         used to declare a named variable.
1733 2018-06-18  Jason Merrill  <jason@redhat.com>
1735         * tree.c (cp_expr_location): New.
1736         * cp-tree.h (cp_expr_loc_or_loc): New.
1737         * call.c, cvt.c, constexpr.c, constraint.cc, cp-gimplify.c, decl.c,
1738         error.c, init.c, lex.c, parser.c, pt.c, semantics.c, typeck.c,
1739         typeck2.c: Use it instead of EXPR_LOC_OR_LOC.
1741         * parser.c (cp_parser_lambda_expression): Use a range for
1742         LAMBDA_EXPR_LOCATION.
1744         PR c++/86200 - ICE with unexpanded pack in lambda parameter.
1745         * pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Also look into the
1746         function type.
1748         PR c++/81060 - ICE with unexpanded parameter pack.
1749         * pt.c (check_for_bare_parameter_packs): Add loc parameter.
1750         * decl.c (grokdeclarator): Call it for qualifying_scope.
1752         PR c++/86171 - ICE with recursive alias instantiation.
1753         * pt.c (tsubst_decl): Handle recursive alias instantiation.
1755 2018-06-18  Paolo Carlini  <paolo.carlini@oracle.com>
1757         * decl.c (duplicate_decls): Consistently use DECL_SOURCE_LOCATION
1758         in errors about redefined default arguments; tidy.
1760 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
1762         * constexpr.c (potential_constant_expression_1): Handle ABSU_EXPR.
1763         * cp-gimplify.c (cp_fold): Likewise.
1765 2018-06-15  Jason Merrill  <jason@redhat.com>
1767         PR c++/86147 - wrong capture for template argument.
1768         * expr.c (mark_use): Look through NOP_EXPR.
1770         * name-lookup.c (do_pushtag): Don't look through complete types, but
1771         don't add to them either.  Get context from current_binding_level.
1772         * pt.c (tsubst_default_argument): Use push_to/pop_from_top_level.
1774         * decl.c (start_enum): Do compare dependent underlying type.
1776         PR c++/82882 - ICE with lambda in template default argument.
1777         * lambda.c (record_null_lambda_scope): New.
1778         * pt.c (tsubst_lambda_expr): Use it.
1779         * name-lookup.c (do_pushtag): Don't give a lambda DECL_CONTEXT of a
1780         function that isn't open.
1782         * tree.c (maybe_warn_parm_abi): Inform the location of the class.
1784 2018-06-14  Marek Polacek  <polacek@redhat.com>
1786         PR c++/86063
1787         * decl2.c (cp_check_const_attributes): Skip trees that are not
1788         TREE_LISTs.
1790 2018-06-14  Jakub Jelinek  <jakub@redhat.com>
1792         P0624R2 - Default constructible and assignable stateless lambdas
1793         * method.c (synthesized_method_walk): For C++2a don't mark
1794         sfk_constructor or sfk_copy_assignment as deleted if lambda has
1795         no lambda-captures.
1797 2018-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
1799         * decl.c (duplicate_decls): Use DECL_SOURCE_LOCATION in
1800         OPT_Wshadow warning_at.
1801         (grokfndecl): Consistently use the location_t argument in
1802         literal operator diagnostic messages.
1803         (grokdeclarator): Use declspecs->locations[ds_storage_class]
1804         in error_at call.
1805         * decl2.c (finish_static_data_member_decl): Use DECL_SOURCE_LOCATION
1806         in permerror call.
1808 2018-06-13  Jason Merrill  <jason@redhat.com>
1810         PR c++/86099 - ICE with trivial copy and non-trivial default ctor.
1811         * constexpr.c (instantiate_cx_fn_r): Don't synthesize trivial
1812         constructors.
1814         PR c++/86094 - wrong code with defaulted move ctor.
1815         * class.c (classtype_has_non_deleted_move_ctor): New.
1816         * tree.c (maybe_warn_parm_abi, type_has_nontrivial_copy_init):
1817         Handle v12 breakage.
1819 2018-06-12  Jason Merrill  <jason@redhat.com>
1821         PR c++/86098 - ICE with template placeholder for TTP.
1822         * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check
1823         CLASS_PLACEHOLDER_TEMPLATE.
1825 2018-06-12  Paolo Carlini  <paolo.carlini@oracle.com>
1827         * decl2.c (coerce_new_type, coerce_delete_type): Add location_t
1828         parameter and adjust error_at calls.
1829         * decl.c (grok_op_properties): Adjust calls.
1830         * cp-tree.h (oerce_new_type, coerce_delete_type): Adjust decls.
1832 2018-06-12  Marek Polacek  <polacek@redhat.com>
1834         Core issue 1331 - const mismatch with defaulted copy constructor
1835         * class.c (check_bases_and_members): When checking a defaulted
1836         function, mark it as deleted rather than giving an error.
1838 2018-06-11  Jason Merrill  <jason@redhat.com>
1840         PR c++/85792 -Wctor-dtor-privacy and inherited constructor.
1841         * class.c (maybe_warn_about_overly_private_class): Handle inherited
1842         constructors.
1844         PR c++/85963 - -Wunused-but-set with ?: in template.
1845         * pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use.
1847 2018-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
1849         * decl.c (grok_op_properties): Consistently use the location
1850         of the decl; remove special casing of POSTINCREMENT_EXPR and
1851         POSTDECREMENT_EXPR wrt default arguments.
1853 2018-06-05  Jason Merrill  <jason@redhat.com>
1855         * constexpr.c (cxx_eval_binary_expression): Special case comparison
1856         of pointers to members of the same union.
1858 2018-06-11  Jason Merrill  <jason@redhat.com>
1860         PR c++/86094 - wrong code with defaulted move ctor.
1861         * tree.c (type_has_nontrivial_copy_init): Fix move ctor handling.
1863 2018-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
1865         * decl.c (grokfndecl): Use the location_t argument in two more places.
1867 2018-06-06  Marek Polacek  <polacek@redhat.com>
1869         PR c++/85977
1870         * pt.c (unify): If ELTTYPE has no deducible template parms, skip
1871         deduction from the list elements.
1872         (type_unification_real): Check convertibility of list elements.
1874 2018-06-06  Jason Merrill  <jason@redhat.com>
1876         PR c++/86060 - ICE on range for with -std=c++98.
1877         * parser.c (cp_parser_init_statement): Don't clobber *decl after
1878         pedwarn.
1880         PR c++/85710 - ICE with -Wmemset-elt-size.
1881         * semantics.c (finish_call_expr): Call warn_for_memset here.
1882         * parser.c (cp_parser_postfix_expression): Not here.
1883         (literal_integer_zerop): No longer static.
1884         * pt.c (build_non_dependent_expr): Don't wrap CONST_DECL.
1886 2018-06-05  Marek Polacek  <polacek@redhat.com>
1888         PR c++/85976
1889         * tree.c (cp_tree_equal): Handle USING_DECL.
1891 2018-06-05  Jason Merrill  <jason@redhat.com>
1893         PR c++/85731 - wrong error with qualified-id in template.
1894         * semantics.c (finish_qualified_id_expr): build_qualified_name
1895         for unbound names in the current class.
1897 2018-06-04  Jason Merrill  <jason@redhat.com>
1899         PR c++/61806 - missed SFINAE with partial specialization.
1900         * cp-tree.h (deferring_access_check_sentinel): Add deferring_kind
1901         parameter to constructor.
1902         * pt.c (instantiate_class_template_1): Enable access checking
1903         before call to most_specialized_partial_spec.
1905         PR c++/85765 - SFINAE and non-type default template arg.
1906         * pt.c (type_unification_real): Do full semantic processing if
1907         substituting a partial args list replaces all template parms.
1909 2018-06-03  Jason Merrill  <jason@redhat.com>
1911         PR c++/85739 - ICE with pointer to member template parm.
1912         * cvt.c (perform_qualification_conversions): Use cp_fold_convert.
1914 2018-06-02  Jason Merrill  <jason@redhat.com>
1916         PR c++/85761 - ICE with ill-formed use of const outer variable.
1917         * expr.c (mark_use): Handle location wrappers.
1919 2018-06-01  Jason Merrill  <jason@redhat.com>
1921         PR c++/85764 - bogus 'this' not captured error.
1922         * lambda.c (resolvable_dummy_lambda): Use nonlambda_method_basetype.
1923         (nonlambda_method_basetype): Handle NSDMI.
1925         CWG 1581: When are constexpr member functions defined?
1926         * constexpr.c (instantiate_cx_fn_r, instantiate_constexpr_fns): New.
1927         (cxx_eval_outermost_constant_expr): Call instantiate_constexpr_fns.
1929         PR c++/58281 - explicit instantiation of constexpr
1930         * pt.c (mark_decl_instantiated): Clear DECL_EXTERNAL.
1932         * pt.c (instantiate_decl): Any defaulted function is defined.
1934 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
1936         PR c++/77777
1937         * call.c (resolve_args): Use location of expression, not current input
1938         location.
1940 2018-05-30  Ville Voutilainen  <ville.voutilainen@gmail.com>
1942         Do not warn about zero-as-null when NULL is used.
1943         * call.c (conversion_null_warnings): Check for pointer
1944         types converted from zero constants.
1945         (convert_like_real): Add a warning sentinel at the end.
1946         * tree.c (maybe_warn_zero_as_null_pointer_constant): Also
1947         check null_node_p.
1949 2018-05-30  Jason Merrill  <jason@redhat.com>
1951         PR c++/85807 - ICE with call in template NSDMI.
1952         * init.c (get_nsdmi): Use push_to/pop_from_top_level.
1953         * tree.c (bot_manip): Don't set_flags_from_callee in a template.
1955         PR c++/85873 - constant initializer_list array not in .rodata.
1956         * tree.c (build_target_expr): Set TREE_READONLY.
1957         * call.c (set_up_extended_ref_temp): Set TREE_READONLY.
1959         * parser.c (cp_parser_check_condition_declarator): Handle
1960         cp_error_declarator.
1962 2018-05-30  Jonathan Wakely  <jwakely@redhat.com>
1964         * typeck.c (cxx_sizeof_or_alignof_type): Return size_one_node instead
1965         of using it in dead store.
1967 2018-05-29  Jason Merrill  <jason@redhat.com>
1969         PR c++/67445 - returning temporary initializer_list.
1970         PR c++/67711 - assigning from temporary initializer_list.
1971         PR c++/48562 - new initializer_list.
1972         * typeck.c (maybe_warn_about_returning_address_of_local): Also warn
1973         about returning local initializer_list.
1974         * cp-tree.h (AUTO_TEMP_NAME, TEMP_NAME_P): Remove.
1975         * call.c (build_over_call): Warn about assignment from temporary
1976         init_list.
1977         * init.c (build_new_1): Warn about 'new std::initializer_list'.
1978         (find_list_begin, maybe_warn_list_ctor): New.
1979         (perform_member_init): Use maybe_warn_list_ctor.
1981 2018-05-29  Marek Polacek  <polacek@redhat.com>
1983         PR c++/85883
1984         * init.c (build_new): Handle deducing a class with new
1985         with more than one argument.
1987 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
1989         PR c++/85952
1990         * init.c (build_aggr_init): For structured binding initialized from
1991         array call mark_rvalue_use on the initializer.
1993 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1995         * decl2.c (start_static_storage_duration_function): Use
1996         splay_tree_delete_pointers.
1998 2018-05-25  Jason Merrill  <jason@redhat.com>
2000         PR c++/85815 - reference to member of enclosing template.
2001         * search.c (lookup_base): Use currently_open_class.
2002         (lookup_member): Use it regardless of -fconcepts.
2003         * parser.c (cp_parser_postfix_dot_deref_expression): Check it.
2005         CWG 616, 1213 - value category of subobject references.
2006         * tree.c (lvalue_kind): Fix handling of ARRAY_REF of pointer.
2008 2018-05-24  Jason Merrill  <jason@redhat.com>
2010         PR c++/85842 - -Wreturn-type, constexpr if and generic lambda.
2011         * pt.c (tsubst_lambda_expr): Copy current_function_returns_* to
2012         generic lambda.
2014 2018-05-24  Ville Voutilainen  <ville.voutilainen@gmail.com>
2016         Pedwarn on a non-standard position of a C++ attribute.
2017         * parser.c (cp_parser_namespace_definition): Pedwarn about attributes
2018         after the namespace name.
2020 2018-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
2022         * cp-tree.h (INDIRECT_TYPE_P): New.
2023         * call.c (build_trivial_dtor_call, maybe_warn_class_memaccess,
2024         joust): Use it instead of POINTER_TYPE_P.
2025         * class.c (update_vtable_entry_for_fn, find_flexarrays,
2026         * fixed_type_or_null, resolves_to_fixed_type_p): Likewise.
2027         * constexpr.c (cxx_eval_binary_expression, cxx_fold_indirect_ref,
2028         * cxx_eval_increment_expression, potential_constant_expression_1):
2029         Likewise.
2030         * cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Likewise.
2031         * cp-objcp-common.c (cxx_get_alias_set): Likewise.
2032         * cp-ubsan.c (cp_ubsan_maybe_instrument_member_call,
2033         cp_ubsan_maybe_instrument_downcast): Likewise.
2034         * cvt.c (cp_convert_to_pointer, ocp_convert,
2035         cp_get_fndecl_from_callee, maybe_warn_nodiscard, convert): Likewise.
2036         * cxx-pretty-print.c (cxx_pretty_printer::abstract_declarator,
2037         pp_cxx_offsetof_expression_1): Likewise.
2038         * decl.c (grokparms, static_fn_type): Likewise.
2039         * decl2.c (grokbitfield): Likewise.
2040         * error.c (dump_expr): Likewise.
2041         * except.c (initialize_handler_parm, check_noexcept_r): Likewise.
2042         * init.c (warn_placement_new_too_small): Likewise.
2043         * lambda.c (build_capture_proxy, add_capture): Likewise.
2044         * parser.c (cp_parser_omp_for_loop): Likewise.
2045         * pt.c (convert_nontype_argument, fn_type_unification,
2046         uses_deducible_template_parms, check_cv_quals_for_unify,
2047         dependent_type_p_r): Likewise.
2048         * search.c (check_final_overrider): Likewise.
2049         * semantics.c (handle_omp_array_sections, finish_omp_clauses,
2050         finish_omp_for): Likewise.
2051         * tree.c (cp_build_qualified_type_real): Likewise.
2052         * typeck.c (build_class_member_access_expr,
2053         finish_class_member_access_expr, build_x_indirect_ref,
2054         cp_build_indirect_ref_1, cp_build_binary_op, build_const_cast_1):
2055         Likewise.
2057 2018-05-24  Jason Merrill  <jason@redhat.com>
2059         PR c++/85864 - literal template and default template arg.
2060         * pt.c (instantiation_dependent_r): Handle NONTYPE_ARGUMENT_PACK.
2062 2018-05-24  Marek Polacek  <polacek@redhat.com>
2064         PR c++/85847
2065         * init.c (build_new_1): Use fold_non_dependent_expr.  Use a dedicated
2066         variable for its result.  Fix a condition.
2067         (build_new): Use fold_non_dependent_expr.  Tweak a condition.
2069 2018-05-23  Jason Merrill  <jason@redhat.com>
2071         Fix cast to rvalue reference from prvalue.
2072         * cvt.c (diagnose_ref_binding): Handle rvalue reference.
2073         * rtti.c (build_dynamic_cast_1): Don't try to build a reference to
2074         non-class type.  Handle xvalue argument.
2075         * typeck.c (build_reinterpret_cast_1): Allow cast from prvalue to
2076         rvalue reference.
2077         * semantics.c (finish_compound_literal): Do direct-initialization,
2078         not cast, to initialize a reference.
2080         CWG 616, 1213 - value category of subobject references.
2081         * tree.c (lvalue_kind): A reference to a subobject of a prvalue is
2082         an xvalue.
2083         * typeck2.c (build_m_component_ref): Likewise.
2084         * typeck.c (cp_build_addr_expr_1, lvalue_or_else): Remove diagnostic
2085         distinction between temporary and xvalue.
2087 2018-05-23  Marek Polacek  <polacek@redhat.com>
2089         Implement P0614R1, Range-based for statements with initializer.
2090         * parser.c (cp_parser_range_based_for_with_init_p): New.
2091         (cp_parser_init_statement): Use it.  Parse the optional init-statement
2092         for a range-based for loop.
2093         (cp_parser_skip_to_closing_parenthesis_1): Handle balancing ?:.
2095 2018-05-22  Jason Merrill  <jason@redhat.com>
2097         PR c++/81420 - not extending temporary lifetime.
2098         * call.c (extend_ref_init_temps_1): Handle ARRAY_REF.
2099         * class.c (build_base_path): Avoid redundant move of an rvalue.
2101         PR c++/85866 - error with .* in default template arg.
2102         * pt.c (tsubst_copy_and_build): Handle partial instantiation.
2104 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
2106         * parser.c (cp_parser_parameter_declaration_list): Remove
2107         bool* parameter.
2108         (cp_parser_parameter_declaration_clause): Adjust.
2109         (cp_parser_cache_defarg): Likewise.
2111 2018-05-21  Paolo Carlini  <paolo.carlini@oracle.com>
2113         PR c++/84588
2114         * parser.c (cp_parser_maybe_commit_to_declaration,
2115         cp_parser_check_condition_declarator): New.
2116         (cp_parser_simple_declaration): Use the first above.
2117         (cp_parser_condition): Use both the above; enforce
2118         [stmt.stmt]/2 about the declarator not specifying
2119         a function or an array; improve error-recovery.
2121 2018-05-20  Jason Merrill  <jason@redhat.com>
2123         PR libstdc++/85843 - warning in logic_error copy constructor.
2124         * class.c (type_has_user_nondefault_constructor): Check for a
2125         user-provided ctor, not user-declared.
2127 2018-05-19  Jason Merrill  <jason@redhat.com>
2129         * pt.c (tsubst_pack_expansion): Sorry rather than abort
2130         on __integer_pack as subexpression of pattern.
2132 2018-05-18  Jason Merrill  <jason@redhat.com>
2134         PR c++/58407 - deprecated implicit copy ops.
2135         * call.c (build_over_call): Warn about deprecated trivial fns.
2136         * class.c (classtype_has_user_copy_or_dtor): New.
2137         (type_build_ctor_call): Check TREE_DEPRECATED.
2138         (type_build_dtor_call): Likewise.
2139         * decl2.c (cp_warn_deprecated_use): Move from tree.c.
2140         Add checks.  Return bool.  Handle -Wdeprecated-copy.
2141         (mark_used): Use it.
2142         * decl.c (grokdeclarator): Remove redundant checks.
2143         * typeck2.c (build_functional_cast): Likewise.
2144         * method.c (lazily_declare_fn): Mark deprecated copy ops.
2145         * init.c (build_aggr_init): Only set TREE_USED if there are
2146         side-effects.
2148 2018-05-18  Cesar Philippidis  <cesar@codesourcery.com>
2150         PR c++/85782
2151         * cp-gimplify.c (cp_genericize_r): Call genericize_omp_for_stmt for
2152         OACC_LOOPs.
2154 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
2156         * constexpr.c (cxx_eval_constant_expression): Remove FMA_EXPR handling.
2157         (potential_constant_expression_1): Likewise.
2159 2018-05-16  Marek Polacek  <polacek@redhat.com>
2161         PR c++/85363
2162         * call.c (set_flags_from_callee): Handle AGGR_INIT_EXPRs too.
2163         * tree.c (bot_manip): Call set_flags_from_callee for
2164         AGGR_INIT_EXPRs too.
2166 2018-05-15  Jason Merrill  <jason@redhat.com>
2168         * cp-tree.h (cp_expr): Remove copy constructor.
2169         * mangle.c (struct releasing_vec): Declare copy constructor.
2171         * constexpr.c (cxx_eval_vec_init_1): Pass tf_none if ctx->quiet.
2173         PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?:
2174         * call.c (build_conditional_expr_1): Don't force_rvalue when one arm
2175         is a throw-expression.
2177 2018-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
2179         * cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
2180         (FOR_EACH_CLONE): Update.
2181         * decl.c (grokdeclarator): Use it.
2182         * decl2.c (vague_linkage_p): Likewise.
2183         * mangle.c (mangle_decl): Likewise.
2184         * method.c (lazily_declare_fn): Likewise.
2185         * optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
2186         * repo.c (repo_emit_p): Likewise.
2187         * tree.c (decl_linkage): Likewise.
2189 2018-05-14  Jason Merrill  <jason@redhat.com>
2191         Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec.
2192         * tree.c (build_cp_fntype_variant): New.
2193         (build_ref_qualified_type, build_exception_variant)
2194         (strip_typedefs, cxx_copy_lang_qualifiers): Use it.
2195         (cxx_type_hash_eq, cp_check_qualified_type): Check
2196         TYPE_HAS_LATE_RETURN_TYPE.
2197         (cp_build_type_attribute_variant): Check cxx_type_hash_eq.
2198         (cp_build_qualified_type_real): No need to preserve C++ qualifiers.
2199         * class.c (build_clone): Use cxx_copy_lang_qualifiers.
2200         (adjust_clone_args): Likewise.
2201         * decl.c (grokfndecl): Add late_return_type_p parameter.  Use
2202         build_cp_fntype_variant.
2203         (grokdeclarator): Pass late_return_type_p to grokfndecl.
2204         (check_function_type): Use cxx_copy_lang_qualifiers.
2205         (static_fn_type): Use cxx_copy_lang_qualifiers.
2206         * decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
2207         (cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
2208         (change_return_type): Use cxx_copy_lang_qualifiers.
2209         * mangle.c (write_type): Use cxx_copy_lang_qualifiers.
2210         * parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
2211         return type on the declarator like a normal trailing return type.
2212         * pt.c (tsubst_function_type): Use build_cp_fntype_variant.
2213         (copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
2214         * typeck.c (merge_types): Use build_cp_fntype_variant.
2216 2018-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
2218         * cp-tree.h (TYPE_REF_P): New.
2219         (TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
2220         * call.c (build_list_conv, build_aggr_conv, standard_conversion,
2221         direct_reference_binding, reference_binding, implicit_conversion,
2222         add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
2223         build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
2224         build_over_call, perform_implicit_conversion_flags,
2225         extend_ref_init_temps, type_has_extended_temps): Use it.
2226         * class.c (one_inheriting_sig, check_field_decls,
2227         check_bases_and_members, find_flexarrays, finish_struct,
2228         fixed_type_or_null): Likewise.
2229         * constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
2230         non_const_var_error, cxx_eval_constant_expression,
2231         potential_constant_expression_1): Likewise.
2232         * cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
2233         cp_genericize_r, cxx_omp_privatize_by_reference,
2234         cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
2235         cp_fold_maybe_rvalue): Likewise.
2236         * cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
2237         * cvt.c (build_up_reference, convert_to_reference,
2238         convert_from_reference, convert_to_void, noexcept_conv_p,
2239         fnptr_conv_p): Likewise.
2240         * decl.c (poplevel, check_for_uninitialized_const_var,
2241         check_initializer, initialize_local_var, cp_finish_decl,
2242         get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
2243         move_signature_fn_p, grok_op_properties, finish_function): Likewise.
2244         * decl2.c (grok_array_decl, cp_reconstruct_complex_type,
2245         decl_maybe_constant_var_p): Likewise.
2246         * error.c (dump_type_prefix, dump_expr): Likewise.
2247         * except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
2248         is_admissible_throw_operand_or_catch_parameter): Likewise.
2249         * expr.c (mark_use): Likewise.
2250         * init.c (build_zero_init_1, build_value_init_noctor,
2251         perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
2252         build_new, build_delete): Likewise.
2253         * lambda.c (build_lambda_object): Likewise.
2254         * mangle.c (write_expression, write_template_arg): Likewise.
2255         * method.c (forward_parm, do_build_copy_constructor,
2256         do_build_copy_assign, build_stub_object, constructible_expr,
2257         walk_field_subobs): Likewise.
2258         * parser.c (cp_parser_omp_for_loop_init,
2259         cp_parser_omp_declare_reduction_exprs,
2260         cp_parser_omp_declare_reduction): Likewise.
2261         * pt.c (convert_nontype_argument_function, convert_nontype_argument,
2262         convert_template_argument, tsubst_pack_expansion,
2263         tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
2264         maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
2265         more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
2266         value_dependent_expression_p, build_deduction_guide): Likewise.
2267         * semantics.c (finish_handler_parms, finish_non_static_data_member,
2268         finish_compound_literal, omp_privatize_field,
2269         handle_omp_array_sections_1, handle_omp_array_sections,
2270         cp_check_omp_declare_reduction, finish_omp_reduction_clause,
2271         finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
2272         finish_omp_clauses, finish_decltype_type, capture_decltype,
2273         finish_builtin_launder): Likewise.
2274         * tree.c (lvalue_kind, cp_build_reference_type, move,
2275         cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
2276         * typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
2277         cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
2278         cp_build_addr_expr_1, maybe_warn_about_useless_cast,
2279         build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
2280         build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
2281         convert_for_initialization,
2282         maybe_warn_about_returning_address_of_local, check_return_expr,
2283         cp_type_quals, casts_away_constness, non_reference): Likewise.
2284         * typeck2.c (cxx_readonly_error, store_init_value,
2285         process_init_constructor_record, build_x_arrow, build_functional_cast,
2286         add_exception_specifier): Likewise.
2288 2018-05-14  Jason Merrill  <jason@redhat.com>
2290         * pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
2291         (tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
2293 2018-05-11  Jakub Jelinek  <jakub@redhat.com>
2295         PR c/85696
2296         * cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
2297         * cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
2298         cxx_omp_predetermined_sharing_1.  Rename old function to ...
2299         (cxx_omp_predetermined_sharing_1): ... this.
2300         * semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
2301         instead of cxx_omp_predetermined_sharing.
2303 2018-05-10  Jason Merrill  <jason@redhat.com>
2305         * decl.c (cp_finish_decl): Don't instantiate auto variable.
2306         (check_static_variable_definition): Allow auto.
2307         * constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
2309         * cp-tree.h (DECL_CONSTRUCTOR_P): Use DECL_CXX_CONSTRUCTOR_P.
2310         (DECL_DESTRUCTOR_P): Use DECL_CXX_DESTRUCTOR_P.
2312         Core issue 2310 - conversion to base of incomplete type.
2313         * class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
2315         CWG 2267 - list-initialization of reference temporary
2316         * call.c (reference_binding): List-initializing a reference
2317         temporary is copy-list-initialization.
2319         * parser.c (cp_parser_class_head): Use num_template_headers_for_class.
2321         * pt.c (instantiate_decl): Make sure we aren't trying to do a nested
2322         instantiation in template context.
2324         * class.c (vbase_has_user_provided_move_assign): Use
2325         user_provided_p.
2327         * lambda.c (lambda_expr_this_capture): Improve logic.
2329         * decl.c (make_typename_type): s/parameters/arguments/.
2330         * parser.c (cp_parser_nested_name_specifier_opt): Likewise.
2331         * pt.c (make_pack_expansion): Correct error message.
2333 2018-05-10  Jakub Jelinek  <jakub@redhat.com>
2335         PR c++/85662
2336         * cp-gimplify.c (cp_fold): Use fold_offsetof rather than
2337         fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
2338         fold_convert.
2340 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
2342         PR c++/85400
2343         * decl2.c (adjust_var_decl_tls_model): New static function.
2344         (comdat_linkage): Call it on a variable.
2345         (maybe_make_one_only): Likewise.
2347 2018-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
2349         PR c++/85713
2350         Revert:
2351         2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
2353         PR c++/84588
2354         * parser.c (cp_parser_parameter_declaration_list): When the
2355         entire parameter-declaration-list is erroneous maybe call
2356         abort_fully_implicit_template.
2358 2018-05-08  Jason Merrill  <jason@redhat.com>
2360         PR c++/85706 - class deduction under decltype
2361         * pt.c (for_each_template_parm_r): Handle DECLTYPE_TYPE.  Clear
2362         *walk_subtrees whether or not we walked into the operand.
2363         (type_uses_auto): Only look at deduced contexts.
2365 2018-05-08  Paolo Carlini  <paolo.carlini@oracle.com>
2367         PR c++/84588
2368         * parser.c (cp_parser_parameter_declaration_list): When the
2369         entire parameter-declaration-list is erroneous maybe call
2370         abort_fully_implicit_template.
2372 2018-05-08  Marek Polacek  <polacek@redhat.com>
2374         PR c++/85695
2375         * semantics.c (finish_if_stmt_cond): See through typedefs.
2377 2018-05-07  Jason Merrill  <jason@redhat.com>
2379         PR c++/85646 - lambda visibility.
2380         * decl2.c (determine_visibility): Don't mess with template arguments
2381         from the containing scope.
2382         (vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
2383         thunk.
2385 2018-05-07  Nathan Sidwell  <nathan@acm.org>
2387         Remove fno-for-scope
2388         * cp-tree.h (DECL_ERROR_REPORTED, DECL_DEAD_FOR_LOCAL)
2389         (DECL_HAS_SHADOWED_FOR_VAR_P, DECL_SHADOWED_FOR_VAR)
2390         (SET_DECL_SHADOWED_FOR_VAR): Delete.
2391         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
2392         (check_for_out_of_scope_variable, init_shadowed_var_for_decl):
2393         Don't declare.
2394         * name-lookup.h (struct cp_binding_level): Remove
2395         dead_vars_from_for field.
2396         * cp-lang.c (cp_init_ts): Delete.
2397         (LANG_HOOKS_INIT_TS): Override to cp_common_init_ts.
2398         * cp-objcp-common.c (shadowed_var_for_decl): Delete.
2399         (decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert)
2400         (init_shadowed_var_for_decl): Delete.
2401         * decl.c (poplevel): Remove shadowed for var handling.
2402         (cxx_init_decl_processing): Remove -ffor-scope deprecation.
2403         * name-lookup.c (find_local_binding): Remove shadowed for var
2404         handling.
2405         (check_local_shadow): Likewise.
2406         (check_for_out_of_scope_variable): Delete.
2407         * parser.c (cp_parser_primary_expression): Remove shadowed for var
2408         handling.
2409         * pt.c (tsubst_decl): Remove DECL_DEAD_FOR_LOCAL setting.
2410         * semantics.c (begin_for_scope): Always have a scope.
2411         (begin_for_stmt, finish_for_stmt): Remove ARM-for scope handling.
2412         (begin_range_for_stmt, finish_id_expression): Likewise.
2414 2018-05-07  Jason Merrill  <jason@redhat.com>
2416         PR c++/85618 - ICE with initialized VLA.
2417         * tree.c (vla_type_p): New.
2418         * typeck2.c (store_init_value, split_nonconstant_init_1): Check it
2419         rather than array_of_runtime_bound_p.
2421 2018-05-05  Paolo Carlini  <paolo.carlini@oracle.com>
2423         * cvt.c (ocp_convert): Early handle the special case of a
2424         null_ptr_cst_p expr converted to a NULLPTR_TYPE_P type.
2426 2018-05-03  Jason Merrill  <jason@redhat.com>
2428         PR c++/85600 - virtual delete failure.
2429         * init.c (build_delete): Always save_expr when deleting.
2431 2018-05-03  Nathan Sidwell  <nathan@acm.org>
2433         * decl.c (cxx_init_decl_processing): Remove flag_friend_injection.
2434         * name-lookup.c (do_pushdecl): Likewise.
2436 2018-05-02  Paolo Carlini  <paolo.carlini@oracle.com>
2437             Jason Merrill  <jason@redhat.com>
2439         PR c++/68374
2440         * name-lookup.c (check_local_shadow): Don't handle static old
2441         declarations in the block handling locals shadowing locals.
2443 2018-05-01  Jason Merrill  <jason@redhat.com>
2445         PR c++/85587 - error with scoped enum in template.
2446         * semantics.c (finish_qualified_id_expr): Don't return an
2447         unqualified IDENTIFIER_NODE.
2449 2018-04-30  Jason Merrill  <jason@redhat.com>
2451         PR c++/85580 - extern "C" and local variables
2452         * name-lookup.c (check_extern_c_conflict): Ignore local decls.
2454         PR c++/84701 - unsigned typeof.
2455         * decl.c (grokdeclarator): Overhaul diagnostics for invalid use
2456         of long/short/signed/unsigned.
2458         PR c++/85305 - pack in lambda init-capture.
2459         * parser.c (cp_parser_initializer): Add subexpression_p parm; don't
2460         check_for_bare_parameter_packs in a subexpression.
2461         (cp_parser_lambda_introducer): Use it.
2463         PR c++/61982 - dead stores to destroyed objects.
2464         * call.c (build_trivial_dtor_call): New, assigns a clobber.
2465         (build_over_call, build_special_member_call): Use it.
2466         * cp-tree.h: Declare it.
2467         * init.c (build_delete): Remove trivial path.
2469         * init.c (build_dtor_call): Use build_special_member_call.
2470         (build_delete): Remove redundant uses of save_addr.
2472         * decl.c (build_clobber_this): Use build_clobber.
2474 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
2476         PR c++/85553
2477         * init.c (build_zero_init_1): For zero initialization of
2478         NULLPTR_TYPE_P type use build_int_cst directly.
2480 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
2482         PR c++/85515
2483         * name-lookup.c (consider_binding_level): Skip compiler-generated
2484         variables.
2485         * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten
2486         nested if statements into a series of rejection tests.  Reject
2487         lambda-ignored entities as suggestions.
2489 2018-04-27  Jason Merrill  <jason@redhat.com>
2491         * cvt.c (cp_fold_convert): Use convert_ptrmem.
2492         * typeck.c (convert_ptrmem): Add a NOP even if no adjustment.
2494 2018-04-27  Paolo Carlini  <paolo.carlini@oracle.com>
2496         PR c++/84691
2497         * decl.c (grokdeclarator): Clear friendp upon definition in local
2498         class definition error.
2500 2018-04-27  Jason Merrill  <jason@redhat.com>
2502         PR c++/85545 - ICE with noexcept PMF conversion.
2503         * cvt.c (cp_fold_convert): Pass PMF CONSTRUCTORs to
2504         build_ptrmemfunc.
2505         * typeck.c (build_ptrmemfunc): Don't build a NOP_EXPR for zero
2506         adjustment.
2507         (build_ptrmemfunc_access_expr): Special-case CONSTRUCTORs.
2509 2018-04-27  Nathan Sidwell  <nathan@acm.org>
2511         * typeck.c (convert_ptrmem): Move local var decls to initialization.
2513         * cp-tree.h (TEMPLATE_INFO): Fix comments.
2514         (TI_PENDING_TEMPLATE_FLAG): Check TEMPLATE_INFO.
2515         (NON_DEFAULT_TEMPLATE_ARG_COUNT): Wrap line.
2516         (dump, print_other_binding_stacks): Remove declarations.
2517         * name-lookup.c (print_other_binding_stack): Make static.
2518         * pt.c (build_template_decl): Make static.
2520 2018-04-26  Jason Merrill  <jason@redhat.com>
2522         PR c++/85545 - ICE with noexcept PMF conversion.
2523         * cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
2525 2018-04-25  Nathan Sidwell  <nathan@acm.org>
2527         PR c++/85437
2528         PR c++/49171
2529         * cp-tree.h (REINTERPRET_CAST_P): New.
2530         * constexpr.c (cxx_eval_constant_expression) <case NOP_EXPR>:
2531         Reject REINTERPET_CAST_P conversions.  Use cplus_expand_constant
2532         for non-trivial PTRMEM_CST cases.
2533         * typeck.c (build_nop_reinterpret): New.
2534         (build_reinterpret_cast_1): Use it.  Set REINTERPRET_CAST_P on
2535         NOP_EXPRs returned by cp_convert.
2537 2018-04-23  Jason Merrill  <jason@redhat.com>
2539         PR c++/69560 - wrong alignof(double) on x86.
2540         CWG 1879 - Inadequate definition of alignment requirement.
2541         * cp-tree.h (ALIGNOF_EXPR_STD_P): New.
2542         * typeck.c (cxx_sizeof_or_alignof_type): Add std_alignof parm.
2543         (cxx_sizeof_expr, cxx_sizeof_nowarn, cxx_alignas_expr)
2544         (cxx_alignof_expr): Pass it.
2545         * parser.c (cp_parser_unary_expression): Pass it.
2546         * pt.c (tsubst_copy): Copy it.
2547         (tsubst_copy_and_build): Pass it.
2548         * decl.c (fold_sizeof_expr): Pass it.
2550 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
2551             Jason Merrill  <jason@redhat.com>
2553         PR c++/85470 - wrong error with static data member.
2554         * decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
2555         * typeck2.c (store_init_value): Likewise.
2557 2018-04-20  Jakub Jelinek  <jakub@redhat.com>
2559         PR c++/85462
2560         * cp-tree.h (tinst_level): Remove in_system_header_p member,
2561         change refcount member from unsigned char to unsigned short,
2562         add refcount_infinity static data member, adjust comments.
2563         * pt.c (tinst_level::refcount_infinity): Define.
2564         (inc_refcount_use): Remove assert, don't increment if refcount
2565         is already refcount_infinity, adjust comment.
2566         (dec_refcount_use): Remove assert, don't decrement if refcount
2567         is refcount_infinity, adjust comment.
2568         (push_tinst_level_loc): Formatting fix.
2570 2018-04-19  Paolo Carlini  <paolo.carlini@oracle.com>
2572         PR c++/84611
2573         * pt.c (lookup_template_class_1): Check pushtag return value for
2574         error_mark_node.
2576 2018-04-19  Alexandre Oliva  <aoliva@redhat.com>
2578         PR c++/80290
2579         * cp-tree.h (tinst_level::free): Fix whitespace.
2581 2018-04-18  Paolo Carlini  <paolo.carlini@oracle.com>
2583         PR c++/84630
2584         * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
2585         for error_mark_node.
2587 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
2589         PR c++/84463
2590         * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
2591         tricks from here to ...
2592         * cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
2593         if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
2595 2018-04-18  Alexandre Oliva <aoliva@redhat.com>
2597         PR c++/80290
2598         * cp-tree.h (struct tinst_level): Split decl into tldcl and
2599         targs.  Add private split_list_p, tree_list_p, and not_list_p
2600         inline const predicates; to_list private member function
2601         declaration; free public member function declaration; list_p,
2602         get_node and maybe_get_node accessors, and refcount data
2603         member.  Narrow errors to unsigned short.
2604         * error.c (print_instantiation_full_context): Use new
2605         accessors.
2606         (print_instantiation_partial_context_line): Likewise.  Drop
2607         const from tinst_level-typed parameter.
2608         * mangle.c (mangle_decl_string): Likewise.
2609         * pt.c (freelist): New template class.
2610         (tree_list_freelist_head): New var.
2611         (tree_list_freelist): New fn, along with specializations.
2612         (tinst_level_freelist_head): New var.
2613         (pending_template_freelist_head): Likewise.
2614         (tinst_level_freelist, pending_template_freelist): New fns.
2615         (tinst_level::to_list, tinst_level::free): Define.
2616         (inc_refcount_use, dec_refcount_use): New fns for tinst_level.
2617         (set_refcount_ptr): New template fn.
2618         (add_pending_template): Adjust for refcounting, freelists and
2619         new accessors.
2620         (neglectable_inst_p): Take a NULL d as a non-DECL.
2621         (limit_bad_template_recursion): Use new accessors.
2622         (push_tinst_level): New overload to create the list.
2623         (push_tinst_level_loc): Make it static, split decl into two
2624         args, adjust tests and initialization to cope with split
2625         lists, use freelist, adjust for refcounting.
2626         (push_tinst_level_loc): New wrapper with the old interface.
2627         (pop_tinst_level): Adjust for refcounting.
2628         (record_last_problematic_instantiation): Likewise.
2629         (reopen_tinst_level): Likewise.  Use new accessors.
2630         (instantiate_alias_template): Adjust for split list.
2631         (fn_type_unification): Likewise.
2632         (get_partial_spec_bindings): Likewise.
2633         (instantiate_pending_templates): Use new accessors.  Adjust
2634         for refcount.  Release pending_template to freelist.
2635         (instantiating_current_function_p): Use new accessors.
2637 2018-04-16  Alexandre Oliva <aoliva@redhat.com>
2639         PR c++/85039
2640         * parser.c (cp_parser_builtin_offset): Reject type definitions.
2641         * mangle.c (nested_anon_class_index): Avoid crash returning -1
2642         if we've seen errors.
2644 2018-04-12  David Malcolm  <dmalcolm@redhat.com>
2646         PR c++/85385
2647         * name-lookup.c (macro_use_before_def::maybe_make): New function,
2648         checking that the use is indeed before the definition.
2649         (macro_use_before_def::macro_use_before_def): Make private.
2650         (macro_use_before_def::~macro_use_before_def): Make private.  Move
2651         check for UNKNOWN_LOCATION to macro_use_before_def::maybe_make.
2652         (lookup_name_fuzzy): Call macro_use_before_def::maybe_make rather
2653         than using new directly.
2655 2018-04-12  Jason Merrill  <jason@redhat.com>
2657         PR c++/85356 - ICE with pointer to member function.
2658         * pt.c (maybe_instantiate_noexcept): Do instantiate in templates if
2659         flag_noexcept_type.  Build the new spec within the function context.
2660         * except.c (build_noexcept_spec): Do get constant value in templates
2661         if flag_noexcept_type.
2662         * decl.c (check_redeclaration_exception_specification): Don't
2663         instantiate noexcept on a dependent declaration.
2665 2018-04-12  Marek Polacek  <polacek@redhat.com>
2667         PR c++/85258
2668         * constexpr.c (reduced_constant_expression_p): Return false for null
2669         trees.
2671 2018-04-11  Marek Polacek  <polacek@redhat.com>
2673         PR c++/85032
2674         * constexpr.c (potential_constant_expression_1): Consider conversions
2675         from classes to literal types potentially constant.
2677 2018-04-10  Paolo Carlini  <paolo.carlini@oracle.com>
2679         PR c++/70808
2680         * init.c (build_zero_init_1): Handle NULLPTR_TYPE_P being true of
2681         the type like TYPE_PTR_OR_PTRMEM_P.
2683 2018-04-10  Jason Merrill  <jason@redhat.com>
2685         PR debug/65821 - wrong location for main().
2686         * call.c (clear_location_r, convert_default_arg): Revert.
2687         * tree.c (break_out_target_exprs): Add clear_location parm.
2688         (struct bot_data): New.
2689         (bot_manip): Clear location if requested.
2690         * init.c (get_nsdmi): Pass clear_location.
2692 2018-04-10  David Malcolm  <dmalcolm@redhat.com>
2694         PR c++/85110
2695         * call.c (get_fndecl_argument_location): Make non-static.
2696         * cp-tree.h (get_fndecl_argument_location): New decl.
2697         * typeck.c (convert_for_assignment): When complaining due to
2698         conversions for an argument, show the location of the parameter
2699         within the decl.
2701 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
2703         PR c++/85312 - P0962 cleanup
2704         * parser.c (cp_parser_perform_range_for_lookup): Remove unreachable
2705         diagnostics.
2707 2018-04-10  Jason Merrill  <jason@redhat.com>
2709         PR debug/65821 - wrong location for main().
2710         * call.c (clear_location_r): New.
2711         (convert_default_arg): Use it.
2712         * tree.c (bot_manip): Remove builtin_LINE/FILE handling.
2714         PR c++/85285 - ICE with flexible array after substitution.
2715         * pt.c (instantiate_class_template_1): Check for flexible array in
2716         union.
2718 2018-04-09  Paolo Carlini  <paolo.carlini@oracle.com>
2720         PR c++/85227
2721         * decl.c (cp_finish_decomp): In a template, if the type is incomplete
2722         issue a pedwarn and defer trying to do bindings.
2724 2018-04-09  Jason Merrill  <jason@redhat.com>
2726         PR c++/85279 - dump_expr doesn't understand decltype.
2727         * error.c (dump_expr): Handle DECLTYPE_TYPE.
2729         PR c++/85262 - ICE with redundant qualification on constructor.
2730         * call.c (build_new_method_call_1): Move make_args_non_dependent
2731         after A::A() handling.
2733         PR c++/85277 - ICE with invalid offsetof.
2734         * semantics.c (finish_offsetof): Avoid passing non-DECL to %qD.
2735         Adjust -Winvalid-offsetof diagnostic to say conditionally supported.
2737         PR c++/85264 - ICE with excess template-parameter-list.
2738         * parser.c (cp_parser_check_template_parameters): Add template_id_p
2739         parameter.  Don't allow an extra template header if true.
2740         (cp_parser_class_head): Pass template_id_p.
2741         (cp_parser_elaborated_type_specifier): Likewise.
2742         (cp_parser_alias_declaration): Likewise.
2743         (cp_parser_check_declarator_template_parameters): Likewise.
2745 2018-04-09  Jakub Jelinek  <jakub@redhat.com>
2747         PR c++/85194
2748         * parser.c (cp_parser_simple_declaration): For structured bindings,
2749         if *maybe_range_for_decl is NULL after parsing it, set it to
2750         error_mark_node.
2752 2018-04-09  Jason Merrill  <jason@redhat.com>
2754         PR c++/85256 - ICE capturing pointer to VLA.
2755         * lambda.c (add_capture): Distinguish between variable-size and
2756         variably-modified types.
2758 2018-04-06  Jason Merrill  <jason@redhat.com>
2760         PR c++/85214 - ICE with alias, generic lambda, constexpr if.
2761         * pt.c (extract_locals_r): Remember local typedefs.
2763 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
2765         PR c++/84269
2766         * name-lookup.c (struct std_name_hint): Move out of
2767         get_std_name_hint; add field "min_dialect".
2768         (get_std_name_hint): Add min_dialect values to all initializers.
2769         Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
2770         <future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
2771         <shared_mutex>, <string_view>, <thread>, and <variant>.
2772         Add fstream, ifstream, and ofstream to <fstream>.
2773         Add istringstream, ostringstream, and stringstream to <sstream>.
2774         Add basic_string to <string>.
2775         Add tuple_element and tuple_size to <tuple>.
2776         Add declval to <utility>.
2777         Fix ordering of <queue> and <tuple>.
2778         Return a std_name_hint, rather than a const char *.
2779         (get_cxx_dialect_name): New function.
2780         (maybe_suggest_missing_std_header): Detect names that aren't yet
2781         available in the current dialect, and instead of suggesting a
2782         missing #include, warn about the dialect.
2784 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
2786         PR c++/85210
2787         * pt.c (tsubst_decomp_names): Return error_mark_node and assert
2788         errorcount is set if tsubst doesn't return a VAR_DECL.
2790 2018-04-06  David Malcolm  <dmalcolm@redhat.com>
2792         PR c++/85021
2793         * name-lookup.c (using_directives_contain_std_p): New function.
2794         (has_using_namespace_std_directive_p): New function.
2795         (suggest_alternatives_for): Simplify if/else logic using early
2796         returns.  If no candidates were found, and there's a
2797         "using namespace std;" directive, call
2798         maybe_suggest_missing_std_header.
2799         (maybe_suggest_missing_header): Split later part of the function
2800         into..
2801         (maybe_suggest_missing_std_header): New.
2803 2018-04-06  Jason Merrill  <jason@redhat.com>
2805         PR c++/85242 - ICE with class definition in template parm.
2806         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
2807         processing_template_parmlist.
2809         PR c++/85240 - LTO ICE with using of undeduced auto fn.
2810         * cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.
2812 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
2814         PR c++/85209
2815         * pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
2816         is not prev, if prev == decl.
2818         PR c++/85208
2819         * decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
2820         maybe_apply_pragma_weak here...
2821         (cp_maybe_mangle_decomp): ... but call it here instead.
2823 2018-04-05  Jason Merrill  <jason@redhat.com>
2825         PR c++/85136 - ICE with designated init in template.
2826         * decl.c (maybe_deduce_size_from_array_init): Handle dependent
2827         designated initializer.
2828         (check_array_designated_initializer): Update ce->index with the
2829         constant value.
2831         PR c++/83808 - ICE with VLA initialization.
2832         * typeck2.c (process_init_constructor_array): Don't require a VLA
2833         initializer to have VLA type.
2835 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
2837         PR c++/80956
2838         * call.c (convert_like_real): Fail gracefully for a broken
2839         std::initializer_list, missing a definition.
2841         * name-lookup.c (do_pushtag): Tweak message, use %< and %>.
2843 2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>
2845         PR c++/84792
2846         * decl.c (grokdeclarator): Fix diagnostic about typedef name used
2847         as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.
2849 2018-04-05  Jason Merrill  <jason@redhat.com>
2851         PR c++/82152 - ICE with class deduction and inherited ctor.
2852         * pt.c (do_class_deduction): Ignore inherited ctors.
2854         PR c++/84665 - ICE with array of empty class.
2855         * decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
2857         PR c++/85228 - ICE with lambda in enumerator in template.
2858         * pt.c (bt_instantiate_type_proc): Don't assume
2859         CLASSTYPE_TEMPLATE_INFO is non-null.
2861 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
2863         Implement P0969
2864         * decl.c (find_decomp_class_base): Check accessibility instead
2865         of declared access, adjust diagnostic.
2867 2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
2869         Implement P0961
2870         * decl.c (get_tuple_decomp_init): Check the templatedness
2871         of a member get.
2873 2018-04-05  Jason Merrill  <jason@redhat.com>
2875         PR c++/85200 - ICE with constexpr if in generic lambda.
2876         * pt.c (extract_locals_r): Don't record the local specs of variables
2877         declared within the pattern.
2879 2018-04-05  Alexandre Oliva <aoliva@redhat.com>
2881         PR c++/84979
2882         * pt.c (check_auto_in_tmpl_args): New.
2883         (tsubst_qualified_id): Use it to reject template args
2884         referencing auto for non-type templates.
2885         * parser.c (cp_parser_template_id): Likewise.
2886         * cp-tree.h (check_auto_in_tmpl_args): Declare.
2887         * typeck2.c (build_functional_cast): Report correct location
2888         for invalid use of auto.
2890 2018-04-04  Jason Merrill  <jason@redhat.com>
2892         PR c++/85215 - ICE with copy-init from conversion.
2893         * call.c (merge_conversion_sequences): Fix type of direct binding
2894         sequence.
2896         PR c++/84938 - ICE with division by ~-1.
2897         * call.c (set_up_extended_ref_temp): Call cp_fully_fold.
2899         PR c++/84936 - ICE with unexpanded pack in mem-initializer.
2900         * parser.c (cp_parser_mem_initializer_list): Call
2901         check_for_bare_parameter_packs.
2903 2018-04-04  Jakub Jelinek  <jakub@redhat.com>
2905         PR inline-asm/85172
2906         * constexpr.c (cxx_eval_builtin_function_call): For calls to
2907         builtin_valid_in_constant_expr_p functions, don't call
2908         cxx_eval_constant_expression if argument is not
2909         potential_constant_expression.
2911         PR c++/85146
2912         * cp-tree.h (calculate_bases, calculate_direct_bases): Add complain
2913         argument.
2914         * semantics.c (calculate_bases): Add complain argument.  Use
2915         complete_type_or_maybe_complain instead of just complete_type and
2916         return an empty vector if it fails.  Move make_tree_vector () call
2917         after early return.  Formatting fixes.
2918         (calculate_direct_bases): Likewise.  Call release_tree_vector at the
2919         end.
2920         (dfs_calculate_bases_post, calculate_bases_helper): Formatting fixes.
2921         * pt.c (tsubst_pack_expansion): Adjust calculate_bases and
2922         calculate_direct_bases callers, formatting fixes.
2924 2018-04-04  Jason Merrill  <jason@redhat.com>
2926         PR c++/85006 - -fconcepts ICE with A<auto...> return type
2927         * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
2929         PR c++/85200 - ICE with constexpr if in generic lambda.
2930         * tree.c (cp_walk_subtrees): Walk into DECL_EXPR in templates.
2932         PR c++/84221 - bogus -Wunused with attribute and template.
2933         * decl2.c (is_late_template_attribute): Handle unused and used
2934         normally on non-TYPE_DECL.
2936         PR c++/85135 - ICE with omitted template arguments.
2937         * decl.c (grokdeclarator): Catch deduced class type in trailing
2938         return type.
2940         PR c++/85133 - ICE with missing concept initializer.
2941         * decl.c (cp_finish_decl): If a concept initializer is missing, use
2942         true.
2944         PR c++/85118 - wrong error with generic lambda and std::bind.
2945         * call.c (add_template_conv_candidate): Disable if there are any
2946         call operators.
2948         PR c++/85141 - ICE with compound assignment and static member fn.
2949         * typeck.c (cp_build_modify_expr): Call decay_conversion for RHS of
2950         compound assignment.
2952         PR c++/85148 - ICE with 'this' in array NSDMI.
2953         * tree.c (replace_placeholders_r): Use handled_component_p.
2955 2018-04-04  Ville Voutilainen  <ville.voutilainen@gmail.com>
2957         PR c++/65923
2958         * decl.c (grokfndecl): Handle standard UDL diagnostics here..
2959         * parser.c (cp_parser_unqualified_id): ..not here.
2961 2018-04-04  Alexandre Oliva <aoliva@redhat.com>
2963         PR c++/84943
2964         * typeck.c (cp_build_addr_expr_1): Mark FUNCTION_DECL as
2965         used.
2966         * decl2.c (mark_used): Return without effects if tf_conv.
2968 2018-04-03  Jason Merrill  <jason@redhat.com>
2970         PR c++/85092 - C++17 ICE with unused list constructor.
2971         * call.c (conv_binds_ref_to_prvalue): Also count ck_identity
2972         from a TARGET_EXPR.
2974         PR c++/85113 - ICE with constexpr and __builtin_constant_p.
2975         * constexpr.c (cxx_eval_builtin_function_call): Only defer
2976         __builtin_constant_p if ctx->quiet.
2978 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
2980         PR c++/84768
2981         * pt.c (rewrite_template_parm): If the first argument is
2982         error_mark_node return it immediately.
2983         (build_deduction_guide): Check the return value of the
2984         latter for error_mark_node.
2985         (do_class_deduction): Check the return value of the latter.
2987 2018-04-03  Jason Merrill  <jason@redhat.com>
2989         * semantics.c (finish_if_stmt_cond): Use
2990         instantiation_dependent_expression_p.
2992         PR c++/85149 - generic lambda and constexpr if.
2993         * pt.c (build_extra_args, add_extra_args): Split from
2994         tsubst_pack_expansion.
2995         (tsubst_expr) [IF_STMT]: Use them.
2996         * cp-tree.h (IF_STMT_EXTRA_ARGS): New.
2998         * typeck.c (merge_types): Limit matching attribute shortcut to
2999         the default case.
3001 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
3003         PR c++/85147
3004         * pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
3006         PR c++/85140
3007         * name-lookup.c (handle_namespace_attrs): Return early if attributes
3008         is error_mark_node.
3010         PR c++/85134
3011         * decl.c (cp_finish_decl): If ensure_literal_type_for_constexpr_object
3012         fails, after clearing DECL_DECLARED_CONSTEXPR_P don't return early,
3013         instead for static data members clear init and set DECL_EXTERNAL.
3015 2018-04-02  Jason Merrill  <jason@redhat.com>
3017         PR c++/64095 - auto... parameter pack.
3018         * parser.c (cp_parser_parameter_declaration): Handle turning autos
3019         into packs here.
3020         (cp_parser_parameter_declaration_list): Not here.
3022 2018-03-31  Alexandre Oliva <aoliva@redhat.com>
3024         PR c++/85027
3025         * class.c (instantiate_type): Peel off SAVE_EXPR before
3026         BASELINK.
3028 2018-03-30  Jason Merrill  <jason@redhat.com>
3030         * typeck2.c (process_init_constructor_record): Use
3031         init_list_type_node for the CONSTRUCTOR around an anonymous union
3032         designated initializer.
3034 2018-03-30  Jakub Jelinek  <jakub@redhat.com>
3036         PR c++/84791
3037         * semantics.c (finish_omp_reduction_clause): If
3038         OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
3039         even if processing_template_decl.
3041 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
3043         PR c++/84269
3044         * name-lookup.c (get_std_name_hint): Add names from <memory>,
3045         <tuple>, and <utility>.
3047 2018-03-29  Jason Merrill  <jason@redhat.com>
3049         PR c++/85093 - too many template args with pack expansion.
3050         * pt.c (coerce_template_parms): Keep pack expansion args that will
3051         need to be empty.
3053 2018-03-29  Jason Merrill  <jason@redhat.com>
3055         * pt.c (build_non_dependent_expr): Propagate expr location.
3057 2018-03-27  Jason Merrill  <jason@redhat.com>
3059         PR c++/85060 - wrong-code with call to base member in template.
3060         * search.c (any_dependent_bases_p): Check uses_template_parms
3061         rather than processing_template_decl.
3063 2018-03-29  David Malcolm  <dmalcolm@redhat.com>
3065         PR c++/85110
3066         * typeck.c (convert_for_assignment): When complaining due to
3067         conversions for an argument, attempt to use the location of the
3068         argument.
3070 2018-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
3072         PR c++/85028
3073         * pt.c (tsubst_default_argument): Early return if the type of the
3074         parameter is erroneous.
3076 2018-03-28  Alexandre Oliva <aoliva@redhat.com>
3078         PR c++/84973
3079         * decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
3080         templates.
3082         PR c++/84968
3083         * tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
3085 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
3087         PR c++/85067
3088         * method.c (defaulted_late_check): Partially revert r253321 changes,
3089         do not early return upon error.
3091 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
3093         PR c++/85077
3094         * cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
3095         type call fold to generate VECTOR_CSTs when possible.
3097         PR c++/85076
3098         * tree.c (cp_build_reference_type): If to_type is error_mark_node,
3099         return it right away.
3101 2018-03-27  Volker Reichelt  <v.reichelt@netcologne.de>
3103         * search.c (check_final_overrider): Use inform instead of error
3104         for the diagnostics of the overridden functions.  Tweak wording.
3106 2018-03-27  Jakub Jelinek  <jakub@redhat.com>
3108         PR c++/85068
3109         * class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
3110         is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
3112 2018-03-27  Paolo Carlini  <paolo.carlini@oracle.com>
3113             Jason Merrill  <jason@redhat.com>
3115         PR c++/84632
3116         * init.c (build_aggr_init): When initializing from array,
3117         reject anything but CONSTRUCTORs and TARGET_EXPRs.
3118         (build_vec_init): Handle separately ARRAY_TYPEs.
3120 2018-03-26  Jason Merrill  <jason@redhat.com>
3122         PR c++/85062 - ICE with alignas in wrong place.
3123         * decl.c (grokdeclarator): Ignore attributes on type-specifiers
3124         here.
3126         PR c++/85049 - ICE with __integer_pack.
3127         * pt.c (unify_pack_expansion): Don't try to deduce generated packs.
3128         * cp-tree.h (TEMPLATE_PARM_P): New.
3130 2018-03-23  Jason Merrill  <jason@redhat.com>
3132         PR c++/78489 - wrong SFINAE behavior.
3134         PR c++/84489
3135         * pt.c (type_unification_real): Don't defer substitution failure.
3137 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
3139         PR c++/85015
3140         * decl.c (compute_array_index_type): Set osize to mark_rvalue_use
3141         result.
3143         PR c++/84942
3144         * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace
3145         cp_build_unary_op call with gcc_unreachable ().
3147 2018-03-23  Marek Polacek  <polacek@redhat.com>
3149         PR c++/85045
3150         * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression):
3151         Handle EXACT_DIV_EXPR and RDIV_EXPR.  Tweak condition.
3152         (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR.
3154 2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
3156         Implement P0962
3157         * parser.c (cp_parser_perform_range_for_lookup): Change
3158         the condition for deciding whether to use members.
3160 2018-03-23  Marek Polacek  <polacek@redhat.com>
3162         PR c++/85033
3163         * semantics.c (finish_offsetof): Don't allow CONST_DECLs.
3165 2018-03-23  Alexandre Oliva <aoliva@redhat.com>
3167         PR c++/71251
3168         * parser.c (cp_parser_alias_declaration): Call
3169         parser_check_template_parameters.
3171         PR c++/84789
3172         * pt.c (resolve_typename_type): Drop assert that stopped
3173         simplification to template-independent types.  Add assert to
3174         verify the initial scope is template dependent.
3175         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
3176         Reparse the id expression as a type-name, not a declarator.
3178         PR c++/84729
3179         * init.c (build_vec_init): Error at parenthesized array init.
3181         PR c++/84610
3182         PR c++/84642
3183         PR c++/84942
3184         * cp-tree.h (temp_override): New template class, generalizing
3185         a cleanup that was only used...
3186         * parser.c (cp_parser_parameter_declaration_clause):
3187         ... here for auto_is_implicit_function_template_parm_p.
3188         (cp_parser_gnu_attributes_opt): Use it here as well.
3189         (cp_parser_std_attribute): Likewise.
3191 2018-03-22  Marek Polacek  <polacek@redhat.com>
3193         PR c++/84854
3194         * semantics.c (finish_if_stmt_cond): Check if the type of the condition
3195         is boolean.
3197 2018-03-21  Jason Merrill  <jason@redhat.com>
3199         PR c++/81311 - wrong C++17 overload resolution.
3200         * call.c (build_user_type_conversion_1): Remove C++17 code.
3201         (conv_binds_ref_to_prvalue): New.
3202         (build_over_call): Handle C++17 copy elision.
3203         (build_special_member_call): Only do C++17 copy elision here if the
3204         argument is already the right type.
3206 2018-03-21  Alexandre Oliva <aoliva@redhat.com>
3208         PR c++/71965
3209         * init.c (build_vec_init): Silence error, former sorry,
3210         without tf_error.
3212         PR c++/84610
3213         PR c++/84642
3214         * parser.c (abort_fully_implicit_template_p): New.
3215         (cp_parser_skip_to_end_of_statement): Use it.
3216         (cp_parser_skip_to_end_of_block_or_statement): Likewise.
3217         (finish_fully_implicit_template_p): Clear
3218         implicit_template_parms and implicit_template_scope.
3220 2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
3222         PR c++/84972
3223         * decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
3224         error_mark_node when check_array_designated_initializer fails.
3226 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
3228         PR c++/84961
3229         * cp-tree.h (genericize_compound_lvalue): Declare.
3230         * typeck.c (genericize_compound_lvalue): New function.
3231         (unary_complex_lvalue, cp_build_modify_expr): Use it.
3232         * semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
3233         and PREDECREMENT_EXPR in output and "m" constrained input operands with
3234         COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
3235         COMPOUND_EXPR operand.
3237 2018-03-21  Nathan Sidwell  <nathan@acm.org>
3239         PR c++/85008
3240         * tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
3241         * decl2.c (vague_linkage_p): Likewise.
3243 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
3245         PR c++/84994
3246         * constexpr.c (constexpr_fn_retval): Make non-"static".
3247         * cp-tree.h (constexpr_fn_retval): New decl.
3248         * search.c (direct_accessor_p): Update leading comment.
3249         (reference_accessor_p): Likewise.
3250         (field_accessor_p): Replace check that function body is a
3251         RETURN_EXPR with a call to constexpr_fn_retval.  Fix
3252         indentation of "field_type" decl.
3254 2018-03-21  Nathan Sidwell  <nathan@acm.org>
3256         PR c++/84804
3257         * name-lookup.c (do_pushtag): Permit lambdas to be pushed into
3258         complete classes.
3260 2018-03-21  Martin Sebor  <msebor@redhat.com>
3262         PR c++/84850
3263         * call.c (first_non_public_field): New template and function.
3264         (first_non_trivial_field): New function.
3265         (maybe_warn_class_memaccess): Call them.
3267 2018-03-21  David Malcolm  <dmalcolm@redhat.com>
3269         PR c++/84892
3270         * search.c (field_accessor_p): Use class_of_this_parm rather than
3271         type_of_this_parm, to check that "this" is a "const T *", rather
3272         than a "T *const".
3274 2018-03-21  Nathan Sidwell  <nathan@acm.org>
3276         * class.c (finish_struct_anon_r): Refactor, deprecate anything
3277         other than public non-static data members.
3278         * parser.c (cp_parser_init_declarator): Deprecate attributes after
3279         parenthesized initializer.
3281         PR c++/84836
3282         * name-lookup.c (update_binding): Correct logic for local binding
3283         update.
3285 2018-03-21  Marek Polacek  <polacek@redhat.com>
3287         PR c++/71638, ICE with NSDMI and reference.
3288         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
3289         even when we replace an element.
3291 2018-03-20  Marek Polacek  <polacek@redhat.com>
3293         PR c++/84978, ICE with NRVO.
3294         * constexpr.c (cxx_eval_constant_expression): Handle the case when
3295         a RESULT_DECL isn't in the hash map.
3297 2018-03-20  Jason Merrill  <jason@redhat.com>
3299         PR c++/84978, ICE with NRVO.
3300         * cvt.c (cp_get_fndecl_from_callee): Add fold parameter.
3301         (cp_get_callee_fndecl_nofold): New.
3302         * cp-gimplify.c (cp_genericize_r): Use it instead.
3303         * call.c (check_self_delegation): Likewise.
3305 2018-03-20  Nathan Sidwell  <nathan@acm.org>
3307         PR c++/84962
3308         * name-lookup.c (pushdecl_class_level): Push anon-struct's
3309         member_vec, if there is one.
3311         PR c++/84970
3312         * cp-tree.h (lookup_list_keep): Declare.
3313         * tree.c (lookup_list_keep): New, broken out of ...
3314         (build_min): ... here.  Call it.
3315         * decl.c (cp_finish_decl): Call lookup_list_keep.
3317 2018-03-19  Jason Merrill  <jason@redhat.com>
3319         PR c++/84937 - ICE with class deduction and auto.
3320         * pt.c (rewrite_template_parm): Fix auto handling.
3322 2018-03-19  Marek Polacek  <polacek@redhat.com>
3324         PR c++/84925
3325         * pt.c (enclosing_instantiation_of): Check if fn is null.
3327         PR c++/84927
3328         * constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
3329         as we evaluate the elements.
3330         (cxx_eval_constant_expression): Verify constructor's flags
3331         unconditionally.
3333 2018-03-19  Jason Merrill  <jason@redhat.com>
3335         PR c++/71834 - template-id with too few arguments.
3336         * pt.c (coerce_template_parms): Check fixed_parameter_pack_p.
3338 2018-03-19  Nathan Sidwell  <nathan@acm.org>
3340         PR c++/84835
3341         * lambda.c (maybe_add_lambda_conv_op): Force C++ linkage.
3342         * pt.c (build_template_decl): Propagate language linkage.
3344         PR c++/84812
3345         * name-lookup.c (set_local_extern_decl_linkage): Defend against
3346         ambiguous lookups.
3348 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
3350         PR c/84910
3351         * parser.c (cp_parser_lambda_introducer): Remove trailing space from
3352         diagnostics.
3353         * method.c (synthesize_method): Likewise.
3354         * pt.c (convert_nontype_argument): Likewise.
3356 2018-03-16  Jason Merrill  <jason@redhat.com>
3358         PR c++/84720 - ICE with rvalue ref non-type argument.
3359         * pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
3360         (convert_nontype_argument): Revert earlier change.
3362         PR c++/80227 - SFINAE and negative array size.
3363         * decl.c (compute_array_index_type): Use
3364         build_converted_constant_expr and valid_constant_size_p.
3366         PR c++/84906 - silent wrong code with ambiguous conversion.
3367         * call.c (build_user_type_conversion_1): Set need_temporary_p on
3368         ambiguous conversion.
3369         (convert_like_real): Check it.
3371         PR c++/83937 - wrong C++17 handling of init-list ctor argument.
3372         * call.c (build_special_member_call): Don't convert an init-list
3373         argument directly to the class type.
3375 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
3377         PR c++/79937
3378         PR c++/82410
3379         * cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
3380         (find_placeholder): Declare.
3381         * tree.c (struct replace_placeholders_t): Add exp member.
3382         (replace_placeholders_r): Don't walk into ctors with
3383         CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
3384         d->exp.  Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
3385         (replace_placeholders): Initialize data.exp.
3386         (find_placeholders_r, find_placeholders): New functions.
3387         * typeck2.c (process_init_constructor_record,
3388         process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
3389         if adding NSDMI on which find_placeholder returns true.
3390         * call.c (build_over_call): Don't call replace_placeholders here.
3391         * cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
3392         TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
3393         TARGET_EXPR_INITIAL.
3394         (cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
3395         ctor.
3397 2018-03-16  Jason Merrill  <jason@redhat.com>
3399         PR c++/83911 - ICE with multiversioned constructor.
3400         * cp-gimplify.c (cp_genericize_r): Replace versioned function with
3401         dispatchere here.
3402         * call.c (build_over_call): Not here.
3404 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
3406         PR c++/84874
3407         * decl.c (reshape_init_class): Don't assert d->cur->index == field
3408         if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
3410 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
3412         PR c++/84222
3413         * cp-tree.h (cp_warn_deprecated_use): Declare.
3414         * tree.c (cp_warn_deprecated_use): New function.
3415         * typeck2.c (build_functional_cast): Use it.
3416         * decl.c (grokparms): Likewise.
3417         (grokdeclarator): Likewise.  Temporarily push nested class scope
3418         around grokparms call for out of class member definitions.
3420 2018-03-14  Jason Merrill  <jason@redhat.com>
3422         PR c++/84820 - no error for invalid qualified-id.
3423         * parser.c (cp_parser_make_indirect_declarator): Don't wrap
3424         cp_error_declarator.
3426         PR c++/84801 - ICE with unexpanded pack in lambda.
3427         * pt.c (check_for_bare_parameter_packs): Don't return early for a
3428         lambda in non-template context.
3430         PR c++/81236 - auto variable and auto function
3431         * pt.c (tsubst_baselink): Update the type of the BASELINK after
3432         mark_used.
3434 2018-03-14  Jason Merrill  <jason@redhat.com>
3436         PR c++/83916 - ICE with template template parameters.
3437         * pt.c (convert_template_argument): Don't substitute into type of
3438         non-type parameter if we don't have enough arg levels.
3439         (unify): Likewise.
3441 2018-03-14  Marek Polacek  <polacek@redhat.com>
3443         PR c++/84596
3444         * semantics.c (finish_static_assert): Check
3445         instantiation_dependent_expression_p instead of
3446         {type,value}_dependent_expression_p.
3448 2018-03-13  Paolo Carlini  <paolo.carlini@oracle.com>
3449             Jason Merrill  <jason@redhat.com>
3451         PR c++/82336 - link error with list-init default argument.
3452         * decl.c (check_default_argument): Unshare an initializer list.
3454 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
3456         PR c++/84843
3457         * decl.c (duplicate_decls): For redefinition of built-in, use error
3458         and return error_mark_node.  For redeclaration, return error_mark_node
3459         rather than olddecl if !flag_permissive.
3461 2018-03-13  Jason Merrill  <jason@redhat.com>
3463         PR c++/82565 - ICE with concepts and generic lambda.
3464         * pt.c (instantiate_decl): Clear fn_context for lambdas.
3466 2018-03-13  Jason Merrill  <jason@redhat.com>
3468         PR c++/84720 - ICE with rvalue ref non-type argument.
3469         * pt.c (convert_nontype_argument): Handle rvalue references.
3471         PR c++/84839 - ICE with decltype of parameter pack.
3472         * pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
3473         instantiating dummy parms.
3475         * parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
3476         parameter even without -Wpedantic.
3478         PR c++/84798 - ICE with auto in abstract function declarator.
3479         * parser.c (cp_parser_parameter_declaration_clause): Check
3480         parser->default_arg_ok_p.
3482 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
3484         PR c++/84808
3485         * constexpr.c (find_array_ctor_elt): Don't use elt reference after
3486         first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
3487         sizetype.  Formatting fixes.
3489 2018-03-12  Jason Merrill  <jason@redhat.com>
3491         PR c++/84355 - ICE with deduction for member class template.
3492         * pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
3493         CLASS_PLACEHOLDER_TEMPLATE.
3495         PR c++/84802 - ICE capturing uninstantiated class.
3496         * lambda.c (build_capture_proxy): Call complete_type.
3498 2018-03-09  Jason Merrill  <jason@redhat.com>
3500         PR c++/84770 - ICE with typedef and parameter pack.
3501         * pt.c (verify_unstripped_args_1): Split out from
3502         verify_unstripped_args.
3504         PR c++/84785 - ICE with alias template and default targs.
3505         * pt.c (type_unification_real): Set processing_template_decl if
3506         saw_undeduced == 1.
3508         PR c++/84752 - ICE with capture of constexpr array.
3509         * call.c (standard_conversion): Set rvaluedness_matches_p on the
3510         identity conversion under ck_lvalue.
3512 2018-03-09  Jason Merrill  <jason@redhat.com>
3513             Paolo Carlini  <paolo.carlini@oracle.com>
3515         PR c++/71169
3516         PR c++/71832
3517         * pt.c (any_erroneous_template_args_p): New.
3518         * cp-tree.h (any_erroneous_template_args_p): Declare it.
3519         * parser.c (cp_parser_class_specifier_1): Use it.
3521 2018-03-09  Jason Merrill  <jason@redhat.com>
3523         PR c++/84726 - unnecessary capture of constant vars.
3524         * cp-tree.h (LAMBDA_CAPTURE_EXPLICIT_P)
3525         (LAMBDA_EXPR_CAPTURE_OPTIMIZED): New.
3526         * expr.c (mark_use): Set LAMBDA_EXPR_CAPTURE_OPTIMIZED.
3527         * lambda.c (is_constant_capture_proxy)
3528         (current_lambda_expr, var_to_maybe_prune, mark_const_cap_r)
3529         (prune_lambda_captures): New.
3530         (finish_lambda_function): Call prune_lambda_captures.
3532 2018-03-09  Jason Merrill  <jason@redhat.com>
3533             Jakub Jelinek  <jakub@redhat.com>
3535         PR c++/84076
3536         * call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
3537         build ADDR_EXPR with REFERENCE_TYPE.
3538         (build_over_call): For purposes of check_function_arguments, if
3539         argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
3540         its operand rather than the argument itself.
3542 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
3544         PR c++/84724
3545         * decl.c (duplicate_decls): Don't override __* prefixed builtins
3546         except for __[^b]*_chk, instead issue permerror and for -fpermissive
3547         also a note and return olddecl.
3549 2018-03-09  Nathan Sidwell  <nathan@acm.org>
3551         PR c++/84733
3552         * name-lookup.c (do_pushdecl_with_scope): Only clear
3553         current_function_decl when pushing a non-class (i.e. namespace)
3554         scope.
3556 2018-03-08  Jason Merrill  <jason@redhat.com>
3557             Jakub Jelinek  <jakub@redhat.com>
3559         PR c++/80598
3560         * call.c (build_over_call): In templates set TREE_USED (first_fn) when
3561         not calling mark_used for the benefit of -Wunused-function warning.
3563 2018-03-06  Jason Merrill  <jason@redhat.com>
3565         * lambda.c (is_capture_proxy_with_ref): Remove.
3566         * constexpr.c, expr.c, cp-tree.h, semantics.c: Adjust.
3568 2018-03-06  Marek Polacek  <polacek@redhat.com>
3570         PR c++/84684
3571         * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
3572         arguments.
3574 2018-03-06  Alexandre Oliva <aoliva@redhat.com>
3576         PR c++/84231
3577         * tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
3578         only while processing template decls.
3579         * typeck.c (build_x_conditional_expr): Move wrapping of
3580         reference type around type...
3581         * call.c (build_conditional_expr_1): ... here.  Rename
3582         is_lvalue to is_glvalue.
3583         * parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
3584         INDIRECT_REF of COND_EXPR too.
3586         PR c++/84593
3587         * init.c (build_zero_init_1): Zero-initialize references.
3589         PR c++/84492
3590         * semantics.c (finish_stmt_expr_expr): Reject unresolved
3591         overloads used as stmt expr values.
3593 2018-03-05  Jason Merrill  <jason@redhat.com>
3595         PR c++/84708 - ICE with lambda in local class NSDMI.
3596         * lambda.c (lambda_expr_this_capture): Handle local class NSDMI
3597         context.
3599 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
3601         PR c++/84684
3602         * constexpr.c (constexpr_call_hasher::equal): Return false if
3603         lhs->hash != rhs->hash.  Change return 1 to return true and
3604         return 0 to return false.
3606 2018-03-05  Nathan Sidwell  <nathan@acm.org>
3608         PR c++/84702
3609         * pt.c (process_template_arg): Mark lookup_keep on a default arg.
3611 2018-03-05  Marek Polacek  <polacek@redhat.com>
3613         PR c++/84707
3614         * decl.c (duplicate_decls): Check DECL_NAME before accessing
3615         UDLIT_OPER_P.
3617 2018-03-05  Nathan Sidwell  <nathan@acm.org>
3619         PR c++/84694
3620         * friend.c (do_friend): Restore check for identifier_p inside
3621         TEMPLATE_ID_EXPR.
3623 2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>
3625         PR c++/84618
3626         * parser.c (cp_parser_lambda_introducer): Reject any capture not
3627         involving a VAR_DECL or a PARM_DECL.
3629 2018-03-05  Pádraig Brady  <P@draigBrady.com>
3630             Jason  Merrill  <jason@redhat.com>
3631             Nathan Sidwell  <nathan@acm.org>
3633         PR c++/84497
3634         * decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.
3636 2018-03-03  Jason Merrill  <jason@redhat.com>
3638         PR c++/84686 - missing volatile loads.
3639         * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
3641 2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
3643         PR c++/71464
3644         * optimize.c (maybe_thunk_body): Bail out immediately if either
3645         fns[0] or fns[1] is null.
3647 2018-03-02  Marek Polacek  <polacek@redhat.com>
3649         PR c++/84578
3650         * constexpr.c (get_array_or_vector_nelts): New.
3651         (cxx_eval_array_reference): Use it.
3652         (cxx_eval_vec_init_1): Likewise.
3653         (cxx_eval_store_expression): Likewise.
3655 2018-03-02  Jason Merrill  <jason@redhat.com>
3657         * semantics.c (force_paren_expr): Remove redundant test.
3659 2018-03-02  Marek Polacek  <polacek@redhat.com>
3661         PR c++/84663
3662         * decl.c (cp_complete_array_type): Check error_mark_node.
3664         PR c++/84664
3665         * typeck.c (cp_perform_integral_promotions): Check the result of
3666         mark_rvalue_use.
3668 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
3670         PR c++/84662
3671         * pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
3672         RETURN instead of return.
3673         <case POINTER_PLUS_EXPR>: Likewise.
3674         <case CONVERT_EXPR>: If op0 is error_mark_node, just return
3675         it instead of wrapping it into CONVERT_EXPR.
3677 2018-03-02  Jason Merrill  <jason@redhat.com>
3679         Fix MIPS16 ICE.
3680         * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
3682 2018-03-02  Marek Polacek  <polacek@redhat.com>
3684         PR c++/84590
3685         * cp-gimplify.c (cp_fully_fold): Unwrap TARGET_EXPR or a CONSTRUCTOR
3686         wrapped in VIEW_CONVERT_EXPR.
3688 2018-03-01  Martin Sebor  <msebor@redhat.com>
3690         PR c++/84294
3691         * decl.c (check_redeclaration_no_default_args): Merge attributes
3692         specified on redeclarations of the same function template.
3693         Remove dead code.
3695 2018-03-01  Marek Polacek  <polacek@redhat.com>
3696             Jason Merrill  <jason@redhat.com>
3698         PR c++/84582
3699         * semantics.c (force_paren_expr): Create a PAREN_EXPR when in
3700         a template.
3701         (maybe_undo_parenthesized_ref): Unwrap PAREN_EXPR.
3702         * typeck2.c (store_init_value): Call fold_non_dependent_expr instead
3703         of instantiate_non_dependent_expr.
3704         * tree.c (lvalue_kind): Handle PAREN_EXPR like NON_DEPENDENT_EXPR.
3706 2018-03-01  Nathan Sidwell  <nathan@acm.org>
3708         PR c++/84434
3709         * name-lookup.c (member_vec_dedup): Remove manually peeled
3710         iteration.  Ignore dependent ctor inheritance.
3712 2018-03-01  Jason Merrill  <jason@redhat.com>
3714         PR c++/71569 - decltype of template.
3715         * parser.c (cp_parser_decltype_expr): Handle missing template args.
3717 2018-03-01  Marek Polacek  <polacek@redhat.com>
3719         PR c++/84596
3720         * constexpr.c (require_rvalue_constant_expression): New function.
3721         * cp-tree.h: Declare it.
3722         * semantics.c (finish_static_assert): Use it instead of
3723         require_potential_rvalue_constant_expression.
3725 2018-03-01  Jason Merrill  <jason@redhat.com>
3726             Alexandre Oliva <aoliva@redhat.com>
3728         PR c++/71569 - ICE with redundant args on member variable template.
3729         * decl.c (start_decl): Handle partial specialization of member
3730         variable template.
3731         * pt.c (determine_specialization): Allow partial specialization
3732         of member variable template without specializing enclosing class.
3733         (process_partial_specialization): Improve error message.
3735 2018-02-28  Jason Merrill  <jason@redhat.com>
3737         PR c++/71784 - ICE with ref-qualifier and explicit specialization.
3738         * pt.c (determine_specialization): Check ref-qualifier.
3740 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
3742         PR c++/84609
3743         * parser.c (cp_parser_attributes_opt): Formatting fix.
3744         (cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
3745         cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
3746         New functions.
3747         (cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
3748         instead of tentative parse to peek over optional attribute tokens
3749         to check for CPP_COLON after them.
3751         PR c++/83871
3752         PR c++/83503
3753         * pt.c (INCLUDE_STRING): Remove define.
3754         (warn_spec_missing_attributes): Use pretty_printer instead of
3755         std::string.  Fix up inform call so that the list of attributes
3756         is in %s argument.
3758 2018-02-28  Martin Sebor  <msebor@redhat.com>
3760         PR testsuite/84617
3761         * decl.c (duplicate_decls): Fully merge attributes const, pure,
3762         and malloc.
3764 2018-02-28  Nathan Sidwell  <nathan@acm.org>
3766         PR c++/84602
3767         * name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
3768         * name-lookup.c (fields_linear_search): Look in an anon-aggr
3769         regardless of want_type.
3770         (search_anon_aggr): Just use get_class_binding_direct.
3772 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
3774         * decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
3775         inform_n.
3777 2018-02-27  Martin Sebor  <msebor@redhat.com>
3779         * pt.c: Avoid including <string> directly.
3781 2018-02-27  Martin Sebor  <msebor@redhat.com>
3783         PR c++/83871
3784         PR c++/83503
3785         * cp-tree.h (warn_spec_missing_attributes): New function.
3786         ((check_explicit_specialization): Add an argument.  Call the above
3787         function.
3788         * decl.c (duplicate_decls): Avoid applying primary function template's
3789         attributes to its explicit specializations.
3790         cp/pt.c (warn_spec_missing_attributes): Define.
3792 2018-02-27  HÃ¥kon Sandsmark  <hsandsmark@gmail.com>
3794         PR c++/71546 - lambda init-capture with qualified-id.
3795         * parser.c (cp_parser_lambda_introducer): Clear scope after
3796         each lambda capture.
3798 2018-02-27  Nathan Sidwell  <nathan@acm.org>
3800         PR c++/84426
3801         * name-lookup.h (get_member_slot): Rename ...
3802         (find_member_slot): ... here.
3803         (add_member_slot): New.
3804         * name-lookup.c (member_vec_linear_search): No need to check for
3805         NULL slot.
3806         (get_member_slot): Rename ...
3807         (find_member_slot): ... here.  Don't add slot for incomplete class.
3808         (add_member_slot): New.
3809         * class.c (add_method): Adjust get_member_slot rename.  Bail out
3810         if push_class_level_binding fails.  Create slot and grok
3811         properties once we're committed to insertion.
3813 2018-02-27  Jason Merrill  <jason@redhat.com>
3815         PR c++/84489 - dependent default template argument
3816         * pt.c (type_unification_real): Handle early substitution failure.
3818 2018-02-26  Jason Merrill  <jason@redhat.com>
3820         PR c++/84560 - ICE capturing multi-dimensional VLA.
3821         * tree.c (array_of_runtime_bound_p): False if the element is
3822         variably-modified.
3824         PR c++/84441 - ICE with base initialized from ?:
3825         * call.c (unsafe_copy_elision_p): Handle COND_EXPR.
3827         PR c++/84520 - ICE with generic lambda in NSDMI.
3828         * lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
3829         'this' in a generic lambda instantiation.
3831         PR c++/84559 - ICE with constexpr VLA.
3832         * constexpr.c (ensure_literal_type_for_constexpr_object): Check
3833         for constexpr variable with VLA type.
3835 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
3837         PR c++/84558
3838         * constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
3839         a valid constant initializer.  Formatting fixes.
3841 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
3843         PR c++/84540
3844         * pt.c (tsubst_attributes): Handle correctly tsubst_attribute
3845         returning NULL_TREE.
3846         (apply_late_template_attributes): Likewise.
3848 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
3850         PR c++/84557
3851         * parser.c (cp_parser_omp_var_list_no_open): Only call
3852         cp_parser_lookup_name_simple on names satisfying identifier_p.
3853         (cp_parser_oacc_routine): Likewise.
3855 2018-02-26  Jason Merrill  <jason@redhat.com>
3857         PR c++/84551 - ICE with concepts and -g.
3858         * parser.c (add_debug_begin_stmt): Do nothing in a concept.
3860 2018-02-26  Marek Polacek  <polacek@redhat.com>
3862         PR c++/84325
3863         * tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
3864         non-types.
3866 2018-02-26  Jason Merrill  <jason@redhat.com>
3868         PR c++/84447 - ICE with deleted inherited ctor with default arg.
3869         * call.c (build_over_call): Handle deleted functions in one place.
3871 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
3873         PR c++/84533
3874         * decl.c (redeclaration_error_message): Don't try to use
3875         DECL_DECLARED_CONSTEXPR_P on CONST_DECLs.
3877 2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>
3879         * lambda.c (build_capture_proxy): Define static.
3880         * cp-tree.h (build_capture_proxy): Remove.
3882 2018-02-26  Marek Polacek  <polacek@redhat.com>
3884         PR c++/84537
3885         * name-lookup.c (suggest_alternative_in_explicit_scope): Return false
3886         if name is error node.
3888 2018-02-25  Jason Merrill  <jason@redhat.com>
3890         PR c++/84015 - ICE with class deduction and auto template parm.
3891         * pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
3893 2018-02-24  Marek Polacek  <polacek@redhat.com>
3895         PR c++/83692
3896         * constexpr.c (maybe_constant_init_1): New function.
3897         (maybe_constant_init): Make it a wrapper around maybe_constant_init_1.
3898         (cxx_constant_init): New function.
3899         * cp-tree.h (cxx_constant_init): Declare.
3900         * typeck2.c (store_init_value): Call cxx_constant_init instead of
3901         cxx_constant_value.  Move the maybe_constant_init call under an 'else'.
3903 2018-02-22  Jason Merrill  <jason@redhat.com>
3905         PR c++/70468 - ICE with constructor delegation via typedef.
3906         * pt.c (tsubst_initializer_list): Check for other mem-initializers
3907         with constructor delegation.
3909 2018-02-22  Jason Merrill  <jason@redhat.com>
3911         PR c++/84424 - ICE with constexpr and __builtin_shuffle.
3912         * constexpr.c (reduced_constant_expression_p): Handle CONSTRUCTOR of
3913         VECTOR_TYPE.
3915 2018-02-22  Marek Polacek  <polacek@redhat.com>
3917         PR c++/84493
3918         * parser.c (cp_parser_braced_list): Use require_open instead of
3919         consume_open.
3921 2018-02-21  Jason Merrill  <jason@redhat.com>
3923         PR c++/84454 - ICE with pack expansion in signature.
3924         * error.c (find_typenames_r): Also stop on EXPR_PACK_EXPANSION.
3926 2018-02-20  Siddhesh Poyarekar  <siddhesh@sourceware.org>
3928         * cp-objcp-common.c (cxx_block_may_fallthru): Add case for
3929         IF_STMT.
3931 2018-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
3933         PR c++/84446
3934         * parser.c (cp_parser_init_declarator): Don't call start_lambda_scope
3935         on error_mark_node.
3937 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
3939         PR c++/84445
3940         * class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
3941         TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
3943         PR c++/84449
3944         * tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
3945         returns error_mark_node, return it immediately.
3946         (break_out_target_exprs): If cp_walk_tree with bot_manip returns
3947         error_mark_node, return error_mark_node.
3949         PR c++/84455
3950         * pt.c (tsubst_lambda_expr): If not nested, increment temporarily
3951         function_depth to avoid GC during finish_lambda_function.
3953 2018-02-19  Jason Merrill  <jason@redhat.com>
3955         PR c++/84429 - ICE capturing VLA.
3956         * lambda.c (build_capture_proxy): Handle reference refs.
3958 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
3960         PR c++/84448
3961         * parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
3962         either operand is error_mark_node, set current.lhs to that instead of
3963         creating a binary op with error_mark_node operands.
3965         PR c++/84430
3966         * constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
3968 2018-02-19  Paolo Carlini  <paolo.carlini@oracle.com>
3970         PR c++/84348
3971         * decl.c (grokdeclarator): Early return error_mark_node upon
3972         ill-formed friend declaration.
3974 2018-02-16  Marek Polacek  <polacek@redhat.com>
3975             Jakub Jelinek  <jakub@redhat.com>
3977         PR c++/84192
3978         * constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
3979         set *jump_target to anything if jump_target is NULL.
3981 2018-02-16  Jason Merrill  <jason@redhat.com>
3983         PR c++/84151 - unnecessary volatile load with static member.
3984         * call.c (build_new_method_call_1): Avoid loading from a volatile
3985         lvalue used as the object argument for a static member function.
3987         PR c++/81853 - using-directive and constexpr.
3988         * constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
3990         PR c++/84420 - ICE with structured binding in lambda.
3991         * lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
3993         PR c++/83835 - C++17 error with constructor ctors.
3994         * call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
3996         PR c++/82664 - ICE with reference to function template parm.
3997         * pt.c (convert_nontype_argument_function): Avoid obfuscationg
3998         NOP_EXPRs.
4000         PR c++/82764 - C++17 ICE with empty base
4001         * class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
4003 2018-02-16  Jason Merrill  <jason@redhat.com>
4005         PR c++/84421 - type-dependent if constexpr
4006         * semantics.c (finish_if_stmt_cond): Check type_dependent_expression_p.
4008 2018-02-16  Nathan Sidwell  <nathan@acm.org>
4010         Deprecate -ffriend-injection.
4011         * decl.c (cxx_init_decl_processing): Emit warning on option.
4012         * name-lookup.c (do_pushdecl): Emit warning if we push a visible
4013         friend.
4015 2018-02-16  Paolo Carlini  <paolo.carlini@oracle.com>
4017         PR c++/82468
4018         * decl.c (check_special_function_return_type): Reject template
4019         template parameter in deduction guide.
4021 2018-02-16  Nathan Sidwell  <nathan@acm.org>
4023         PR c++/84375
4024         * name-lookup.c (do_pushdecl): Bail out on bad local friend injection.
4026 2018-02-15  Jason Merrill  <jason@redhat.com>
4028         PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
4029         * call.c (convert_like_real): Don't use the copy-list-initialization
4030         shortcut for ck_base.
4032         PR c++/84045 - ICE with typedef and noexcept.
4033         * except.c (build_noexcept_spec): Use strip_typedefs_expr.
4035         PR c++/84376 - ICE with omitted template arguments.
4036         * pt.c (dguide_name_p): Check for IDENTIFIER_NODE.
4038         PR c++/84368 - wrong error with local variable in variadic lambda.
4039         * pt.c (tsubst_pack_expansion): Fix handling of non-packs in
4040         local_specializations.
4042 2018-02-15  Paolo Carlini  <paolo.carlini@oracle.com>
4044         PR c++/84330
4045         * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
4046         as first argument.
4048 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
4050         PR c++/84350
4051         * pt.c (do_auto_deduction): Don't check the TREE_TYPE of a null
4052         init, early return.
4054 2018-02-14  Nathan Sidwell  <nathan@acm.org>
4056         * decl2.c (mark_vtable_entries): Set input_location to decl's.
4057         (c_parse_final_cleanups): Restore input_location after emitting
4058         vtables.
4060 2018-02-14  Paolo Carlini  <paolo.carlini@oracle.com>
4062         * cp-tree.h (do_auto_deduction (tree, tree, tree)): Remove.
4063         (do_auto_deduction (tree, tree, tree, tsubst_flags_t,
4064         auto_deduction_context, tree, int): Add defaults.
4065         * pt.c (do_auto_deduction (tree, tree, tree)): Remove definition.
4066         (tsubst_omp_for_iterator): Adjust do_auto_deduction call, forward
4067         tsubst_flags_t argument.
4068         * init.c (build_new): Likewise.
4070 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
4072         PR c++/84364
4073         * typeck.c (check_return_expr): Don't emit -Weffc++ warning
4074         about return other than *this in assignment operators if
4075         retval is type dependent expression.
4077 2018-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
4079         PR c++/84333
4080         * call.c (build_conditional_expr_1): Use cp_save_expr instead of
4081         save_expr for the G++ extension.
4083 2018-02-13  Jason Merrill  <jason@redhat.com>
4085         PR c++/84080 - ICE with return type deduction and specialization.
4086         * pt.c (determine_specialization): Check uses_template_parms.
4088         Fix more variadic capture issues.
4089         * pt.c (find_parameter_packs_r): Also look at explicit captures.
4090         (check_for_bare_parameter_packs): Check current_class_type for
4091         lambda context.
4092         (extract_locals_r): Handle seeing a full instantiation of a pack.
4093         (tsubst_pack_expansion): Likewise.  Force lambda capture.
4094         * parser.c (cp_parser_lambda_introducer): Don't
4095         check_for_bare_parameter_packs.
4097         PR c++/84338 - wrong variadic sizeof.
4098         * pt.c (argument_pack_select_arg): Like the macro, but look through
4099         a pack expansion.
4100         (tsubst, tsubst_copy, dependent_template_arg_p): Use it.
4101         (extract_fnparm_pack): Do make_pack_expansion.
4102         (extract_locals_r): Do strip a pack expansion.
4103         * cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove.
4105 2018-02-12  Jakub Jelinek  <jakub@redhat.com>
4107         PR c++/84341
4108         * parser.c (cp_parser_binary_expression): Use build_min instead of
4109         build2_loc to build the no_toplevel_fold_p toplevel binary expression.
4111 2018-02-12  Nathan Sidwell  <nathan@acm.org>
4113         PR c++/84263
4114         * parser.c (cp_parser_decltype): Push and pop
4115         deferring_access_checks.  Reorganize to avoid goto.
4117 2018-02-12  Richard Biener  <rguenther@suse.de>
4119         PR c++/84281
4120         * constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
4121         uniform constructors and delay allocating them fully.
4123 2018-02-09  Jason Merrill  <jason@redhat.com>
4125         PR c++/84036 - ICE with variadic capture.
4126         Handle variadic capture proxies more like non-variadic.
4127         * lambda.c (build_capture_proxy): Remove workaround.
4128         * pt.c (find_parameter_packs_r): The proxy is a pack.
4129         (instantiate_class_template_1): Remove dead lambda code.
4130         (extract_fnparm_pack): Don't make_pack_expansion.
4131         (extract_locals_r): Don't strip a pack expansion.
4132         (tsubst_pack_expansion): Handle proxy packs.  Use
4133         PACK_EXPANSION_EXTRA_ARGS less.
4134         (tsubst_decl) [FIELD_DECL]: Don't register_specialization.
4135         (tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
4136         [VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
4137         (tsubst_expr) [DECL_EXPR]: Handle proxy packs.
4138         (tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.
4140 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
4142         PR sanitizer/83987
4143         * tree.c (cp_free_lang_data): Revert 2018-01-23 change.
4145 2018-02-09  Jason Merrill  <jason@redhat.com>
4147         PR c++/81917 - ICE with void_t and partial specialization.
4148         * pt.c (instantiate_class_template_1): Set TYPE_BEING_DEFINED before
4149         calling most_specialized_partial_spec.
4151 2018-02-09  Nathan Sidwell  <nathan@acm.org>
4153         PR c/84293
4154         * typeck.c (cp_build_indirect_ref_1, build_reinterpret_cast_1):
4155         Pass expr location to strict_aliasing_warning.
4157 2018-02-09  Jason Merrill  <jason@redhat.com>
4159         PR c++/84296 - ICE with qualified-id in template.
4160         PR c++/83714
4161         * pt.c (unknown_base_ref_p): New.
4162         (instantiation_dependent_scope_ref_p): Use it instead of
4163         any_dependent_bases_p.
4165 2018-02-09  Marek Polacek  <polacek@redhat.com>
4166             Jakub Jelinek  <jakub@redhat.com>
4168         PR c++/83659
4169         * constexpr.c (cxx_fold_indirect_ref): Sync some changes from
4170         fold_indirect_ref_1, including poly_*int64.  Verify first that
4171         tree_fits_poly_int64_p (op01).  Formatting fixes.
4173 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
4175         * constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
4176         * lambda.c (build_capture_proxy): Likewise.
4177         * search.c (field_access_p): Likewise.
4178         * semantics.c (omp_clause_decl, omp_privatize_field,
4179         finish_omp_clauses): Likewise.
4181 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
4183         PR c++/83806
4184         * typeck.c (decay_conversion): Use mark_rvalue_use for the special
4185         case of nullptr too.
4187 2018-02-08  Nathan Sidwell  <nathan@acm.org>
4189         * class.c (finish_struct): Fix std:initializer_list diagnostic
4190         formatting.
4192 2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>
4194         PR c++/83204
4195         * pt.c (tsubst_copy_and_build): Use force_paren_expr for INDIRECT_REF.
4197 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
4199         PR c++/84082
4200         * parser.c (cp_parser_dot_deref_incomplete): New function.
4201         (cp_parser_postfix_dot_deref_expression): Use it.
4203 2018-02-07  David Malcolm  <dmalcolm@redhat.com>
4205         PR c++/81610
4206         PR c++/80567
4207         * name-lookup.c (suggest_rid_p): New function.
4208         (lookup_name_fuzzy): Replace enum-rid-filtering logic with call to
4209         suggest_rid_p.
4211 2018-02-07  Jason Merrill  <jason@redhat.com>
4213         PR c++/84182 - ICE with captured lambda
4214         PR c++/84181
4215         * pt.c (extract_locals_r, extract_local_specs): New.
4216         (tsubst_pack_expansion): Use them.
4218 2018-02-07  Martin Liska  <mliska@suse.cz>
4220         PR c++/84059.
4221         * class.c (add_method): Append argument value.
4222         * cp-tree.h (maybe_version_functions): Add new argument.
4223         * decl.c (decls_match): Call it if a declaration does not
4224         have DECL_FUNCTION_VERSIONED.
4225         (maybe_version_functions): record argument is added.
4227 2018-02-05  Marek Polacek  <polacek@redhat.com>
4229         * class.c: Remove unused global variables.
4230         (build_primary_vtable): Don't gather statistics.
4231         (print_class_statistics): Remove.
4232         * cp-tree.h (print_class_statistics): Remove.
4233         * tree.c (cxx_print_statistics): Don't call print_class_statistics.
4235 2018-02-02  Paolo Carlini  <paolo.carlini@oracle.com>
4237         * class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
4238         * constexpr.c (cx_check_missing_mem_inits): Likewise.
4239         * decl.c (next_initializable_field, find_decomp_class_base,
4240         cp_finish_decomp): Likewise.
4241         * typeck2.c (process_init_constructor_record): Likewise.
4243 2018-02-02  Jason Merrill  <jason@redhat.com>
4245         PR c++/84181 - ICE with lambda parm in template argument.
4246         * tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
4248 2018-02-01  Jason Merrill  <jason@redhat.com>
4250         PR c++/84160 - ICE with nested variadic capture.
4251         * lambda.c (is_capture_proxy_with_ref): New.
4252         (insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
4253         COMPONENT_REF.
4254         * expr.c (mark_use): Use is_capture_proxy_with_ref.
4255         * constexpr.c (potential_constant_expression_1): Likewise.
4256         * semantics.c (process_outer_var_ref): Likewise.
4258 2018-02-01  Marek Polacek  <polacek@redhat.com>
4260         PR c++/84125
4261         * typeck.c (build_address): Relax the assert when
4262         processing_template_decl.
4264 2018-02-01  Jason Merrill  <jason@redhat.com>
4266         PR c++/84126 - ICE with variadic generic lambda
4267         PR c++/84036
4268         PR c++/82249
4269         * pt.c (tsubst_pack_expansion): Handle function parameter_packs in
4270         PACK_EXPANSION_EXTRA_ARGS.
4272 2018-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
4274         PR c++/83796
4275         * call.c (convert_like_real): If w're initializing from {} explicitly
4276         call abstract_virtuals_error_sfinae.
4278 2018-01-31  Jason Merrill  <jason@redhat.com>
4279             Jakub Jelinek  <jakub@redhat.com>
4281         PR c++/83993
4282         * constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
4283         around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
4284         on ADDR_EXPR.
4286 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
4288         PR c++/83993
4289         * constexpr.c (diag_array_subscript): Emit different diagnostics
4290         if TYPE_DOMAIN (arraytype) is NULL.
4291         (cxx_eval_array_reference, cxx_eval_store_expression): For arrays
4292         with NULL TYPE_DOMAIN use size_zero_node as nelts.
4294 2018-01-31  Paolo Carlini  <paolo.carlini@oracle.com>
4296         PR c++/84092
4297         * semantics.c (finish_qualified_id_expr): When handling an
4298         UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
4300 2018-01-31  Marek Polacek  <polacek@redhat.com>
4302         PR c++/84138
4303         * cp-gimplify.c (cp_fold): Check if X is an error node before
4304         calling useless_type_conversion_p.
4306 2018-01-30  Jason Merrill  <jason@redhat.com>
4308         PR c++/84091 - ICE with local class in lambda in template.
4309         * decl2.c (determine_visibility): Look for outer containing template
4310         instantiation.
4312         PR c++/84098 - ICE with lambda in template NSDMI.
4313         * pt.c (instantiate_class_template_1): Ignore more lambdas.
4315 2018-01-29  Jason Merrill  <jason@redhat.com>
4317         PR c++/68810 - wrong location for reinterpret_cast error.
4318         * cvt.c (cp_convert_to_pointer): Always build a CONVERT_EXPR when
4319         !dofold.
4321 2018-01-29  Marek Polacek  <polacek@redhat.com>
4323         PR c++/83996
4324         * constexpr.c (cxx_fold_indirect_ref): Compute ((foo *)&fooarray)[1]
4325         => fooarray[1] in offset_int.
4327 2018-01-29  Jason Merrill  <jason@redhat.com>
4329         PR c++/83942 - wrong unused warning with static_cast.
4330         * cvt.c (ocp_convert): Call mark_rvalue_use.
4332 2018-01-26  Jason Merrill  <jason@redhat.com>
4334         PR c++/83956 - wrong dtor error with anonymous union
4335         * method.c (walk_field_subobs): Variant members only affect
4336         deletedness.
4337         (maybe_explain_implicit_delete): Pass &deleted_p for diagnostic.
4339         PR c++/84036 - ICE with variadic capture.
4340         PR c++/82249
4341         * pt.c (tsubst_pack_expansion): When optimizing a simple
4342         substitution, pull a single pack expansion out of its pack.
4344         PR c++/82514 - ICE with local class in generic lambda.
4345         * pt.c (regenerated_lambda_fn_p): Remove.
4346         (enclosing_instantiation_of): Don't use it.
4347         (tsubst_function_decl): Call enclosing_instantiation_of.
4349         * pt.c (lookup_template_class_1): Add sanity check.
4350         * name-lookup.c (do_pushtag): Don't add closures to local_classes.
4352 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
4354         PR c++/84031
4355         * decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
4356         recursive calls that return ret.
4357         (cp_finish_decomp): Ignore unnamed bitfields.
4359 2018-01-23  Jason Merrill  <jason@redhat.com>
4361         PR c++/82249 - wrong mismatched pack length error.
4362         * pt.c (extract_fnparm_pack, tsubst_pack_expansion): Handle
4363         unsubstituted function parameter pack.
4365 2018-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
4367         PR c++/83921
4368         * decl.c (check_for_uninitialized_const_var): Not static; add
4369         bool and tsubst_flags_t parameters; adjust to be used both in
4370         constexpr context and not.
4371         * constexpr.c (potential_constant_expression_1): Use the above.
4372         * cp-tree.h (check_for_uninitialized_const_var): Declare.
4374 2018-01-23  Jason Merrill  <jason@redhat.com>
4376         PR c++/83947 - ICE with auto declarations.
4377         * pt.c (do_auto_deduction): Don't deduce from an auto decl.
4378         * decl.c (undeduced_auto_decl): Limit to vars and fns.
4380 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
4382         PR c++/83974
4383         * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
4384         for pointer to member function types.
4386 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
4388         PR sanitizer/83987
4389         * tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
4390         DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
4392 2018-01-23  Nathan Sidwell  <nathan@acm.org>
4394         PR c++/83988
4395         * pt.c (tsubst_baselink): Remove optype assert.
4396         * ptree.c (cxx_print_xnode): <case BASELINK> Print BASELINK_OPTYPE.
4398 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
4400         PR c++/83958
4401         * decl.c (cp_finish_decomp): Diagnose if reference structure binding
4402         refers to incomplete type.
4404 2018-01-23  Nathan Sidwell  <nathan@acm.org>
4406         Deprecate ARM-era for scope handling
4407         * decl.c (poplevel): Flag_new_for_scope is a boolean-like.
4408         (cxx_init_decl_processing): Deprecate flag_new_for_scope being
4409         cleared.
4410         * name-lookup.c (check_for_out_of_scope_variable): Deprecate and
4411         cleanup handling.
4412         * semantics.c (begin_for_scope): Flag_new_for_scope is
4413         boolean-like.
4414         (finish_for_stmt, begin_range_for_stmt): Likewise.
4416 2018-01-22  Jason Merrill  <jason@redhat.com>
4418         PR c++/83720
4419         * decl2.c (determine_visibility): Fix template_decl handling
4420         instead of blocking it.
4422         PR c++/83720 - ICE with lambda and LTO.
4423         * decl2.c (determine_visibility): Clear template_decl for
4424         function-scope decls.  Propagate anonymous linkage from containing
4425         function.
4427 2018-01-22  Marek Polacek  <polacek@redhat.com>
4429         PR c++/81933
4430         * typeck2.c (split_nonconstant_init_1): Return false if we didn't
4431         split out anything.
4433 2018-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>
4435         PR c++/83895
4436         * decl.c (grokdeclarator): Don't diagnose extra parens
4437         on typedefs.
4439 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
4441         PR c++/81167
4442         * call.c (joust): Use TREE_TYPE (source) if source is
4443         a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).
4445         PR c++/83919
4446         * typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
4447         for direct enum init.
4448         * decl.c (reshape_init): Likewise.
4450 2018-01-19  Marek Polacek  <polacek@redhat.com>
4452         * constexpr.c (fold_simple): Simplify.
4454 2018-01-18  Jason Merrill  <jason@redhat.com>
4456         PR c++/83714
4457         * search.c (any_dependent_bases_p): Handle null TREE_BINFO.
4458         * pt.c (instantiation_dependent_scope_ref_p): True if
4459         any_dependent_bases_p.
4461 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
4463         * cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
4464         vs DECL_NONTRIVIALLY_INITIALIZED_P).
4466 2018-01-18  Jason Merrill  <jason@redhat.com>
4468         PR c++/82461 - constexpr list-initialized member
4469         * constexpr.c (potential_constant_expression_1): Check
4470         TARGET_EXPR_DIRECT_INIT_P.
4472 2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>
4474         PR c++/81013
4475         * decl.c (xref_basetypes): Early return upon error about derived
4476         union.
4478 2018-01-18  Nathan Sidwell  <nathan@acm.org>
4480         PR c++/83160
4481         * cp-tree.h (mark_use): Declare.
4482         * expr.c (mark_use): Make extern.
4483         * call.c (direct_reference_binding): Set inner conv's
4484         rvaluedness_matches_p, if it is an identity.
4485         (convert_like_real): Mark lvalue or rvalue use for identity as
4486         rvaledness_matches_p demands.
4488 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
4490         PR c++/83824
4491         * parser.c (attr_chainon): New function.
4492         (cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
4493         cp_parser_namespace_definition, cp_parser_init_declarator,
4494         cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
4495         cp_parser_gnu_attributes_opt): Use it.
4496         (cp_parser_member_declaration, cp_parser_objc_class_ivars,
4497         cp_parser_objc_struct_declaration): Likewise.  Don't reset
4498         prefix_attributes if attributes is error_mark_node.
4500 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
4502         PR c++/78344
4503         * decl.c (grokdeclarator): Do not append the error_mark_node
4504         due to an erroneous optional attribute-specifier-seq.
4506 2018-01-17  Jakub Jelinek  <jakub@redhat.com>
4508         PR c++/83897
4509         * cp-gimplify.c (cp_maybe_instrument_return): Handle
4510         CLEANUP_POINT_EXPR.
4512 2018-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
4514         PR c++/81054
4515         * constexpr.c (ensure_literal_type_for_constexpr_object): Return
4516         error_mark_node when we give an error.
4517         * decl.c (cp_finish_decl): Use the latter.
4519 2018-01-17  Nathan Sidwell  <nathan@acm.org>
4521         PR c++/83287
4522         * init.c (build_raw_new_expr): Scan list for lookups to keep.
4524 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
4526         PR c++/83814
4527         * expr.c (fold_for_warn): Move from c-common.c, reducing to just
4528         the C++ part.  If processing a template, call
4529         fold_non_dependent_expr rather than fully folding.
4531 2018-01-17  Jason Merrill  <jason@redhat.com>
4533         PR c++/81067 - redundant NULL warning.
4534         * call.c (convert_like_real): Restore null_node handling.
4536 2018-01-17  Jason Merrill  <jason@redhat.com>
4538         PR c++/81843 - ICE with variadic member template.
4539         PR c++/72801
4540         * pt.c (unify_pack_expansion): Don't try to deduce enclosing
4541         template args.
4543 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
4545         PR c++/83799
4546         * pt.c (type_dependent_expression_p): Strip any location wrapper
4547         before testing tree codes.
4548         (selftest::test_type_dependent_expression_p): New function.
4549         (selftest::cp_pt_c_tests): Call it.
4551 2018-01-17  Nathan Sidwell  <nathan@acm.org>
4553         PR c++/83739
4554         * pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Rebuild a range_for if
4555         this not a final instantiation.
4557 2018-01-16  Jason Merrill  <jason@redhat.com>
4559         PR c++/83714 - ICE checking return in template.
4560         * typeck.c (check_return_expr): Call build_non_dependent_expr.
4562 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
4564         PR c++/83817
4565         * pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
4566         is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
4567         instead of CALL_FROM_THUNK_P.
4569         PR c++/83825
4570         * name-lookup.c (member_vec_dedup): Return early if len is 0.
4571         (resort_type_member_vec, set_class_bindings,
4572         insert_late_enum_def_bindings): Use vec qsort method instead of
4573         calling qsort directly.
4575 2018-01-15  Martin Sebor  <msebor@redhat.com>
4577         PR c++/83588
4578         * class.c (find_flexarrays): Make a record of multiple flexible array
4579         members.
4581 2018-01-12  Jason Merrill  <jason@redhat.com>
4583         PR c++/83186 - ICE with static_cast of list-initialized temporary.
4584         * typeck.c (build_static_cast): Use build_non_dependent_expr.
4586 2018-01-12  Nathan Sidwell  <nathan@acm.org>
4588         * cp-tree.h (mark_rvalue_use): Add parm name.
4589         * expr.c (mark_lvalue_use, mark_lvalue_use_nonread): Move next to
4590         mark_rvalue_use.
4591         * call.c (convert_like_real): Fix formatting.
4593 2018-01-11  Jason Merrill  <jason@redhat.com>
4595         PR c++/82728 - wrong -Wunused-but-set-variable
4596         PR c++/82799
4597         PR c++/83690
4598         * call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
4599         * decl.c (case_conversion): Likewise.
4600         * semantics.c (finish_static_assert): Call
4601         perform_implicit_conversion_flags.
4603 2018-01-11  Nathan Sidwell  <nathan@acm.org>
4605         * method.c (enum mangling_flags): Delete long-dead enum.
4607 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
4609         * parser.c (cp_parser_std_attribute_spec): When
4610         token_pair::require_open / require_close return false simply
4611         return error_mark_node, avoid duplicate cp_parser_error about
4612         expected '(' / ')', respectively.
4614 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
4616         PR c++/43486
4617         * call.c (null_ptr_cst_p): Strip location wrappers when
4618         converting from '0' to a pointer type in C++11 onwards.
4619         (conversion_null_warnings): Replace comparison with null_node with
4620         call to null_node_p.
4621         (build_over_call): Likewise.
4622         * cp-gimplify.c (cp_fold): Remove the early bailout when
4623         processing_template_decl.
4624         * cp-lang.c (selftest::run_cp_tests): Call
4625         selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
4626         * cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
4627         (selftest::run_cp_tests): Move decl to bottom of file.
4628         (null_node_p): New inline function.
4629         (selftest::cp_pt_c_tests): New decl.
4630         (selftest::cp_tree_c_tests): New decl.
4631         * cvt.c (build_expr_type_conversion): Replace comparison with
4632         null_node with call to null_node_p.
4633         * error.c (args_to_string): Likewise.
4634         * except.c (build_throw): Likewise.
4635         * mangle.c (write_expression): Skip location wrapper nodes.
4636         * parser.c (literal_integer_zerop): New function.
4637         (cp_parser_postfix_expression): Call maybe_add_location_wrapper on
4638         the result for RID_TYPEID. Pass true for new "wrap_locations_p"
4639         param of cp_parser_parenthesized_expression_list.  When calling
4640         warn_for_memset, replace integer_zerop calls with
4641         literal_integer_zerop, eliminating the double logical negation
4642         cast to bool.  Eliminate the special-casing for CONST_DECL in
4643         favor of the fold_for_warn within warn_for_memset.
4644         (cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
4645         param, defaulting to false.  Convert "expr" to a cp_expr, and call
4646         maybe_add_location_wrapper on it when wrap_locations_p is true.
4647         (cp_parser_unary_expression): Call maybe_add_location_wrapper on
4648         the result for RID_ALIGNOF and RID_SIZEOF.
4649         (cp_parser_builtin_offsetof): Likewise.
4650         * pt.c: Include "selftest.h".
4651         (tsubst_copy): Handle location wrappers.
4652         (tsubst_copy_and_build): Likewise.
4653         (build_non_dependent_expr): Likewise.
4654         (selftest::test_build_non_dependent_expr): New function.
4655         (selftest::cp_pt_c_tests): New function.
4656         * tree.c: Include "selftest.h".
4657         (lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
4658         (selftest::test_lvalue_kind): New function.
4659         (selftest::cp_tree_c_tests): New function.
4660         * typeck.c (string_conv_p): Strip any location wrapper from "exp".
4661         (cp_build_binary_op): Replace comparison with null_node with call
4662         to null_node_p.
4663         (build_address): Use location of operand when building address
4664         expression.
4666 2018-01-10  Marek Polacek  <polacek@redhat.com>
4668         PR c++/82541
4669         * call.c (build_conditional_expr_1): Check complain before warning.
4670         * pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
4671         -Wduplicated-branches.
4673 2018-01-10  Jakub Jelinek  <jakub@redhat.com>
4675         PR c++/81327
4676         * call.c (maybe_warn_class_memaccess): Add forward declaration.
4677         Change last argument from tree * to const vec<tree, va_gc> *, adjust
4678         args uses and check number of operands too.  Don't strip away any
4679         nops.  Use maybe_constant_value when looking for INTEGER_CST args.
4680         Deal with src argument not having pointer type.  Check
4681         tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
4682         test.
4683         (build_over_call): Call maybe_warn_class_memaccess here on the
4684         original arguments.
4685         (build_cxx_call): Rather than here on converted arguments.
4687 2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
4689         PR c++/81055
4690         * init.c (build_vec_init): Avoid building an INIT_EXPR with
4691         error_mark_node as second argument.
4693 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
4695         PR c++/83734
4696         * constexpr.c (cxx_eval_statement_list): Ignore DEBUG_BEGIN_STMTs
4697         in STATEMENT_LIST.  Remove unneeded assert.
4699 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
4700             Alan Hayward  <alan.hayward@arm.com>
4701             David Sherwood  <david.sherwood@arm.com>
4703         * constexpr.c (cxx_eval_array_reference): Handle polynomial
4704         VECTOR_CST_NELTS.
4705         (cxx_fold_indirect_ref): Handle polynomial TYPE_VECTOR_SUBPARTS.
4706         * call.c (build_conditional_expr_1): Likewise.
4707         * decl.c (cp_finish_decomp): Likewise.
4708         * mangle.c (write_type): Likewise.
4709         * typeck.c (structural_comptypes): Likewise.
4710         (cp_build_binary_op): Likewise.
4711         * typeck2.c (process_init_constructor_array): Likewise.
4713 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
4715         PR c++/83555
4716         * typeck.c (build_static_cast_1): For static casts to reference types,
4717         call build_base_path with flag_delete_null_pointer_checks as nonnull
4718         instead of always false.  When -fsanitize=null, call
4719         ubsan_maybe_instrument_reference on the NULL reference INTEGER_CST.
4720         * cp-gimplify.c (cp_genericize_r): Don't walk subtrees of UBSAN_NULL
4721         call if the first argument is INTEGER_CST with REFERENCE_TYPE.
4723 2018-01-03  Nathan Sidwell  <nathan@acm.org>
4725         PR c++/83667
4726         * method.c (make_alias_for): Copy DECL_CONTEXT.
4728 2018-01-03  Marek Polacek  <polacek@redhat.com>
4730         PR c++/83592
4731         * decl.c (grokdeclarator): Don't warn about MVP in typename context.
4733 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
4735         PR preprocessor/83602
4736         * name-lookup.c (lookup_name_fuzzy): Don't use macro_use_before_def
4737         for builtin macros.
4739         PR c++/83634
4740         * cp-gimplify.c (cp_fold) <case NOP_EXPR>: If the operand folds to
4741         error_mark_node, return error_mark_node.
4743         Update copyright years.
4745 2018-01-02  Jakub Jelinek  <jakub@redhat.com>
4747         PR c++/83556
4748         * tree.c (replace_placeholders_r): Pass NULL as last argument to
4749         cp_walk_tree instead of d->pset.  If non-TREE_CONSTANT and
4750         non-PLACEHOLDER_EXPR tree has been seen already, set *walk_subtrees
4751         to false and return.
4752         (replace_placeholders): Pass NULL instead of &pset as last argument
4753         to cp_walk_tree.
4755 2018-01-02  Nathan Sidwell  <nathan@acm.org>
4757         * constexpr.c (cxx_bind_parameters_in_call): Remove unneeded local
4758         lval var.
4760 Copyright (C) 2018 Free Software Foundation, Inc.
4762 Copying and distribution of this file, with or without modification,
4763 are permitted in any medium without royalty provided the copyright
4764 notice and this notice are preserved.