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