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