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