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