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