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