re PR c++/60573 ([c++1y] ICE with defining generic function of nested class in class...
[gcc.git] / gcc / cp / ChangeLog
1 2014-03-28 Adam Butcher <adam@jessamine.co.uk>
2
3 PR c++/60573
4 * name-lookup.h (cp_binding_level): New transient field defining_class_p
5 to indicate whether a scope is in the process of defining a class.
6 * semantics.c (begin_class_definition): Set defining_class_p.
7 * name-lookup.c (leave_scope): Reset defining_class_p.
8 * parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
9 defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
10 unwinding to class-defining scope to handle the erroneous definition of
11 a generic function of an arbitrarily nested class within an enclosing
12 class.
13
14 2014-03-26 Fabien ChĂȘne <fabien@gcc.gnu.org>
15
16 PR c++/52369
17 * cp/method.c (walk_field_subobs): improve the diagnostic
18 locations for both REFERENCE_TYPEs and non-static const members.
19 * cp/init.c (diagnose_uninitialized_cst_or_ref_member): use %q#D
20 instead of %qD to be consistent with the c++11 diagnostic.
21
22 2014-03-25 Jason Merrill <jason@redhat.com>
23
24 PR c++/60566
25 PR c++/58678
26 * class.c (build_vtbl_initializer): Handle abstract dtors here.
27 * search.c (get_pure_virtuals): Not here.
28
29 PR c++/60375
30 * parser.c (cp_parser_lambda_expression): Don't parse the body of
31 a lambda in unevaluated context.
32
33 PR c++/60628
34 * decl.c (create_array_type_for_decl): Complain about array of auto.
35
36 2014-03-25 Jakub Jelinek <jakub@redhat.com>
37
38 PR c++/60331
39 * semantics.c (potential_constant_expression_1): Handle
40 DECL_EXPR.
41
42 2014-03-24 Adam Butcher <adam@jessamine.co.uk>
43
44 PR c++/60627
45 * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
46 introducing an implicit function template parameter within an explicit
47 instantiation.
48
49 2014-03-22 Jason Merrill <jason@redhat.com>
50
51 PR c++/60574
52 * decl.c (grokdeclarator): Change permerror about 'virtual auto'
53 to error.
54
55 2014-03-21 Paolo Carlini <paolo.carlini@oracle.com>
56
57 PR c++/60384
58 * name-lookup.c (push_class_level_binding_1): Check identifier_p
59 on the name argument.
60
61 2014-03-20 Jakub Jelinek <jakub@redhat.com>
62
63 PR c++/60572
64 * init.c (build_zero_init_1): Ignore fields with error_mark_node
65 type.
66
67 2014-03-19 Paolo Carlini <paolo.carlini@oracle.com>
68
69 PR c++/51474
70 * call.c (build_new_method_call_1): Handle pure virtuals called by
71 NSDMIs too.
72
73 2014-03-17 Adam Butcher <adam@jessamine.co.uk>
74
75 PR c++/60390
76 * parser.c (cp_parser_member_declaration): Don't allow
77 finish_fully_implicit_template to consider friend declarations to be
78 class member templates.
79 (synthesize_implicit_template_parm): Handling winding back through class
80 scope to the class being defined in order to inject a template argument
81 list.
82
83 PR c++/60391
84 * parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
85 function scope as per cp_parser_skip_to_end_of_statement.
86
87 2014-03-17 Paolo Carlini <paolo.carlini@oracle.com>
88
89 PR c++/59571
90 * typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.
91
92 2014-03-14 Jason Merrill <jason@redhat.com>
93
94 PR c++/60532
95 PR c++/58678
96 * search.c (get_pure_virtuals): Handle abstract dtor here.
97 (dfs_get_pure_virtuals): Not here.
98
99 PR c++/58678
100 * search.c (dfs_get_pure_virtuals): Treat the destructor of an
101 abstract class as pure.
102
103 2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
104
105 PR c++/60383
106 * pt.c (maybe_process_partial_specialization): Check return value
107 of check_specialization_namespace.
108
109 2014-03-13 Paolo Carlini <paolo.carlini@oracle.com>
110
111 PR c++/60254
112 * semantics.c (finish_static_assert): Call cxx_constant_value only
113 if require_potential_rvalue_constant_expression returns true.
114
115 2014-03-11 Paolo Carlini <paolo.carlini@oracle.com>
116
117 PR c++/60389
118 * method.c (get_inherited_ctor): New.
119 * cp-tree.h (get_inherited_ctor): Declare it.
120 * semantics.c (is_valid_constexpr_fn): Use it.
121
122 2014-03-10 Jason Merrill <jason@redhat.com>
123
124 PR c++/60367
125 * call.c (convert_default_arg): Remove special handling for
126 CONSTRUCTOR.
127
128 PR c++/53492
129 * parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
130 when deciding whether to call push_template_decl for a member class.
131 * pt.c (push_template_decl_real): Return after wrong levels error.
132
133 2014-03-08 Adam Butcher <adam@jessamine.co.uk>
134
135 PR c++/60033
136 * pt.c (tsubst_copy): When retrieving a capture pack from a generic
137 lambda, remove the lambda's own template argument list prior to fetching
138 the specialization.
139
140 PR c++/60393
141 * parser.c (cp_parser_parameter_declaration_clause): Move generic
142 function template unwinding on error into a more general location, ...
143 (cp_parser_skip_to_end_of_statement): ... here.
144
145 2014-03-07 Jason Merrill <jason@redhat.com>
146
147 * Make-lang.in (check_g++_parallelize): Split dg.exp.
148
149 * parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
150 we're in a trailing return type.
151
152 * typeck.c (comp_template_parms_position): 'auto' and
153 'decltype(auto)' are different from real template parms.
154
155 * parser.c (cp_parser_using_declaration): Consume the semicolon
156 after bare parameter pack error.
157
158 * cp-tree.h (REF_PARENTHESIZED_P): New.
159 * semantics.c (force_paren_expr): Set it.
160 * pt.c (do_auto_deduction): Check it.
161 (tsubst) [COMPONENT_REF]: Copy it.
162 * typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.
163
164 * decl.c (create_array_type_for_decl): Only warn about invalid
165 C++1y VLA if flag_iso or warn_vla>0.
166 (grokdeclarator): Likewise.
167 * pt.c (tsubst): Likewise.
168 * semantics.c (finish_decltype_type): Likewise.
169 * typeck.c (cxx_sizeof_or_alignof_type): Likewise.
170 (cp_build_addr_expr_1): Likewise.
171 * init.c (build_new_1): Improve diagnostics.
172
173 2014-03-07 Paolo Carlini <paolo.carlini@oracle.com>
174
175 PR c++/58609
176 * decl.c (check_initializer): Return NULL_TREE after error;
177 consistently use inform.
178
179 2014-03-07 Paolo Carlini <paolo.carlini@oracle.com>
180
181 * decl.c (check_initializer): Remove dead code.
182
183 2014-03-06 Marek Polacek <polacek@redhat.com>
184
185 PR c/60197
186 * typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
187 of checking tree code.
188
189 2014-03-06 Paolo Carlini <paolo.carlini@oracle.com>
190
191 * parser.c (cp_lexer_set_source_position): New.
192 (cp_parser_mem_initializer): Use it.
193 (cp_parser_postfix_open_square_expression): Likewise.
194 (cp_parser_parenthesized_expression_list): Likewise.
195 (cp_parser_new_initializer): Likewise.
196 (cp_parser_jump_statement): Likewise.
197 (cp_parser_initializer): Likewise.
198 (cp_parser_functional_cast): Likewise.
199
200 2014-03-05 Jason Merrill <jason@redhat.com>
201
202 PR c++/60409
203 * semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
204 dependent expression.
205
206 PR c++/60361
207 * parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
208 if re-parsing might succeed.
209 * semantics.c (finish_id_expression): Use of a parameter outside
210 the function body is a parse error.
211
212 * parser.c (cp_parser_mem_initializer): Set input_location
213 properly for init-list warning.
214 (cp_parser_postfix_open_square_expression): Likewise.
215 (cp_parser_parenthesized_expression_list): Likewise.
216 (cp_parser_new_initializer): Likewise.
217 (cp_parser_jump_statement): Likewise.
218 (cp_parser_initializer): Likewise.
219 (cp_parser_functional_cast): Likewise.
220
221 2014-03-04 Jason Merrill <jason@redhat.com>
222
223 PR c++/60417
224 * typeck2.c (process_init_constructor_record): Set
225 CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.
226
227 PR c++/60415
228 PR c++/54359
229 * parser.c (cp_parser_direct_declarator): Set declarator to
230 cp_error_declarator on invalid qualified-id.
231
232 2014-03-04 Paolo Carlini <paolo.carlini@oracle.com>
233
234 PR c++/60376
235 * parser.c (cp_parser_using_declaration): Early return when
236 cp_parser_nested_name_specifier errors out.
237
238 2014-03-01 Adam Butcher <adam@jessamine.co.uk>
239
240 PR c++/60377
241 * parser.c (cp_parser_parameter_declaration_clause): Unwind generic
242 function scope on parse error in function parameter list.
243
244 2014-03-01 Paolo Carlini <paolo.carlini@oracle.com>
245
246 * method.c (implicitly_declare_fn): Remove redundant
247 DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
248 * semantics.c (is_instantiation_of_constexpr): Likewise.
249 * error.c (dump_function_decl): Likewise.
250
251 2014-03-01 Jason Merrill <jason@redhat.com>
252
253 PR c++/60379
254 * semantics.c (begin_maybe_infinite_loop): Use
255 fold_non_dependent_expr_sfinae.
256
257 2014-02-28 Jason Merrill <jason@redhat.com>
258
259 PR c++/58845
260 * typeck.c (cp_build_binary_op): Sorry on vector&&vector.
261
262 2014-02-28 Paolo Carlini <paolo.carlini@oracle.com>
263
264 PR c++/58610
265 * cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
266 * call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
267 * lambda.c (maybe_add_lambda_conv_op): Likewise.
268
269 2014-02-27 Paolo Carlini <paolo.carlini@oracle.com>
270
271 PR c++/60253
272 * call.c (convert_arg_to_ellipsis): Return error_mark_node after
273 error_at.
274
275 2014-02-27 Jason Merrill <jason@redhat.com>
276
277 PR c++/60353
278 PR c++/55877
279 * decl2.c (tentative_decl_linkage): Don't mess with functions that
280 are not yet defined.
281
282 2014-02-26 Jason Merrill <jason@redhat.com>
283
284 PR c++/60347
285 PR lto/53808
286 * class.c (clone_function_decl): Don't note_vague_linkage_fn.
287 * init.c (build_vtbl_address): Do it here.
288
289 PR c++/59231
290 PR c++/11586
291 PR c++/14710
292 PR c++/57132
293 * pt.c (struct warning_sentinel): New.
294 (tsubst_copy_and_build): Use it instead of
295 c_inhibit_evaluation_warnings.
296 * typeck.c (maybe_warn_about_useless_cast): Remove
297 c_inhibit_evaluation_warnings check.
298
299 PR c++/54440
300 * pt.c (get_template_parm_index): New.
301 (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
302 (process_template_parm): Allow bare packs in template template
303 parm template parms.
304 (coerce_template_parameter_pack): Handle fixed template template
305 parm packs and fixed packs not at the end of the parm list.
306 (coerce_template_parms): Handle template parm packs not at the end
307 of the parm list.
308 (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.
309
310 PR c++/60182
311 * pt.c (unify): Ignore alias templates when deducing a template
312 template parameter.
313
314 PR c++/60345
315 Revert:
316 DR 1571
317 * call.c (reference_binding): Recurse on user-defined conversion.
318 (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
319
320 2014-02-25 Jason Merrill <jason@redhat.com>
321
322 DR 1571
323 * call.c (reference_binding): Recurse on user-defined conversion.
324 (convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.
325
326 * call.c (print_conversion_rejection): Handle n_arg of -2.
327 (build_user_type_conversion_1): Pass it.
328
329 PR c++/55877
330 * decl2.c (no_linkage_error): Handle C++98 semantics.
331 (reset_type_linkage): Move from decl.c.
332 (reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
333 (bt_reset_linkage_2, reset_decl_linkage): New.
334 (tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
335 (cp_write_global_declarations): Move condition into no_linkage_error.
336 * decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
337 * semantics.c (expand_or_defer_fn_1): Factor out
338 tentative_decl_linkage.
339 * cp-tree.h: Adjust.
340
341 * decl2.c (finish_static_data_member_decl): Diagnose static data
342 member in unnamed class.
343 * class.c (finish_struct_anon_r): Avoid redundant diagnostic.
344
345 PR lto/53808
346 * class.c (clone_function_decl): Call note_vague_linkage_fn for
347 defaulted virtual dtor.
348
349 DR 1286
350 PR c++/60328
351 * pt.c (get_underlying_template): Fix equivalence calculation.
352
353 2014-02-25 Adam Butcher <adam@jessamine.co.uk>
354
355 PR c++/60311
356 * parser.c (function_being_declared_is_template_p): Return false when
357 processing a template parameter list.
358 (cp_parser_parameter_declaration_clause): Don't set
359 auto_is_implicit_function_template_parm_p when processing a
360 template parameter list.
361
362 * parser.c (synthesize_implicit_template_parm): Inject new template
363 argument list appropriately when a generic member function
364 of a class template is declared out-of-line.
365
366 PR c++/60065
367 * parser.c (cp_parser_direct_declarator): Don't save and
368 restore num_template_parameter_lists around call to
369 cp_parser_parameter_declaration_list.
370 (function_being_declared_is_template_p): New predicate.
371 (cp_parser_parameter_declaration_list): Use
372 function_being_declared_is_template_p as predicate for
373 inspecting current function template parameter list length
374 rather than num_template_parameter_lists.
375
376 2014-02-24 Jason Merrill <jason@redhat.com>
377
378 PR c++/60146
379 * pt.c (tsubst_omp_for_iterator): Don't let substitution of the
380 DECL_EXPR initialize a non-class iterator.
381
382 PR c++/60312
383 * parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.
384
385 2014-02-21 Jason Merrill <jason@redhat.com>
386
387 PR c++/58170
388 * parser.c (cp_parser_type_name): Always check dependency.
389 (cp_parser_type_specifier_seq): Call
390 cp_parser_parse_and_diagnose_invalid_type_name.
391
392 PR c++/60108
393 * semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.
394
395 PR c++/60185
396 * parser.c (cp_parser_default_argument): Clear
397 current_class_ptr/current_class_ref like tsubst_default_argument.
398
399 PR c++/60252
400 * lambda.c (maybe_resolve_dummy): Check lambda_function rather
401 than current_binding_level.
402
403 PR c++/60186
404 * typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.
405
406 PR c++/60187
407 * parser.c (cp_parser_enum_specifier): Call
408 check_for_bare_parameter_packs.
409
410 PR c++/59347
411 * pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
412 erroneous typedef.
413
414 PR c++/60241
415 * pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
416 of the partial instantiation, not the most general template.
417 (maybe_process_partial_specialization): Reassign everything on
418 that list.
419
420 PR c++/60216
421 * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
422 (check_explicit_specialization): Don't clone.
423
424 PR c++/60219
425 * pt.c (coerce_template_parms): Bail if argument packing fails.
426
427 PR c++/60224
428 * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
429 Don't get confused by a CONSTRUCTOR that already has a type.
430
431 PR c++/60227
432 * call.c (build_array_conv): Don't crash on VLA.
433
434 PR c++/60248
435 * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
436
437 PR c++/60252
438 * lambda.c (maybe_resolve_dummy): Don't try to capture this
439 in declaration context.
440
441 DR 1591
442 PR c++/60051
443 * pt.c (unify): Only unify if deducible. Handle 0-length list.
444
445 PR c++/60250
446 * parser.c (cp_parser_direct_declarator): Don't wrap a
447 type-dependent expression in a NOP_EXPR.
448
449 PR c++/60251
450 * lambda.c (is_normal_capture_proxy): Handle VLA capture.
451
452 PR c++/60167
453 PR c++/60222
454 PR c++/58606
455 * parser.c (cp_parser_template_argument): Restore dereference.
456 * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
457 (process_partial_specialization): Handle deref.
458 (unify): Likewise.
459
460 2014-02-21 Adam Butcher <adam@jessamine.co.uk>
461
462 PR c++/60052
463 PR c++/60053
464 * parser.c (cp_parser_parameter_declaration_list): Correctly reset
465 implicit_template_scope upon leaving an out-of-line generic member
466 function definition.
467
468 2014-02-20 Kai Tietz <ktietz@redhat.com>
469
470 PR c++/58873
471 * parser.c (cp_parser_functional_cast): Treat NULL_TREE
472 valued type argument as error_mark_node.
473
474 PR c++/58835
475 * semantics.c (finish_fname): Handle error_mark_node.
476
477 2014-02-19 Jason Merrill <jason@redhat.com>
478
479 PR c++/60046
480 * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
481 spec from template context.
482
483 2014-02-19 Jakub Jelinek <jakub@redhat.com>
484
485 PR debug/56563
486 * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
487 FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
488
489 PR c++/60267
490 * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
491
492 2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
493
494 PR c++/60225
495 * semantics.c (ensure_literal_type_for_constexpr_object): Use
496 strip_array_types.
497
498 2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
499
500 PR c++/60215
501 * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
502 During error recovery allow_non_constant may be false.
503
504 2014-02-18 Adam Butcher <adam@jessamine.co.uk>
505
506 PR c++/60190
507 * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
508 scope whenever a template parameter list has been started, independent
509 of whether the function call operator was well-formed or not.
510
511 PR c++/60064
512 * parser.c (cp_parser_member_declaration): Pop fully implicit template
513 scope for generic friend declarations as well as for non-friends.
514
515 2014-02-12 Paolo Carlini <paolo.carlini@oracle.com>
516
517 PR c++/60047
518 * method.c (implicitly_declare_fn): A constructor of a class with
519 virtual base classes isn't constexpr (7.1.5p4).
520
521 2014-02-05 Jan Hubicka <hubicka@ucw.cz
522
523 * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
524
525 2014-02-05 Jakub Jelinek <jakub@redhat.com>
526
527 PR c++/58703
528 * parser.c (cp_parser_omp_declare_reduction): Save and free
529 declarator_obstack.
530
531 2014-02-03 Marc Glisse <marc.glisse@inria.fr>
532
533 PR c++/53017
534 PR c++/59211
535 * tree.c (handle_init_priority_attribute): Call default_conversion on
536 the attribute argument.
537
538 2014-02-03 Paolo Carlini <paolo.carlini@oracle.com>
539
540 PR c++/58871
541 * method.c (synthesized_method_walk): If vbases is non-null but
542 is_empty is true, likewise don't worry about the virtual bases.
543
544 2014-02-01 Paolo Carlini <paolo.carlini@oracle.com>
545
546 PR c++/51219
547 * typeck2.c (process_init_constructor_record): Just skip unnamed
548 bit-fields.
549
550 2014-01-31 Jason Merrill <jason@redhat.com>
551
552 PR c++/59469
553 * pt.c (mark_decl_instantiated): Call mark_needed.
554
555 PR c++/58672
556 * decl2.c (handle_tls_init): Handle null init fn.
557
558 PR c++/55800
559 * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
560
561 2014-01-31 Paolo Carlini <paolo.carlini@oracle.com>
562
563 PR c++/59082
564 * class.c (build_vfield_ref): Early return error_mark_node if
565 TYPE_VFIELD (type) is null.
566 (build_base_path): Check return value of build_vfield_ref.
567
568 2014-01-31 Jason Merrill <jason@redhat.com>
569
570 PR c++/59646
571 * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
572 [ck_list]: Check for error_mark_node.
573 (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
574
575 PR c++/57043
576 * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
577 during partial ordering.
578
579 2014-01-31 Marek Polacek <polacek@redhat.com>
580
581 PR c/59963
582 * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
583
584 2014-01-30 Jason Merrill <jason@redhat.com>
585
586 PR c++/57899
587 * cp-tree.h (struct saved_scope): Add x_local_specializations.
588 (local_specializations): New macro.
589 * pt.c (local_specializations): Remove variable.
590
591 2014-01-30 Richard Sandiford <rdsandiford@googlemail.com>
592
593 PR c++/58708
594 * parser.c (make_string_pack): Use double_int::from_buffer.
595
596 2014-01-30 Marek Polacek <polacek@redhat.com>
597
598 PR c/59940
599 * typeck.c (build_ptrmemfunc1): Call convert_and_check with
600 input_location.
601 * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
602 with input_location.
603 * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
604 loc parameter.
605
606 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
607
608 PR c++/58843
609 * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
610
611 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
612
613 PR c++/58649
614 * pt.c (lookup_template_class_1): Check start_enum return value
615 for error_mark_node.
616
617 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
618
619 * decl.c (duplicate_decls, typename_hash, typename_compare):
620 Use TYPE_IDENTIFIER.
621 * error.c (dump_type): Likewise.
622 * mangle.c (dump_substitution_candidates): Likewise.
623
624 2014-01-30 Jason Merrill <jason@redhat.com>
625
626 PR c++/59633
627 * decl2.c (attributes_naming_typedef_ok): New.
628 * cp-tree.h: Declare it.
629 * decl.c (grokdeclarator): Check it.
630 * tree.c (no_linkage_check): Handle VECTOR_TYPE.
631
632 2014-01-29 Jason Merrill <jason@redhat.com>
633
634 PR c++/59707
635 * call.c (add_builtin_candidate): Catch dependent types.
636
637 PR c++/59989
638 * pt.c (expand_template_argument_pack): Correct
639 non_default_args_count calculation.
640
641 PR c++/58466
642 * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
643
644 PR c++/59956
645 * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
646 have a friend template in a class template.
647 * pt.c (tsubst_friend_function): Look through it.
648 (push_template_decl_real): A friend member template is
649 primary.
650
651 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
652
653 PR c++/58846
654 * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
655 == error_mark_node.
656
657 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
658
659 PR c++/58674
660 * pt.c (instantiate_template_1): Check for error_mark_node the second
661 argument too.
662
663 2014-01-29 Jason Merrill <jason@redhat.com>
664
665 PR c++/59916
666 * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
667 cdtor_returns_this case.
668
669 PR c++/59315
670 * decl.c (cxx_maybe_build_cleanup): Call mark_used.
671
672 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
673
674 PR c++/58702
675 * semantics.c (finish_omp_reduction_clause): Check type for
676 error_mark_node.
677
678 2014-01-28 Jason Merrill <jason@redhat.com>
679
680 PR c++/59791
681 * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
682 (tsubst_copy): Use it if lookup fails.
683
684 PR c++/59818
685 * pt.c (tsubst_function_type): Make sure we keep the same function
686 quals.
687
688 PR c++/58701
689 * semantics.c (build_anon_member_initialization): Stop walking
690 when we run out of COMPONENT_REFs.
691
692 PR c++/58632
693 * decl.c (lookup_and_check_tag): Ignore template parameters if
694 scope == ts_current.
695 * pt.c (check_template_shadow): Don't complain about the injected
696 class name.
697
698 * decl.c (duplicate_decls): Tweak.
699
700 PR c++/53756
701 * mangle.c (write_unqualified_name): Handle operator auto.
702
703 2014-01-27 Jason Merrill <jason@redhat.com>
704
705 PR c++/59823
706 Core DR 1138
707 * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
708 list-initialization. A conversion to rvalue ref that involves
709 an lvalue-rvalue conversion is bad.
710 (convert_like_real): Give helpful error message.
711
712 PR c++/54652
713 * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
714
715 PR c++/58504
716 * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
717 types.
718
719 PR c++/58606
720 * pt.c (template_parm_to_arg): Call convert_from_reference.
721 (tsubst_template_arg): Don't strip reference refs.
722
723 PR c++/58639
724 * call.c (build_aggr_conv): Reject value-initialization of reference.
725
726 PR c++/58812
727 PR c++/58651
728 * call.c (convert_like_real): Give helpful error about excess braces
729 for ck_rvalue of scalar type.
730
731 Core DR 1288
732 * call.c (reference_binding): Only elide braces if the single
733 element is reference-related.
734
735 PR c++/58814
736 * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
737 stabilizing.
738
739 PR c++/58837
740 * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
741 FUNCTION_DECL.
742
743 PR c++/59097
744 * decl.c (compute_array_index_type): Don't call
745 maybe_constant_value for a non-integral expression.
746
747 2014-01-24 Balaji V. Iyer <balaji.v.iyer@intel.com>
748
749 * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
750 flag_cilkplus.
751 * cp-gimplify.c (cp_genericize): Likewise.
752 * decl.c (grokfndecl): Likewise.
753 * parser.c (cp_parser_postfix_expression): Likewise.
754 (cp_parser_postfix_open_square_expression): Likewise.
755 (cp_parser_direct_declarator): Likewise.
756 (is_cilkplus_vector_p): Likewise.
757 (cp_parser_omp_clause_name): Likewise.
758 (cp_parser_omp_all_clauses): Likewise.
759 * pt.c (apply_late_template_attributes): Likewise.
760 * typeck.c (cp_build_array_ref): Likewise.
761 (cp_build_compound_expr): Likewise.
762 (check_return_expr): Likewise.
763
764 2014-01-24 Jason Merrill <jason@redhat.com>
765
766 PR c++/58550
767 * decl.c (grokdeclarator): Turn pedwarn about auto return type in
768 c++11 into error.
769
770 PR c++/59886
771 PR c++/59659
772 * typeck2.c (process_init_constructor_array): Don't create
773 RANGE_EXPR yet.
774
775 2014-01-24 Jakub Jelinek <jakub@redhat.com>
776
777 * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
778 handling for RANGE_ARRAY case.
779
780 2014-01-24 Paolo Carlini <paolo.carlini@oracle.com>
781
782 PR c++/57524
783 * name-lookup.c (push_using_directive): Use timevar_cond_start.
784
785 2014-01-23 Marek Polacek <polacek@redhat.com>
786
787 PR c/59846
788 * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
789
790 2014-01-23 Marek Polacek <polacek@redhat.com>
791
792 PR c/58346
793 * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
794 an empty aggregate.
795
796 2014-01-23 Jason Merrill <jason@redhat.com>
797
798 PR c++/55189
799 * cp-tree.h (struct language_function): Add infinite_loop and
800 infinite_loops.
801 (current_function_infinite_loop): New.
802 * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
803 (break_maybe_infinite_loop): New.
804 (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
805 (finish_do_stmt, finish_for_cond, finish_for_stmt)
806 (begin_range_for_stmt): Use them.
807 * decl.c (finish_function): Don't warn about missing return
808 if current_function_infinite_loop.
809 * pt.c (instantiate_decl): Copy current_function_infinite_loop.
810 * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
811
812 * call.c (build_op_delete_call): Use make_tree_vector and
813 release_tree_vector.
814
815 2014-01-23 Paolo Carlini <paolo.carlini@oracle.com>
816
817 PR c++/58980
818 * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
819 nested_name_specifier.
820
821 2014-01-23 Balaji V. Iyer <balaji.v.iyer@intel.com>
822
823 * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
824 see if there is an attribute after function decl. If so, then
825 parse them now.
826 (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
827 enabled function late parsing.
828 (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
829 attribute for a SIMD-enabled function.
830 (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
831 the function is used by SIMD-enabled function (indicated by NULL
832 pragma token). Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
833 PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
834 (cp_parser_cilk_simd_vectorlength): Modified this function to handle
835 vectorlength clause in SIMD-enabled function and #pragma SIMD's
836 vectorlength clause. Added a new bool parameter to differentiate
837 between the two.
838 (cp_parser_cilk_simd_fn_vector_attrs): New function.
839 (is_cilkplus_vector_p): Likewise.
840 (cp_parser_late_parsing_elem_fn_info): Likewise.
841 (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
842 and "vectorlength" clauses when Cilk Plus is enabled.
843 (cp_parser_omp_clause_linear): Added a new parameter of type bool
844 and emit a sorry message when step size is a parameter.
845 * parser.h (cp_parser::cilk_simd_fn_info): New field.
846 * decl.c (grokfndecl): Added flag_enable_cilkplus along with
847 flag_openmp.
848 * pt.c (apply_late_template_attributes): Likewise.
849
850 2014-01-23 Jakub Jelinek <jakub@redhat.com>
851
852 PR middle-end/58809
853 * semantics.c (finish_omp_reduction_clause): Reject
854 BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
855
856 2014-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
857
858 PR c++/59482
859 * parser.c (cp_parser_class_head): Push the class before parsing
860 the base-clause, pop after it.
861
862 2014-01-20 Eric Botcazou <ebotcazou@adacore.com>
863
864 * decl2.c (cpp_check): Revert prototype change.
865
866 2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
867
868 PR c++/59270
869 PR c++/58811
870 * init.c (build_value_init_noctor): Don't pass error_mark_node to
871 build_value_init.
872
873 2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
874
875 PR c++/59269
876 * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
877 only when errorcount == 0.
878
879 2014-01-17 Marek Polacek <polacek@redhat.com>
880
881 PR c++/59838
882 * cvt.c (ocp_convert): Don't segfault on non-existing
883 ENUM_UNDERLYING_TYPE.
884
885 2014-01-16 Jason Merrill <jason@redhat.com>
886
887 PR c++/59821
888 * tree.c (bot_manip): Update the location of builtin_LINE and
889 builtin_FILE calls.
890
891 2014-01-14 Jason Merrill <jason@redhat.com>
892
893 PR c++/59659
894 * typeck2.c (massage_init_elt): New.
895 (process_init_constructor_record)
896 (process_init_constructor_union): Use it.
897 (process_init_constructor_array): Use it. Use RANGE_EXPR.
898 (split_nonconstant_init_1): Handle it.
899 * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
900
901 2014-01-09 Balaji V. Iyer <balaji.v.iyer@intel.com>
902
903 PR c++/59631
904 * parser.c (cp_parser_postfix_expression): Added a new if-statement
905 and replaced an existing if-statement with else-if statement.
906 Changed an existing error message wording to match the one from the C
907 parser.
908
909 2014-01-08 Jason Merrill <jason@redhat.com>
910
911 PR c++/59614
912 * class.c (abi_tag_data): Add tags field.
913 (check_abi_tags): Initialize it.
914 (find_abi_tags_r): Support collecting missing tags.
915 (mark_type_abi_tags): Don't look at template args.
916 (inherit_targ_abi_tags): New.
917 (check_bases_and_members): Use it.
918 * cp-tree.h (ABI_TAG_IMPLICIT): New.
919 * mangle.c (write_abi_tags): Check it.
920
921 2014-01-07 Jason Merrill <jason@redhat.com>
922
923 PR c++/58856
924 * pt.c (num_innermost_template_parms): New.
925 (get_underlying_template): Use it.
926
927 PR c++/58965
928 * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
929
930 2014-01-07 Paolo Carlini <paolo.carlini@oracle.com>
931
932 * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
933 the letter of 20.11.6 about Base and Derived naming the same
934 class type modulo cv-qualifiers.
935
936 2014-01-06 Adam Butcher <adam@jessamine.co.uk>
937
938 PR c++/59635
939 * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
940 function as unimplemented for generic lambdas with varargs.
941
942 PR c++/59636
943 * parser.c (cp_parser_template_parameter): Early out with
944 error_mark_node if parameter declaration was not parsed.
945
946 PR c++/59629
947 * parser.c (cp_parser_lambda_expression): Save/reset/restore
948 auto_is_implicit_function_template_parm_p around lambda body.
949
950 PR c++/59638
951 * parser.c (cp_parser_init_declarator): Undo fully implicit
952 template parameter list when declarator is not a function.
953
954 2014-01-03 Marc Glisse <marc.glisse@inria.fr>
955
956 PR c++/58950
957 * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
958
959 2014-01-03 Tobias Burnus <burnus@net-b.de>
960
961 PR c++/58567
962 * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
963
964 2014-01-03 Paolo Carlini <paolo.carlini@oracle.com>
965
966 Core DR 1442
967 PR c++/59165
968 * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
969 as include_std to perform_koenig_lookup.
970 (cp_parser_postfix_expression): Adjust.
971 * pt.c (tsubst_copy_and_build): Likewise.
972 * semantics.c (perform_koenig_lookup): Remove bool parameter.
973 (omp_reduction_lookup): Adjust.
974 * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
975 (lookup_arg_dependent): Likewise.
976 (lookup_function_nonclass): Adjust.
977 * name-lookup.h: Adjust declaration.
978 * cp-tree.h: Likewise.
979
980 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
981
982 PR c++/59087
983 * parser.c (cp_parser_userdef_numeric_literal): Mention
984 -fext-numeric-literals in the message.
985
986 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
987
988 PR c++/59641
989 * call.c (build_conditional_expr_1): Check the return value of
990 force_rvalue.
991
992 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
993
994 * call.c (convert_like_real): Check complain.
995
996 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
997
998 PR c++/59378
999 * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
1000 in templates.
1001
1002 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
1003
1004 Update copyright years
1005
1006 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
1007
1008 * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
1009 the standard form for the copyright notice.
1010 \f
1011 Copyright (C) 2014 Free Software Foundation, Inc.
1012
1013 Copying and distribution of this file, with or without modification,
1014 are permitted in any medium without royalty provided the copyright
1015 notice and this notice are preserved.