re PR c++/59483 (A nested lambda fails to find a protected name with qualified name)
[gcc.git] / gcc / cp / ChangeLog
1 2014-06-02 Ville Voutilainen <ville.voutilainen@gmail.com>
2
3 PR c++/59483
4 PR c++/61148
5 * search.c (accessible_p): Use current_nonlambda_class_type.
6 * semantics.c (check_accessibility_of_qualified_id): Likewise.
7
8 2014-06-02 Andrew MacLeod <amacleod@redhat.com>
9
10 * decl.c: Include builtins.h.
11 * semantics.c: Likewise.
12
13 2014-05-31 Paolo Carlini <paolo.carlini@oracle.com>
14
15 DR 1227
16 PR c++/57543
17 * cp-tree.h (TYPE_HAS_LATE_RETURN_TYPE): Add.
18 * pt.c (tsubst_function_type): Inject the this parameter; do the
19 substitutions in the order mandated by the DR.
20 (copy_default_args_to_explicit_spec): Copy TYPE_HAS_LATE_RETURN_TYPE.
21 * decl.c (grokdeclarator): Maybe set TYPE_HAS_LATE_RETURN_TYPE.
22 (static_fn_type): Copy it.
23 * decl2.c (build_memfn_type, change_return_type,
24 cp_reconstruct_complex_type): Likewise.
25 * parser.c (cp_parser_lambda_declarator_opt): Likewise.
26 * tree.c (strip_typedefs): Likewise.
27 * typeck.c (merge_types): Likewise.
28
29 2014-05-30 Jason Merrill <jason@redhat.com>
30
31 PR c++/56947
32 * pt.c (instantiate_decl): Check that defer_ok is not set for
33 local class members.
34
35 PR c++/60992
36 * pt.c (tsubst_init): Split out from...
37 (tsubst_expr) [DECL_EXPR]: Here.
38 (tsubst_copy) [VAR_DECL]: Use it.
39 * semantics.c (finish_id_expression): Return the decl for static/const.
40
41 2014-05-28 Jason Merrill <jason@redhat.com>
42
43 PR c++/47202
44 * decl.c (cxx_comdat_group): Return a decl.
45 * optimize.c (cdtor_comdat_group): Get its DECL_ASSEMBLER_NAME.
46
47 * pt.c (tsubst) [ARRAY_TYPE]: Check for array of array of unknown
48 bound.
49
50 PR c++/61242
51 * call.c (build_aggr_conv): Ignore passed in flags.
52 (build_array_conv, build_complex_conv): Likewise.
53
54 2014-05-23 Jan Hubicka <hubicka@ucw.cz>
55
56 * optimize.c (maybe_thunk_body): Use set_comdat_group.
57 (maybe_clone_body): Likewise.
58 * decl.c (duplicate_decls): Update code duplicating comdat group;
59 do not copy symtab pointer; before freeing newdecl remove it
60 from symtab.
61 * decl2.c (constrain_visibility): Use set_comdat_group.
62
63 2014-05-23 Jan Hubicka <hubicka@ucw.cz>
64
65 * rtti.c: Include tm_p.h
66 (emit_tinfo_decl): Force RTTI data to be aligned to required
67 ABI alignment only.
68
69 2014-05-23 Jan Hubicka <hubicka@ucw.cz>
70
71 * class.c (build_vtable): Align vtables to TARGET_VTABLE_ENTRY_ALIGN
72 ignoring other target adjustments.
73
74 2014-05-23 Thomas Schwinge <thomas@codesourcery.com>
75
76 * semantics.c (finish_omp_clauses): Remove duplicated variable
77 initialization.
78
79 * parser.c (cp_parser_omp_target): Return bool values.
80
81 2014-05-22 Paolo Carlini <paolo.carlini@oracle.com>
82
83 PR c++/61088
84 * lambda.c (add_capture): Enforce that capture by value requires
85 complete type.
86 * typeck2.c (cxx_incomplete_type_inform): Early return if
87 TYPE_MAIN_DECL is null.
88
89 2014-05-21 Jonathan Wakely <jwakely@redhat.com>
90
91 PR c/61271
92 * cp-array-notation.c (cilkplus_an_triplet_types_ok_p): Fix condition.
93
94 2014-05-21 Ville Voutilainen <ville.voutilainen@gmail.com>
95
96 PR c++/61133
97 * lambda.c (build_capture_proxy, add_capture): Treat normal
98 captures and init-captures identically.
99
100 2014-05-21 Mark Wielaard <mjw@redhat.com>
101
102 PR debug/16063
103 * cp-lang.c (cxx_enum_underlying_base_type): New function.
104 (LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Define.
105
106 2014-05-21 Richard Sandiford <rsandifo@linux.vnet.ibm.com>
107
108 * cvt.c (convert_to_void): Use void_node instead of void_zero_node.
109 * cp-array-notation.c (replace_invariant_exprs): Likewise.
110 (expand_array_notation): Handle VOID_CST.
111 * error.c (dump_expr): Likewise.
112 * cxx-pretty-print.c (cxx_pretty_printer::primary_expression)
113 (cxx_pretty_printer::expression): Likewise.
114 (pp_cxx_new_expression): Use void_node instead of void_zero_node.
115 * decl.c (register_dtor_fn): Likewise.
116 * init.c (build_raw_new_expr, build_new_1, build_vec_init)
117 (build_delete, push_base_cleanups): Likewise.
118 * mangle.c (write_expression): Likewise.
119 * semantics.c (finish_break_stmt, empty_expr_stmt_p): Likewise.
120 * pt.c (tsubst_decl, tsubst_copy_and_build): Likewise.
121 (tsubst, tsubst_copy, build_non_dependent_expr): Handle VOID_CST.
122 * tree.c (cp_tree_equal): Likewise.
123 (build_dummy_object, is_dummy_object, stabilize_expr): Use void_node
124 instead of void_zero_node.
125 * typeck.c (check_return_expr): Likewise.
126 * typeck2.c (build_functional_cast): Likewise.
127
128 2014-05-21 Igor Zamyatin <igor.zamyatin@intel.com>
129
130 PR c/60189
131 * parser.c (cp_parser_postfix_expression): Move handling of cilk_sync
132 from here to...
133 (cp_parser_statement): ...here. Make sure only semicolon can go after
134 Cilk_sync.
135
136 2014-05-20 Paolo Carlini <paolo.carlini@oracle.com>
137
138 PR c++/58753
139 PR c++/58930
140 PR c++/58704
141 * typeck2.c (digest_nsdmi_init): New.
142 * parser.c (cp_parser_late_parse_one_default_arg): Use it.
143 * init.c (get_nsdmi): Likewise.
144 * cp-tree.h (digest_nsdmi_init): Declare.
145
146 2014-05-20 Jason Merrill <jason@redhat.com>
147
148 * typeck.c (get_member_function_from_ptrfunc): Don't try to look
149 up a virtual function in a dummy object.
150
151 2014-05-20 Paolo Carlini <paolo.carlini@oracle.com>
152
153 PR c++/60373
154 * decl.c (duplicate_decls): Replace pair of warning_at with
155 warning_at + inform.
156 (maybe_commonize_var): Likewise.
157
158 2014-05-20 Richard Sandiford <rsandifo@linux.vnet.ibm.com>
159
160 PR bootstrap/61210
161 * pt.c (tsubst_copy, tsubst_omp_for_iterator, tsubst_expr)
162 (tsubst_copy_and_build): Perform recursive substitutions in a
163 deterministic order.
164
165 2014-05-20 Paolo Carlini <paolo.carlini@oracle.com>
166
167 PR c++/58664
168 * typeck2.c (cxx_incomplete_type_inform): New.
169 (cxx_incomplete_type_diagnostic): Use it.
170 * decl.c (grokdeclarator): Check the element type of an
171 incomplete array type; call the above.
172 * cp-tree.h (cxx_incomplete_type_inform): Declare.
173
174 2014-05-19 Jason Merrill <jason@redhat.com>
175
176 PR c++/58761
177 * pt.c (tsubst_copy): Don't check at_function_scope_p.
178 (instantiate_class_template_1): Don't push_to_top_level in an nsdmi.
179
180 2014-05-19 Paolo Carlini <paolo.carlini@oracle.com>
181
182 * typeck2.c (cxx_incomplete_type_diagnostic): Use inform.
183 * parser.c (cp_parser_enum_specifier): Likewise.
184
185 2014-05-17 Trevor Saunders <tsaunders@mozilla.com>
186
187 * class.c (sorted_fields_type_new): Adjust.
188 * cp-cilkplus.c (cilk_install_body_with_frame_cleanup): Likewise.
189 * cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
190 * cp-tree.h: Remove usage of variable_size gty attribute.
191 * decl.c (make_label_decl): Adjust.
192 (check_goto): Likewise.
193 (start_preparsed_function): Likewise.
194 (save_function_data): Likewise.
195 * lex.c (init_reswords): Likewise.
196 (retrofit_lang_decl): Likewise.
197 (cxx_dup_lang_specific_decl): Likewise.
198 (copy_lang_type): Likewise.
199 (cxx_make_type): Likewise.
200 * name-lookup.c (binding_entry_make): Likewise.
201 (binding_table_construct): Likewise.
202 (binding_table_new): Likewise.
203 (cxx_binding_make): Likewise.
204 (pushdecl_maybe_friend_1): Likewise.
205 (begin_scope): Likewise.
206 (push_to_top_level): Likewise.
207 * parser.c (cp_lexer_alloc): Likewise.
208 (cp_lexer_new_from_tokens): Likewise.
209 (cp_token_cache_new): Likewise.
210 (cp_parser_context_new): Likewise.
211 (cp_parser_new): Likewise.
212 (cp_parser_nested_name_specifier_opt): Likewise.
213 (cp_parser_template_id): Likewise.
214 * pt.c (maybe_process_partial_specialization): Likewise.
215 (register_specialization): Likewise.
216 (add_pending_template): Likewise.
217 (lookup_template_class_1): Likewise.
218 (push_tinst_level): Likewise.
219 * semantics.c (register_constexpr_fundef): Likewise.
220 (cxx_eval_call_expression): Likewise.
221 * typeck2.c (abstract_virtuals_error_sfinae): Likewise.
222
223 2014-05-16 Paolo Carlini <paolo.carlini@oracle.com>
224
225 PR c++/51640
226 * parser.c (cp_parser_diagnose_invalid_type_name): Early return
227 when cp_parser_lookup_name sets ambiguous_decls.
228
229 2014-05-15 Jason Merrill <jason@redhat.com>
230
231 * call.c (print_conversion_rejection): Use loc consistently.
232
233 2014-05-14 Paolo Carlini <paolo.carlini@oracle.com>
234
235 * cp-tree.h (DIRECT_LIST_INIT_P): Add.
236 * call.c (convert_like_real, build_new_method_call_1): Use it.
237 * decl2.c (grokfield): Likewise.
238 * init.c (perform_member_init, build_aggr_init, expand_default_init,
239 build_new_1): Likewise.
240 * mangle.c (write_expression): Likewise.
241 * parser.c (cp_parser_late_parse_one_default_arg): Likewise.
242
243 2014-05-14 Jason Merrill <jason@redhat.com>
244
245 PR c++/20332
246 PR c++/21631
247 * call.c (reference_binding): Treat lvalue/rvalue mismatch and
248 dropped cv-quals as a bad conversion.
249 (convert_like_real) [ck_ref_bind]: Explain them.
250 (compare_ics): Check badness before stripping reference
251 bindings. Handle comparing bad reference bindings.
252 * typeck.c (comp_cv_qualification): Add overload that just takes
253 integers.
254 * cp-tree.h: Declare it.
255
256 * call.c (struct conversion_info): Rename 'from_type' to 'from'.
257 (arg_conversion_rejection, bad_arg_conversion_rejection)
258 (explicit_conversion_rejection, template_conversion_rejection): Adjust.
259 (add_function_candidate): Pass actual argument, rather than type, to
260 bad_arg_conversion_rejection.
261 (print_conversion_rejection): Explain what's wrong with the conversion.
262 (print_z_candidates): Say "candidate:" before each candidate.
263 (splice_viable): Be strict if we see a viable or template candidate.
264 (build_user_type_conversion_1): Pass false to strict parameter.
265 (perform_overload_resolution, build_conditional_expr_1): Likewise.
266 (build_new_op_1, build_new_method_call_1): Likewise.
267 (build_op_call_1): Pass true to strict parameter.
268
269 2014-05-13 Jason Merrill <jason@redhat.com>
270
271 * call.c (print_error_for_call_failure): Say "no match" rather
272 than "ambiguous" if there were no strict matches.
273 (build_new_method_call_1): Likewise.
274
275 PR c++/61151
276 * semantics.c (is_this_parameter): Allow capture proxies too.
277
278 2014-05-12 Jason Merrill <jason@redhat.com>
279
280 * call.c (maybe_print_user_conv_context): New.
281 (convert_like_real): Use it. Print call context for bad
282 user-defined conversion.
283 (build_over_call): Print call context for bad 'this' conversion.
284
285 * call.c (convert_like_real): Use inform for identifying the
286 declaration point.
287
288 2014-05-12 Paolo Carlini <paolo.carlini@oracle.com>
289
290 * cvt.c (cp_convert_to_pointer): Don't call error_at if
291 complain & tf_error is false.
292
293 * decl.c (make_unbound_class_template): Prefer inform for
294 "declared here"-type message.
295
296 2014-05-09 Momchil Velikov <momchil.velikov@gmail.com>
297
298 PR c++/60463
299 PR c++/60755
300 * lambda.c (lambda_expr_this_capture): Add new parameter
301 add_capture_p controlling whether the functions will try to
302 capture 'this' via the default capture.
303 (maybe_resolve_dummy): Likewise.
304 * cp-tree.h: Adjust prototypes.
305 * call.c, semantics.c: Change callers of these functions.
306 * call.c (build_new_method_call_1): Use the actual 'this' that
307 would be potentially captured for the overload resolution, instead
308 of the dummy object.
309
310 2014-05-09 Paolo Carlini <paolo.carlini@oracle.com>
311
312 * pt.c (convert_nontype_argument_function): Add tsubst_flags_t
313 parameter.
314 (convert_nontype_argument): Adjust calls.
315 (coerce_template_parameter_pack): Add missing complain & tf_error
316 check.
317
318 2014-05-09 Jason Merrill <jason@redhat.com>
319
320 DR 587
321 PR c++/51317
322 * call.c (build_conditional_expr_1, conditional_conversion): Handle
323 non-class lvalues and xvalues that differ only in cv-qualifiers.
324
325 DR 5
326 PR c++/60019
327 * call.c (build_user_type_conversion_1): The copy-init temporary
328 is cv-unqualified.
329
330 PR c++/58714
331 * tree.c (stabilize_expr): A stabilized prvalue is an xvalue.
332
333 PR c++/54348
334 * call.c (build_conditional_expr_1): If overload resolution finds
335 no match, just say "different types".
336
337 PR c++/32019
338 * call.c (build_conditional_expr_1): Improve ambiguity diagnostic.
339
340 PR c++/22434
341 * call.c (build_conditional_expr_1): Don't try to pool cv-quals
342 if we didn't find a conversion.
343 Don't accept a bad conversion too early.
344
345 2014-05-08 Paolo Carlini <paolo.carlini@oracle.com>
346
347 PR c++/13981
348 * typeck.c (convert_for_assignment): Provide an inform for pointers
349 to incomplete class types.
350
351 2014-05-07 Paolo Carlini <paolo.carlini@oracle.com>
352
353 PR c++/61083
354 * pt.c (convert_nontype_argument): Protect all the error calls
355 with complain & tf_error.
356
357 2014-05-07 Paolo Carlini <paolo.carlini@oracle.com>
358
359 PR c++/61080
360 * pt.c (instantiate_decl): Avoid generating the body of a
361 deleted function.
362
363 2014-05-06 Paolo Carlini <paolo.carlini@oracle.com>
364
365 PR c++/60999
366 * pt.c (maybe_begin_member_template_processing): Use
367 uses_template_parms.
368
369 2014-05-06 Kenneth Zadeck <zadeck@naturalbridge.com>
370 Mike Stump <mikestump@comcast.net>
371 Richard Sandiford <rdsandiford@googlemail.com>
372
373 * call.c: Include wide-int.h.
374 (type_passed_as): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
375 (convert_for_arg_passing): Likewise.
376 * class.c: Include wide-int.h.
377 (walk_subobject_offsets): Use tree_int_cst_lt instead of INT_CST_LT.
378 (end_of_class): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
379 (include_empty_classes): Likewise
380 (layout_class_type): Use tree_int_cst_lt instead of INT_CST_LT.
381 * cvt.c: Include wide-int.h.
382 (ignore_overflows): Use wide_int_to_tree.
383 * decl.c: Include wide-int.h.
384 (check_array_designated_initializer): Use wide-int interfaces.
385 (compute_array_index_type): Use tree_int_cst_lt instead of INT_CST_LT.
386 (finish_enum_value_list): Use signop.
387 (build_enumerator): Use wide-int interfaces.
388 * init.c: Include wide-int.h.
389 (build_new_1): Use wide-int interfaces.
390 * mangle.c: Include wide-int.h.
391 (write_integer_cst): Use wide-int interfaces.
392 (write_array_type): Likewise.
393 * tree.c: Include wide-int.h.
394 (cp_tree_equal): Use tree_int_cst_equal.
395 * typeck2.c: Include wide-int.h.
396 (process_init_constructor_array): Use wide-int interfaces.
397
398 2014-05-03 Paolo Carlini <paolo.carlini@oracle.com>
399
400 PR c++/58582
401 * decl.c (grokfndecl): Check duplicate_decls return value for
402 error_mark_node.
403 * pt.c (instantiate_decl): A deleted function is defined.
404
405 2014-05-02 Jason Merrill <jason@redhat.com>
406
407 * decl2.c (vague_linkage_p): Local statics have vague linkage.
408
409 PR c++/60992
410 * lambda.c (lambda_capture_field_type): Wrap anything dependent
411 other than 'this'.
412 (add_capture): Check for VLA before calling it.
413 * semantics.c (is_this_parameter): Accept any 'this' parameter, not
414 just the current one. Make non-static.
415 * cp-tree.h: Declare it.
416 * pt.c (tsubst_copy) [VAR_DECL]: Also build a new VAR_DECL if
417 the operand was static or constant.
418
419 2014-05-02 Marek Polacek <polacek@redhat.com>
420
421 * typeck.c (maybe_warn_about_returning_address_of_local): Separate
422 warning_at calls.
423
424 2014-05-01 Marek Polacek <polacek@redhat.com>
425
426 PR c/43395
427 * typeck.c (maybe_warn_about_returning_address_of_local): Distinguish
428 between label and variable when warning about returning local address.
429
430 2014-04-30 Jason Merrill <jason@redhat.com>
431
432 PR c++/60980
433 * init.c (build_value_init): Don't try to call an array constructor.
434
435 PR c++/60951
436 * typeck2.c (massage_init_elt): Use maybe_constant_init.
437
438 2014-04-30 Marek Polacek <polacek@redhat.com>
439
440 * typeck.c (cp_build_binary_op): Call ubsan_instrument_division
441 even when SANITIZE_FLOAT_DIVIDE is on. Set doing_div_or_mod even
442 for non-integer types.
443
444 2014-04-29 Jason Merrill <jason@redhat.com>
445
446 DR 1351
447 Represent the unevaluated exception specification of an implicitly
448 declared or deleted function with a simple placeholder, not a list
449 of functions.
450 * cp-tree.h (UNEVALUATED_NOEXCEPT_SPEC_P): New.
451 * except.c (unevaluated_noexcept_spec): New.
452 * class.c (deduce_noexcept_on_destructor): Use it.
453 * decl.c (check_redeclaration_exception_specification): Call
454 maybe_instantiate_noexcept.
455 (duplicate_decls): Call it before merge_types.
456 (start_preparsed_function): Call maybe_instantiate_noexcept.
457 * decl2.c (mark_used): Call maybe_instantiate_noexcept earlier.
458 * init.c (get_nsdmi): Factor out of perform_member_init.
459 * method.c (process_subob_fn): Call maybe_instantiate_noexcept.
460 (walk_field_subobs): Consider NSDMI for EH spec.
461 (get_defaulted_eh_spec): New.
462 (implicitly_declare_fn): Use unevaluated_noexcept_spec.
463 (defaulted_late_check): Defer EH checking in non-template classes.
464 (after_nsdmi_defaulted_late_checks): New.
465 * parser.c (cp_parser_class_specifier_1): Use it.
466 (unparsed_classes): New macro.
467 * parser.h (cp_unparsed_functions_entry_d): Add classes field.
468 * pt.c (maybe_instantiate_noexcept): Use get_defaulted_eh_spec.
469 Remove list-of-functions handling.
470 * typeck2.c (merge_exception_specifiers): Remove list-of-functions
471 handling and FN parameter.
472 * typeck.c (merge_types): Adjust.
473
474 2014-04-28 Paolo Carlini <paolo.carlini@oracle.com>
475
476 PR c++/59120
477 * parser.c (cp_parser_alias_declaration): Check return value of
478 cp_parser_require.
479
480 2014-04-24 Jakub Jelinek <jakub@redhat.com>
481
482 * parser.c (cp_parser_omp_atomic): Allow seq_cst before
483 atomic-clause, allow comma in between atomic-clause and
484 seq_cst.
485
486 2014-04-24 Marc Glisse <marc.glisse@inria.fr>
487
488 PR libstdc++/43622
489 * rtti.c (emit_support_tinfos): Do not iterate on
490 registered_builtin_types (partial revert).
491
492 2014-04-23 Dinar Temirbulatov <dtemirbulatov@gmail.com>
493
494 PR c++/57958
495 * semantics.c (apply_deduced_return_type): Complete non-void type
496 before estimating whether the type is aggregate.
497
498 2014-04-22 Marc Glisse <marc.glisse@inria.fr>
499
500 PR libstdc++/43622
501 * rtti.c (emit_support_tinfo_1): New function, extracted from
502 emit_support_tinfos.
503 (emit_support_tinfos): Call it and iterate on registered_builtin_types.
504
505 2014-04-22 Jakub Jelinek <jakub@redhat.com>
506
507 PR c/59073
508 * parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
509 fails, don't set OM_PARALLEL_COMBINED and return NULL.
510
511 2014-04-18 Jason Merrill <jason@redhat.com>
512
513 DR 1571
514 * call.c (reference_binding): Recurse on user-defined conversion.
515
516 PR c++/60872
517 * call.c (standard_conversion): Don't try to apply restrict to void.
518
519 2014-04-16 Marc Glisse <marc.glisse@inria.fr>
520
521 * decl.c (reshape_init_r): Handle a single element of vector type.
522
523 2014-04-16 Patrick Palka <patrick@parcs.ath.cx>
524
525 PR c++/60765
526 * decl2.c (cplus_decl_attributes): Handle
527 pointer-to-member-function declarations.
528
529 2014-04-16 Patrick Palka <patrick@parcs.ath.cx>
530
531 PR c++/60764
532 * call.c (build_user_type_coversion): Use build_dummy_object
533 to create the placeholder object for a constructor method call.
534 (build_special_member_call): Likewise.
535 (build_over_call): Check for the placeholder object with
536 is_dummy_object.
537 (build_new_method_call_1): Likewise. Don't attempt to resolve
538 a dummy object for a constructor method call.
539
540 2014-04-16 Paul Pluzhnikov <ppluzhnikov@google.com>
541
542 PR c++/59295
543 * friend.c (add_friend, make_friend_class): Move repeated friend
544 warning under Wredundant_decls.
545
546 2014-04-15 Paolo Carlini <paolo.carlini@oracle.com>
547
548 * decl.c (duplicate_decls): Remove redundant TYPE_NAME use.
549 * name-lookup.c (pushdecl_maybe_friend_1): Likewise.
550 (do_class_using_decl): Likewise.
551 * mangle.c (dump_substitution_candidates): Use TYPE_NAME_STRING.
552
553 2014-04-15 Jakub Jelinek <jakub@redhat.com>
554
555 PR plugins/59335
556 * Make-lang.h (CP_PLUGIN_HEADERS): Add type-utils.h.
557
558 2014-04-14 Paolo Carlini <paolo.carlini@oracle.com>
559
560 * cp-tree.h (TYPE_IDENTIFIER): Remove declaration.
561
562 2014-04-14 Paolo Carlini <paolo.carlini@oracle.com>
563
564 * pt.c (mark_template_parm): Use template_parm_level_and_index.
565
566 2014-04-11 Jason Merrill <jason@redhat.com>
567
568 * parser.h (struct cp_token): Rename ambiguous_p to error_reported.
569 * parser.c: Adjust.
570 (cp_lexer_get_preprocessor_token): Always clear it.
571 (cp_parser_lambda_expression): Use it to avoid duplicate diagnostics.
572
573 DR 1467
574 PR c++/51747
575 * decl.c (reshape_init_r): Handle a single element of class type.
576
577 DR 1338
578 * decl.c (cxx_init_decl_processing): Set DECL_IS_MALLOC on
579 built-in operator new.
580
581 2014-04-11 Paolo Carlini <paolo.carlini@oracle.com>
582
583 PR c++/58600
584 * name-lookup.c (parse_using_directive): Return early if the
585 attribs argument is error_mark_node; use get_attribute_name.
586
587 2014-04-11 Jason Merrill <jason@redhat.com>
588
589 DR 1030
590 PR c++/51253
591 * cp-tree.h (CALL_EXPR_LIST_INIT_P): New.
592 * call.c (struct z_candidate): Add flags field.
593 (add_candidate): Add flags parm.
594 (add_function_candidate, add_conv_candidate, build_builtin_candidate)
595 (add_template_candidate_real): Pass it.
596 (build_over_call): Set CALL_EXPR_LIST_INIT_P.
597 * tree.c (build_aggr_init_expr): Copy it.
598 * semantics.c (simplify_aggr_init_expr): Preevaluate args if it's set.
599
600 2014-04-10 Richard Biener <rguenther@suse.de>
601 Jakub Jelinek <jakub@redhat.com>
602
603 PR ipa/60761
604 * error.c (dump_decl) <case FUNCTION_DECL>: If
605 DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
606 recurse on DECL_ABSTRACT_ORIGIN instead of printing
607 <built-in>.
608
609 2014-04-09 Fabien Chêne <fabien@gcc.gnu.org>
610
611 * pt.c (check_template_variable): Check for the return of pedwarn
612 before emitting a note.
613 * parser.c (cp_parser_lambda_introducer): Likewise.
614
615 2014-04-08 Paolo Carlini <paolo.carlini@oracle.com>
616
617 PR c++/59115
618 * pt.c (process_template_parm): For an invalid non-type parameter
619 only set TREE_TYPE to error_mark_node.
620 (push_inline_template_parms_recursive, comp_template_parms,
621 redeclare_class_template, coerce_template_template_parm,
622 coerce_template_template_parms, unify): Use error_operand_p.
623
624 2014-04-08 Nathan Sidwell <nathan@codesourcery.com>
625
626 * class.c (check_bases_and_members): Warn about non-virtual dtors
627 in public bases only. Check warn_ecpp before complaining about
628 non-polymorphic bases.
629
630 2014-04-04 Fabien Chêne <fabien@gcc.gnu.org>
631
632 * decl.c (duplicate_decls): Check for the return of warning_at
633 before emitting a note.
634 (warn_misplaced_attr_for_class_type): Likewise.
635 (check_tag_decl): Likewise.
636
637 2014-04-04 Paolo Carlini <paolo.carlini@oracle.com>
638
639 PR c++/58207
640 * semantics.c (sort_constexpr_mem_initializers): Robustify loop.
641
642 2014-04-04 Patrick Palka <patrick@parcs.ath.cx>
643
644 PR c++/44613
645 * semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
646 * decl.c (cp_finish_decl): Create a new BIND_EXPR before
647 instantiating a variable-sized type.
648
649 PR c++/21113
650 * decl.c (decl_jump_unsafe): Consider variably-modified decls.
651
652 2014-04-04 Fabien Chêne <fabien@gcc.gnu.org>
653
654 * class.c (find_abi_tags_r): Check for the return of warning
655 before emitting a note.
656 (one_inherited_ctor): Likewise.
657
658 2014-04-04 Fabien Chêne <fabien@gcc.gnu.org>
659
660 * decl.c (duplicate_decls): Check for the return of permerror
661 before emitting a note.
662
663 2014-04-03 Nathan Sidwell <nathan@codesourcery.com>
664
665 * class.c (accessible_nvdtor_p): New.
666 (check_bases): Don't check base destructor here ...
667 (check_bases_and_members): ... check them here. Trigger on
668 Wnon-virtual-dtor flag.
669 (finish_struct_1): Use accessible_nvdtor_p.
670
671 2014-04-01 Jason Merrill <jason@redhat.com>
672
673 * pt.c (process_partial_specialization): Say "not deducible"
674 rather than "not used". Use inform.
675
676 PR c++/60374
677 * pt.c (coerce_template_parms): Check that the pack expansion
678 pattern works with the first matching parameter.
679
680 2014-04-01 Fabien Chêne <fabien@gcc.gnu.org>
681
682 * init.c (perform_member_init): Homogenize uninitialized
683 diagnostics.
684
685 2014-04-01 Jason Merrill <jason@redhat.com>
686
687 PR c++/60708
688 * call.c (build_array_conv): Call complete_type.
689
690 PR c++/60713
691 * typeck2.c (PICFLAG_SIDE_EFFECTS): New.
692 (picflag_from_initializer): Return it.
693 (process_init_constructor): Handle it.
694
695 PR c++/60642
696 * decl2.c (is_late_template_attribute): Don't defer abi_tag.
697 * mangle.c (write_unqualified_name): Fix abi_tag on templates.
698 * pt.c (get_template_info): Handle NAMESPACE_DECL.
699 (most_general_template): Handle more kinds of template.
700 * tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
701 instantiations and specializations.
702
703 2014-03-31 Patrick Palka <patrick@parcs.ath.cx>
704
705 PR c++/44859
706 * typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
707 COMPONENT_REFs and ARRAY_REFs sooner.
708
709 2014-03-29 Adam Butcher <adam@jessamine.co.uk>
710
711 PR c++/60626
712 * parser.c (cp_parser_init_declarator): Handle erroneous generic type
713 usage in non-functions with pushed scope.
714
715 2014-03-28 Adam Butcher <adam@jessamine.co.uk>
716
717 PR c++/60573
718 * name-lookup.h (cp_binding_level): New transient field defining_class_p
719 to indicate whether a scope is in the process of defining a class.
720 * semantics.c (begin_class_definition): Set defining_class_p.
721 * name-lookup.c (leave_scope): Reset defining_class_p.
722 * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
723 defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
724 unwinding to class-defining scope to handle the erroneous definition of
725 a generic function of an arbitrarily nested class within an enclosing
726 class.
727
728 2014-03-26 Fabien Chêne <fabien@gcc.gnu.org>
729
730 PR c++/52369
731 * method.c (walk_field_subobs): Improve the diagnostic
732 locations for both REFERENCE_TYPEs and non-static const members.
733 * init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
734 instead of %qD to be consistent with the c++11 diagnostic.
735
736 2014-03-25 Jason Merrill <jason@redhat.com>
737
738 PR c++/60566
739 PR c++/58678
740 * class.c (build_vtbl_initializer): Handle abstract dtors here.
741 * search.c (get_pure_virtuals): Not here.
742
743 PR c++/60375
744 * parser.c (cp_parser_lambda_expression): Don't parse the body of
745 a lambda in unevaluated context.
746
747 PR c++/60628
748 * decl.c (create_array_type_for_decl): Complain about array of auto.
749
750 2014-03-25 Jakub Jelinek <jakub@redhat.com>
751
752 PR c++/60331
753 * semantics.c (potential_constant_expression_1): Handle
754 DECL_EXPR.
755
756 2014-03-24 Adam Butcher <adam@jessamine.co.uk>
757
758 PR c++/60627
759 * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
760 introducing an implicit function template parameter within an explicit
761 instantiation.
762
763 2014-03-22 Jason Merrill <jason@redhat.com>
764
765 PR c++/60574
766 * decl.c (grokdeclarator): Change permerror about 'virtual auto'
767 to error.
768
769 2014-03-21 Paolo Carlini <paolo.carlini@oracle.com>
770
771 PR c++/60384
772 * name-lookup.c (push_class_level_binding_1): Check identifier_p
773 on the name argument.
774
775 2014-03-20 Jakub Jelinek <jakub@redhat.com>
776
777 PR c++/60572
778 * init.c (build_zero_init_1): Ignore fields with error_mark_node
779 type.
780
781 2014-03-19 Paolo Carlini <paolo.carlini@oracle.com>
782
783 PR c++/51474
784 * call.c (build_new_method_call_1): Handle pure virtuals called by
785 NSDMIs too.
786
787 2014-03-17 Adam Butcher <adam@jessamine.co.uk>
788
789 PR c++/60390
790 * parser.c (cp_parser_member_declaration): Don't allow
791 finish_fully_implicit_template to consider friend declarations to be
792 class member templates.
793 (synthesize_implicit_template_parm): Handling winding back through class
794 scope to the class being defined in order to inject a template argument
795 list.
796
797 PR c++/60391
798 * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
799 function scope as per cp_parser_skip_to_end_of_statement.
800
801 2014-03-17 Paolo Carlini <paolo.carlini@oracle.com>
802
803 PR c++/59571
804 * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
805
806 2014-03-14 Jason Merrill <jason@redhat.com>
807
808 PR c++/60532
809 PR c++/58678
810 * search.c (get_pure_virtuals): Handle abstract dtor here.
811 (dfs_get_pure_virtuals): Not here.
812
813 PR c++/58678
814 * search.c (dfs_get_pure_virtuals): Treat the destructor of an
815 abstract class as pure.
816
817 2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
818
819 PR c++/60383
820 * pt.c (maybe_process_partial_specialization): Check return value
821 of check_specialization_namespace.
822
823 2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
824
825 PR c++/60254
826 * semantics.c (finish_static_assert): Call cxx_constant_value only
827 if require_potential_rvalue_constant_expression returns true.
828
829 2014-03-11 Paolo Carlini <paolo.carlini@oracle.com>
830
831 PR c++/60389
832 * method.c (get_inherited_ctor): New.
833 * cp-tree.h (get_inherited_ctor): Declare it.
834 * semantics.c (is_valid_constexpr_fn): Use it.
835
836 2014-03-10 Jason Merrill <jason@redhat.com>
837
838 PR c++/60367
839 * call.c (convert_default_arg): Remove special handling for
840 CONSTRUCTOR.
841
842 PR c++/53492
843 * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
844 when deciding whether to call push_template_decl for a member class.
845 * pt.c (push_template_decl_real): Return after wrong levels error.
846
847 2014-03-08 Adam Butcher <adam@jessamine.co.uk>
848
849 PR c++/60033
850 * pt.c (tsubst_copy): When retrieving a capture pack from a generic
851 lambda, remove the lambda's own template argument list prior to fetching
852 the specialization.
853
854 PR c++/60393
855 * parser.c (cp_parser_parameter_declaration_clause): Move generic
856 function template unwinding on error into a more general location, ...
857 (cp_parser_skip_to_end_of_statement): ... here.
858
859 2014-03-07 Jason Merrill <jason@redhat.com>
860
861 * Make-lang.in (check_g++_parallelize): Split dg.exp.
862
863 * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
864 we're in a trailing return type.
865
866 * typeck.c (comp_template_parms_position): 'auto' and
867 'decltype(auto)' are different from real template parms.
868
869 * parser.c (cp_parser_using_declaration): Consume the semicolon
870 after bare parameter pack error.
871
872 * cp-tree.h (REF_PARENTHESIZED_P): New.
873 * semantics.c (force_paren_expr): Set it.
874 * pt.c (do_auto_deduction): Check it.
875 (tsubst) [COMPONENT_REF]: Copy it.
876 * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
877
878 * decl.c (create_array_type_for_decl): Only warn about invalid
879 C++1y VLA if flag_iso or warn_vla>0.
880 (grokdeclarator): Likewise.
881 * pt.c (tsubst): Likewise.
882 * semantics.c (finish_decltype_type): Likewise.
883 * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
884 (cp_build_addr_expr_1): Likewise.
885 * init.c (build_new_1): Improve diagnostics.
886
887 2014-03-07 Paolo Carlini <paolo.carlini@oracle.com>
888
889 PR c++/58609
890 * decl.c (check_initializer): Return NULL_TREE after error;
891 consistently use inform.
892
893 2014-03-07 Paolo Carlini <paolo.carlini@oracle.com>
894
895 * decl.c (check_initializer): Remove dead code.
896
897 2014-03-06 Marek Polacek <polacek@redhat.com>
898
899 PR c/60197
900 * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
901 of checking tree code.
902
903 2014-03-06 Paolo Carlini <paolo.carlini@oracle.com>
904
905 * parser.c (cp_lexer_set_source_position): New.
906 (cp_parser_mem_initializer): Use it.
907 (cp_parser_postfix_open_square_expression): Likewise.
908 (cp_parser_parenthesized_expression_list): Likewise.
909 (cp_parser_new_initializer): Likewise.
910 (cp_parser_jump_statement): Likewise.
911 (cp_parser_initializer): Likewise.
912 (cp_parser_functional_cast): Likewise.
913
914 2014-03-05 Jason Merrill <jason@redhat.com>
915
916 PR c++/60409
917 * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
918 dependent expression.
919
920 PR c++/60361
921 * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
922 if re-parsing might succeed.
923 * semantics.c (finish_id_expression): Use of a parameter outside
924 the function body is a parse error.
925
926 * parser.c (cp_parser_mem_initializer): Set input_location
927 properly for init-list warning.
928 (cp_parser_postfix_open_square_expression): Likewise.
929 (cp_parser_parenthesized_expression_list): Likewise.
930 (cp_parser_new_initializer): Likewise.
931 (cp_parser_jump_statement): Likewise.
932 (cp_parser_initializer): Likewise.
933 (cp_parser_functional_cast): Likewise.
934
935 2014-03-04 Jason Merrill <jason@redhat.com>
936
937 PR c++/60417
938 * typeck2.c (process_init_constructor_record): Set
939 CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
940
941 PR c++/60415
942 PR c++/54359
943 * parser.c (cp_parser_direct_declarator): Set declarator to
944 cp_error_declarator on invalid qualified-id.
945
946 2014-03-04 Paolo Carlini <paolo.carlini@oracle.com>
947
948 PR c++/60376
949 * parser.c (cp_parser_using_declaration): Early return when
950 cp_parser_nested_name_specifier errors out.
951
952 2014-03-01 Adam Butcher <adam@jessamine.co.uk>
953
954 PR c++/60377
955 * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
956 function scope on parse error in function parameter list.
957
958 2014-03-01 Paolo Carlini <paolo.carlini@oracle.com>
959
960 * method.c (implicitly_declare_fn): Remove redundant
961 DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
962 * semantics.c (is_instantiation_of_constexpr): Likewise.
963 * error.c (dump_function_decl): Likewise.
964
965 2014-03-01 Jason Merrill <jason@redhat.com>
966
967 PR c++/60379
968 * semantics.c (begin_maybe_infinite_loop): Use
969 fold_non_dependent_expr_sfinae.
970
971 2014-02-28 Jason Merrill <jason@redhat.com>
972
973 PR c++/58845
974 * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
975
976 2014-02-28 Paolo Carlini <paolo.carlini@oracle.com>
977
978 PR c++/58610
979 * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
980 * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
981 * lambda.c (maybe_add_lambda_conv_op): Likewise.
982
983 2014-02-27 Paolo Carlini <paolo.carlini@oracle.com>
984
985 PR c++/60253
986 * call.c (convert_arg_to_ellipsis): Return error_mark_node after
987 error_at.
988
989 2014-02-27 Jason Merrill <jason@redhat.com>
990
991 PR c++/60353
992 PR c++/55877
993 * decl2.c (tentative_decl_linkage): Don't mess with functions that
994 are not yet defined.
995
996 2014-02-26 Jason Merrill <jason@redhat.com>
997
998 PR c++/60347
999 PR lto/53808
1000 * class.c (clone_function_decl): Don't note_vague_linkage_fn.
1001 * init.c (build_vtbl_address): Do it here.
1002
1003 PR c++/59231
1004 PR c++/11586
1005 PR c++/14710
1006 PR c++/57132
1007 * pt.c (struct warning_sentinel): New.
1008 (tsubst_copy_and_build): Use it instead of
1009 c_inhibit_evaluation_warnings.
1010 * typeck.c (maybe_warn_about_useless_cast): Remove
1011 c_inhibit_evaluation_warnings check.
1012
1013 PR c++/54440
1014 * pt.c (get_template_parm_index): New.
1015 (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
1016 (process_template_parm): Allow bare packs in template template
1017 parm template parms.
1018 (coerce_template_parameter_pack): Handle fixed template template
1019 parm packs and fixed packs not at the end of the parm list.
1020 (coerce_template_parms): Handle template parm packs not at the end
1021 of the parm list.
1022 (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
1023
1024 PR c++/60182
1025 * pt.c (unify): Ignore alias templates when deducing a template
1026 template parameter.
1027
1028 PR c++/60345
1029 Revert:
1030 DR 1571
1031 * call.c (reference_binding): Recurse on user-defined conversion.
1032 (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
1033
1034 2014-02-25 Jason Merrill <jason@redhat.com>
1035
1036 DR 1571
1037 * call.c (reference_binding): Recurse on user-defined conversion.
1038 (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
1039
1040 * call.c (print_conversion_rejection): Handle n_arg of -2.
1041 (build_user_type_conversion_1): Pass it.
1042
1043 PR c++/55877
1044 * decl2.c (no_linkage_error): Handle C++98 semantics.
1045 (reset_type_linkage): Move from decl.c.
1046 (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
1047 (bt_reset_linkage_2, reset_decl_linkage): New.
1048 (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
1049 (cp_write_global_declarations): Move condition into no_linkage_error.
1050 * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
1051 * semantics.c (expand_or_defer_fn_1): Factor out
1052 tentative_decl_linkage.
1053 * cp-tree.h: Adjust.
1054
1055 * decl2.c (finish_static_data_member_decl): Diagnose static data
1056 member in unnamed class.
1057 * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
1058
1059 PR lto/53808
1060 * class.c (clone_function_decl): Call note_vague_linkage_fn for
1061 defaulted virtual dtor.
1062
1063 DR 1286
1064 PR c++/60328
1065 * pt.c (get_underlying_template): Fix equivalence calculation.
1066
1067 2014-02-25 Adam Butcher <adam@jessamine.co.uk>
1068
1069 PR c++/60311
1070 * parser.c (function_being_declared_is_template_p): Return false when
1071 processing a template parameter list.
1072 (cp_parser_parameter_declaration_clause): Don't set
1073 auto_is_implicit_function_template_parm_p when processing a
1074 template parameter list.
1075
1076 * parser.c (synthesize_implicit_template_parm): Inject new template
1077 argument list appropriately when a generic member function
1078 of a class template is declared out-of-line.
1079
1080 PR c++/60065
1081 * parser.c (cp_parser_direct_declarator): Don't save and
1082 restore num_template_parameter_lists around call to
1083 cp_parser_parameter_declaration_list.
1084 (function_being_declared_is_template_p): New predicate.
1085 (cp_parser_parameter_declaration_list): Use
1086 function_being_declared_is_template_p as predicate for
1087 inspecting current function template parameter list length
1088 rather than num_template_parameter_lists.
1089
1090 2014-02-24 Jason Merrill <jason@redhat.com>
1091
1092 PR c++/60146
1093 * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
1094 DECL_EXPR initialize a non-class iterator.
1095
1096 PR c++/60312
1097 * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
1098
1099 2014-02-21 Jason Merrill <jason@redhat.com>
1100
1101 PR c++/58170
1102 * parser.c (cp_parser_type_name): Always check dependency.
1103 (cp_parser_type_specifier_seq): Call
1104 cp_parser_parse_and_diagnose_invalid_type_name.
1105
1106 PR c++/60108
1107 * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
1108
1109 PR c++/60185
1110 * parser.c (cp_parser_default_argument): Clear
1111 current_class_ptr/current_class_ref like tsubst_default_argument.
1112
1113 PR c++/60252
1114 * lambda.c (maybe_resolve_dummy): Check lambda_function rather
1115 than current_binding_level.
1116
1117 PR c++/60186
1118 * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
1119
1120 PR c++/60187
1121 * parser.c (cp_parser_enum_specifier): Call
1122 check_for_bare_parameter_packs.
1123
1124 PR c++/59347
1125 * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
1126 erroneous typedef.
1127
1128 PR c++/60241
1129 * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
1130 of the partial instantiation, not the most general template.
1131 (maybe_process_partial_specialization): Reassign everything on
1132 that list.
1133
1134 PR c++/60216
1135 * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
1136 (check_explicit_specialization): Don't clone.
1137
1138 PR c++/60219
1139 * pt.c (coerce_template_parms): Bail if argument packing fails.
1140
1141 PR c++/60224
1142 * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
1143 Don't get confused by a CONSTRUCTOR that already has a type.
1144
1145 PR c++/60227
1146 * call.c (build_array_conv): Don't crash on VLA.
1147
1148 PR c++/60248
1149 * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
1150
1151 PR c++/60252
1152 * lambda.c (maybe_resolve_dummy): Don't try to capture this
1153 in declaration context.
1154
1155 DR 1591
1156 PR c++/60051
1157 * pt.c (unify): Only unify if deducible. Handle 0-length list.
1158
1159 PR c++/60250
1160 * parser.c (cp_parser_direct_declarator): Don't wrap a
1161 type-dependent expression in a NOP_EXPR.
1162
1163 PR c++/60251
1164 * lambda.c (is_normal_capture_proxy): Handle VLA capture.
1165
1166 PR c++/60167
1167 PR c++/60222
1168 PR c++/58606
1169 * parser.c (cp_parser_template_argument): Restore dereference.
1170 * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
1171 (process_partial_specialization): Handle deref.
1172 (unify): Likewise.
1173
1174 2014-02-21 Adam Butcher <adam@jessamine.co.uk>
1175
1176 PR c++/60052
1177 PR c++/60053
1178 * parser.c (cp_parser_parameter_declaration_list): Correctly reset
1179 implicit_template_scope upon leaving an out-of-line generic member
1180 function definition.
1181
1182 2014-02-20 Kai Tietz <ktietz@redhat.com>
1183
1184 PR c++/58873
1185 * parser.c (cp_parser_functional_cast): Treat NULL_TREE
1186 valued type argument as error_mark_node.
1187
1188 PR c++/58835
1189 * semantics.c (finish_fname): Handle error_mark_node.
1190
1191 2014-02-19 Jason Merrill <jason@redhat.com>
1192
1193 PR c++/60046
1194 * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
1195 spec from template context.
1196
1197 2014-02-19 Jakub Jelinek <jakub@redhat.com>
1198
1199 PR debug/56563
1200 * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
1201 FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
1202
1203 PR c++/60267
1204 * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
1205
1206 2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
1207
1208 PR c++/60225
1209 * semantics.c (ensure_literal_type_for_constexpr_object): Use
1210 strip_array_types.
1211
1212 2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
1213
1214 PR c++/60215
1215 * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
1216 During error recovery allow_non_constant may be false.
1217
1218 2014-02-18 Adam Butcher <adam@jessamine.co.uk>
1219
1220 PR c++/60190
1221 * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
1222 scope whenever a template parameter list has been started, independent
1223 of whether the function call operator was well-formed or not.
1224
1225 PR c++/60064
1226 * parser.c (cp_parser_member_declaration): Pop fully implicit template
1227 scope for generic friend declarations as well as for non-friends.
1228
1229 2014-02-12 Paolo Carlini <paolo.carlini@oracle.com>
1230
1231 PR c++/60047
1232 * method.c (implicitly_declare_fn): A constructor of a class with
1233 virtual base classes isn't constexpr (7.1.5p4).
1234
1235 2014-02-05 Jan Hubicka <hubicka@ucw.cz
1236
1237 * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
1238
1239 2014-02-05 Jakub Jelinek <jakub@redhat.com>
1240
1241 PR c++/58703
1242 * parser.c (cp_parser_omp_declare_reduction): Save and free
1243 declarator_obstack.
1244
1245 2014-02-03 Marc Glisse <marc.glisse@inria.fr>
1246
1247 PR c++/53017
1248 PR c++/59211
1249 * tree.c (handle_init_priority_attribute): Call default_conversion on
1250 the attribute argument.
1251
1252 2014-02-03 Paolo Carlini <paolo.carlini@oracle.com>
1253
1254 PR c++/58871
1255 * method.c (synthesized_method_walk): If vbases is non-null but
1256 is_empty is true, likewise don't worry about the virtual bases.
1257
1258 2014-02-01 Paolo Carlini <paolo.carlini@oracle.com>
1259
1260 PR c++/51219
1261 * typeck2.c (process_init_constructor_record): Just skip unnamed
1262 bit-fields.
1263
1264 2014-01-31 Jason Merrill <jason@redhat.com>
1265
1266 PR c++/59469
1267 * pt.c (mark_decl_instantiated): Call mark_needed.
1268
1269 PR c++/58672
1270 * decl2.c (handle_tls_init): Handle null init fn.
1271
1272 PR c++/55800
1273 * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
1274
1275 2014-01-31 Paolo Carlini <paolo.carlini@oracle.com>
1276
1277 PR c++/59082
1278 * class.c (build_vfield_ref): Early return error_mark_node if
1279 TYPE_VFIELD (type) is null.
1280 (build_base_path): Check return value of build_vfield_ref.
1281
1282 2014-01-31 Jason Merrill <jason@redhat.com>
1283
1284 PR c++/59646
1285 * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
1286 [ck_list]: Check for error_mark_node.
1287 (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
1288
1289 PR c++/57043
1290 * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
1291 during partial ordering.
1292
1293 2014-01-31 Marek Polacek <polacek@redhat.com>
1294
1295 PR c/59963
1296 * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
1297
1298 2014-01-30 Jason Merrill <jason@redhat.com>
1299
1300 PR c++/57899
1301 * cp-tree.h (struct saved_scope): Add x_local_specializations.
1302 (local_specializations): New macro.
1303 * pt.c (local_specializations): Remove variable.
1304
1305 2014-01-30 Richard Sandiford <rdsandiford@googlemail.com>
1306
1307 PR c++/58708
1308 * parser.c (make_string_pack): Use double_int::from_buffer.
1309
1310 2014-01-30 Marek Polacek <polacek@redhat.com>
1311
1312 PR c/59940
1313 * typeck.c (build_ptrmemfunc1): Call convert_and_check with
1314 input_location.
1315 * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
1316 with input_location.
1317 * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
1318 loc parameter.
1319
1320 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
1321
1322 PR c++/58843
1323 * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
1324
1325 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
1326
1327 PR c++/58649
1328 * pt.c (lookup_template_class_1): Check start_enum return value
1329 for error_mark_node.
1330
1331 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
1332
1333 * decl.c (duplicate_decls, typename_hash, typename_compare):
1334 Use TYPE_IDENTIFIER.
1335 * error.c (dump_type): Likewise.
1336 * mangle.c (dump_substitution_candidates): Likewise.
1337
1338 2014-01-30 Jason Merrill <jason@redhat.com>
1339
1340 PR c++/59633
1341 * decl2.c (attributes_naming_typedef_ok): New.
1342 * cp-tree.h: Declare it.
1343 * decl.c (grokdeclarator): Check it.
1344 * tree.c (no_linkage_check): Handle VECTOR_TYPE.
1345
1346 2014-01-29 Jason Merrill <jason@redhat.com>
1347
1348 PR c++/59707
1349 * call.c (add_builtin_candidate): Catch dependent types.
1350
1351 PR c++/59989
1352 * pt.c (expand_template_argument_pack): Correct
1353 non_default_args_count calculation.
1354
1355 PR c++/58466
1356 * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
1357
1358 PR c++/59956
1359 * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
1360 have a friend template in a class template.
1361 * pt.c (tsubst_friend_function): Look through it.
1362 (push_template_decl_real): A friend member template is
1363 primary.
1364
1365 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
1366
1367 PR c++/58846
1368 * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
1369 == error_mark_node.
1370
1371 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
1372
1373 PR c++/58674
1374 * pt.c (instantiate_template_1): Check for error_mark_node the second
1375 argument too.
1376
1377 2014-01-29 Jason Merrill <jason@redhat.com>
1378
1379 PR c++/59916
1380 * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
1381 cdtor_returns_this case.
1382
1383 PR c++/59315
1384 * decl.c (cxx_maybe_build_cleanup): Call mark_used.
1385
1386 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
1387
1388 PR c++/58702
1389 * semantics.c (finish_omp_reduction_clause): Check type for
1390 error_mark_node.
1391
1392 2014-01-28 Jason Merrill <jason@redhat.com>
1393
1394 PR c++/59791
1395 * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
1396 (tsubst_copy): Use it if lookup fails.
1397
1398 PR c++/59818
1399 * pt.c (tsubst_function_type): Make sure we keep the same function
1400 quals.
1401
1402 PR c++/58701
1403 * semantics.c (build_anon_member_initialization): Stop walking
1404 when we run out of COMPONENT_REFs.
1405
1406 PR c++/58632
1407 * decl.c (lookup_and_check_tag): Ignore template parameters if
1408 scope == ts_current.
1409 * pt.c (check_template_shadow): Don't complain about the injected
1410 class name.
1411
1412 * decl.c (duplicate_decls): Tweak.
1413
1414 PR c++/53756
1415 * mangle.c (write_unqualified_name): Handle operator auto.
1416
1417 2014-01-27 Jason Merrill <jason@redhat.com>
1418
1419 PR c++/59823
1420 Core DR 1138
1421 * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
1422 list-initialization. A conversion to rvalue ref that involves
1423 an lvalue-rvalue conversion is bad.
1424 (convert_like_real): Give helpful error message.
1425
1426 PR c++/54652
1427 * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
1428
1429 PR c++/58504
1430 * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
1431 types.
1432
1433 PR c++/58606
1434 * pt.c (template_parm_to_arg): Call convert_from_reference.
1435 (tsubst_template_arg): Don't strip reference refs.
1436
1437 PR c++/58639
1438 * call.c (build_aggr_conv): Reject value-initialization of reference.
1439
1440 PR c++/58812
1441 PR c++/58651
1442 * call.c (convert_like_real): Give helpful error about excess braces
1443 for ck_rvalue of scalar type.
1444
1445 Core DR 1288
1446 * call.c (reference_binding): Only elide braces if the single
1447 element is reference-related.
1448
1449 PR c++/58814
1450 * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
1451 stabilizing.
1452
1453 PR c++/58837
1454 * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
1455 FUNCTION_DECL.
1456
1457 PR c++/59097
1458 * decl.c (compute_array_index_type): Don't call
1459 maybe_constant_value for a non-integral expression.
1460
1461 2014-01-24 Balaji V. Iyer <balaji.v.iyer@intel.com>
1462
1463 * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
1464 flag_cilkplus.
1465 * cp-gimplify.c (cp_genericize): Likewise.
1466 * decl.c (grokfndecl): Likewise.
1467 * parser.c (cp_parser_postfix_expression): Likewise.
1468 (cp_parser_postfix_open_square_expression): Likewise.
1469 (cp_parser_direct_declarator): Likewise.
1470 (is_cilkplus_vector_p): Likewise.
1471 (cp_parser_omp_clause_name): Likewise.
1472 (cp_parser_omp_all_clauses): Likewise.
1473 * pt.c (apply_late_template_attributes): Likewise.
1474 * typeck.c (cp_build_array_ref): Likewise.
1475 (cp_build_compound_expr): Likewise.
1476 (check_return_expr): Likewise.
1477
1478 2014-01-24 Jason Merrill <jason@redhat.com>
1479
1480 PR c++/58550
1481 * decl.c (grokdeclarator): Turn pedwarn about auto return type in
1482 c++11 into error.
1483
1484 PR c++/59886
1485 PR c++/59659
1486 * typeck2.c (process_init_constructor_array): Don't create
1487 RANGE_EXPR yet.
1488
1489 2014-01-24 Jakub Jelinek <jakub@redhat.com>
1490
1491 * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
1492 handling for RANGE_ARRAY case.
1493
1494 2014-01-24 Paolo Carlini <paolo.carlini@oracle.com>
1495
1496 PR c++/57524
1497 * name-lookup.c (push_using_directive): Use timevar_cond_start.
1498
1499 2014-01-23 Marek Polacek <polacek@redhat.com>
1500
1501 PR c/59846
1502 * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
1503
1504 2014-01-23 Marek Polacek <polacek@redhat.com>
1505
1506 PR c/58346
1507 * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
1508 an empty aggregate.
1509
1510 2014-01-23 Jason Merrill <jason@redhat.com>
1511
1512 PR c++/55189
1513 * cp-tree.h (struct language_function): Add infinite_loop and
1514 infinite_loops.
1515 (current_function_infinite_loop): New.
1516 * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
1517 (break_maybe_infinite_loop): New.
1518 (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
1519 (finish_do_stmt, finish_for_cond, finish_for_stmt)
1520 (begin_range_for_stmt): Use them.
1521 * decl.c (finish_function): Don't warn about missing return
1522 if current_function_infinite_loop.
1523 * pt.c (instantiate_decl): Copy current_function_infinite_loop.
1524 * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
1525
1526 * call.c (build_op_delete_call): Use make_tree_vector and
1527 release_tree_vector.
1528
1529 2014-01-23 Paolo Carlini <paolo.carlini@oracle.com>
1530
1531 PR c++/58980
1532 * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
1533 nested_name_specifier.
1534
1535 2014-01-23 Balaji V. Iyer <balaji.v.iyer@intel.com>
1536
1537 * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
1538 see if there is an attribute after function decl. If so, then
1539 parse them now.
1540 (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
1541 enabled function late parsing.
1542 (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
1543 attribute for a SIMD-enabled function.
1544 (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
1545 the function is used by SIMD-enabled function (indicated by NULL
1546 pragma token). Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
1547 PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
1548 (cp_parser_cilk_simd_vectorlength): Modified this function to handle
1549 vectorlength clause in SIMD-enabled function and #pragma SIMD's
1550 vectorlength clause. Added a new bool parameter to differentiate
1551 between the two.
1552 (cp_parser_cilk_simd_fn_vector_attrs): New function.
1553 (is_cilkplus_vector_p): Likewise.
1554 (cp_parser_late_parsing_elem_fn_info): Likewise.
1555 (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
1556 and "vectorlength" clauses when Cilk Plus is enabled.
1557 (cp_parser_omp_clause_linear): Added a new parameter of type bool
1558 and emit a sorry message when step size is a parameter.
1559 * parser.h (cp_parser::cilk_simd_fn_info): New field.
1560 * decl.c (grokfndecl): Added flag_enable_cilkplus along with
1561 flag_openmp.
1562 * pt.c (apply_late_template_attributes): Likewise.
1563
1564 2014-01-23 Jakub Jelinek <jakub@redhat.com>
1565
1566 PR middle-end/58809
1567 * semantics.c (finish_omp_reduction_clause): Reject
1568 BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
1569
1570 2014-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
1571
1572 PR c++/59482
1573 * parser.c (cp_parser_class_head): Push the class before parsing
1574 the base-clause, pop after it.
1575
1576 2014-01-20 Eric Botcazou <ebotcazou@adacore.com>
1577
1578 * decl2.c (cpp_check): Revert prototype change.
1579
1580 2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
1581
1582 PR c++/59270
1583 PR c++/58811
1584 * init.c (build_value_init_noctor): Don't pass error_mark_node to
1585 build_value_init.
1586
1587 2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
1588
1589 PR c++/59269
1590 * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
1591 only when errorcount == 0.
1592
1593 2014-01-17 Marek Polacek <polacek@redhat.com>
1594
1595 PR c++/59838
1596 * cvt.c (ocp_convert): Don't segfault on non-existing
1597 ENUM_UNDERLYING_TYPE.
1598
1599 2014-01-16 Jason Merrill <jason@redhat.com>
1600
1601 PR c++/59821
1602 * tree.c (bot_manip): Update the location of builtin_LINE and
1603 builtin_FILE calls.
1604
1605 2014-01-14 Jason Merrill <jason@redhat.com>
1606
1607 PR c++/59659
1608 * typeck2.c (massage_init_elt): New.
1609 (process_init_constructor_record)
1610 (process_init_constructor_union): Use it.
1611 (process_init_constructor_array): Use it. Use RANGE_EXPR.
1612 (split_nonconstant_init_1): Handle it.
1613 * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
1614
1615 2014-01-09 Balaji V. Iyer <balaji.v.iyer@intel.com>
1616
1617 PR c++/59631
1618 * parser.c (cp_parser_postfix_expression): Added a new if-statement
1619 and replaced an existing if-statement with else-if statement.
1620 Changed an existing error message wording to match the one from the C
1621 parser.
1622
1623 2014-01-08 Jason Merrill <jason@redhat.com>
1624
1625 PR c++/59614
1626 * class.c (abi_tag_data): Add tags field.
1627 (check_abi_tags): Initialize it.
1628 (find_abi_tags_r): Support collecting missing tags.
1629 (mark_type_abi_tags): Don't look at template args.
1630 (inherit_targ_abi_tags): New.
1631 (check_bases_and_members): Use it.
1632 * cp-tree.h (ABI_TAG_IMPLICIT): New.
1633 * mangle.c (write_abi_tags): Check it.
1634
1635 2014-01-07 Jason Merrill <jason@redhat.com>
1636
1637 PR c++/58856
1638 * pt.c (num_innermost_template_parms): New.
1639 (get_underlying_template): Use it.
1640
1641 PR c++/58965
1642 * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
1643
1644 2014-01-07 Paolo Carlini <paolo.carlini@oracle.com>
1645
1646 * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
1647 the letter of 20.11.6 about Base and Derived naming the same
1648 class type modulo cv-qualifiers.
1649
1650 2014-01-06 Adam Butcher <adam@jessamine.co.uk>
1651
1652 PR c++/59635
1653 * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
1654 function as unimplemented for generic lambdas with varargs.
1655
1656 PR c++/59636
1657 * parser.c (cp_parser_template_parameter): Early out with
1658 error_mark_node if parameter declaration was not parsed.
1659
1660 PR c++/59629
1661 * parser.c (cp_parser_lambda_expression): Save/reset/restore
1662 auto_is_implicit_function_template_parm_p around lambda body.
1663
1664 PR c++/59638
1665 * parser.c (cp_parser_init_declarator): Undo fully implicit
1666 template parameter list when declarator is not a function.
1667
1668 2014-01-03 Marc Glisse <marc.glisse@inria.fr>
1669
1670 PR c++/58950
1671 * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
1672
1673 2014-01-03 Tobias Burnus <burnus@net-b.de>
1674
1675 PR c++/58567
1676 * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
1677
1678 2014-01-03 Paolo Carlini <paolo.carlini@oracle.com>
1679
1680 Core DR 1442
1681 PR c++/59165
1682 * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
1683 as include_std to perform_koenig_lookup.
1684 (cp_parser_postfix_expression): Adjust.
1685 * pt.c (tsubst_copy_and_build): Likewise.
1686 * semantics.c (perform_koenig_lookup): Remove bool parameter.
1687 (omp_reduction_lookup): Adjust.
1688 * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
1689 (lookup_arg_dependent): Likewise.
1690 (lookup_function_nonclass): Adjust.
1691 * name-lookup.h: Adjust declaration.
1692 * cp-tree.h: Likewise.
1693
1694 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
1695
1696 PR c++/59087
1697 * parser.c (cp_parser_userdef_numeric_literal): Mention
1698 -fext-numeric-literals in the message.
1699
1700 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
1701
1702 PR c++/59641
1703 * call.c (build_conditional_expr_1): Check the return value of
1704 force_rvalue.
1705
1706 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
1707
1708 * call.c (convert_like_real): Check complain.
1709
1710 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
1711
1712 PR c++/59378
1713 * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
1714 in templates.
1715
1716 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
1717
1718 Update copyright years
1719
1720 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
1721
1722 * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
1723 the standard form for the copyright notice.
1724 \f
1725 Copyright (C) 2014 Free Software Foundation, Inc.
1726
1727 Copying and distribution of this file, with or without modification,
1728 are permitted in any medium without royalty provided the copyright
1729 notice and this notice are preserved.