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