re PR c++/60227 ([C++11] ICE using brace-enclosed initializer list to initialize...
[gcc.git] / gcc / cp / ChangeLog
1 2014-02-21 Jason Merrill <jason@redhat.com>
2
3 PR c++/60216
4 * pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
5 (check_explicit_specialization): Don't clone.
6
7 PR c++/60219
8 * pt.c (coerce_template_parms): Bail if argument packing fails.
9
10 PR c++/60224
11 * decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
12 Don't get confused by a CONSTRUCTOR that already has a type.
13
14 PR c++/60227
15 * call.c (build_array_conv): Don't crash on VLA.
16
17 PR c++/60248
18 * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.
19
20 PR c++/60252
21 * lambda.c (maybe_resolve_dummy): Don't try to capture this
22 in declaration context.
23
24 DR 1591
25 PR c++/60051
26 * pt.c (unify): Only unify if deducible. Handle 0-length list.
27
28 PR c++/60250
29 * parser.c (cp_parser_direct_declarator): Don't wrap a
30 type-dependent expression in a NOP_EXPR.
31
32 PR c++/60251
33 * lambda.c (is_normal_capture_proxy): Handle VLA capture.
34
35 PR c++/60167
36 PR c++/60222
37 PR c++/58606
38 * parser.c (cp_parser_template_argument): Restore dereference.
39 * pt.c (template_parm_to_arg): Dereference non-pack expansions too.
40 (process_partial_specialization): Handle deref.
41 (unify): Likewise.
42
43 2014-02-21 Adam Butcher <adam@jessamine.co.uk>
44
45 PR c++/60052
46 PR c++/60053
47 * parser.c (cp_parser_parameter_declaration_list): Correctly reset
48 implicit_template_scope upon leaving an out-of-line generic member
49 function definition.
50
51 2014-02-20 Kai Tietz <ktietz@redhat.com>
52
53 PR c++/58873
54 * parser.c (cp_parser_functional_cast): Treat NULL_TREE
55 valued type argument as error_mark_node.
56
57 PR c++/58835
58 * semantics.c (finish_fname): Handle error_mark_node.
59
60 2014-02-19 Jason Merrill <jason@redhat.com>
61
62 PR c++/60046
63 * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
64 spec from template context.
65
66 2014-02-19 Jakub Jelinek <jakub@redhat.com>
67
68 PR debug/56563
69 * cp-objcp-common.c (cp_function_decl_explicit_p): Remove
70 FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.
71
72 PR c++/60267
73 * pt.c (tsubst_expr): Handle ANNOTATE_EXPR.
74
75 2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
76
77 PR c++/60225
78 * semantics.c (ensure_literal_type_for_constexpr_object): Use
79 strip_array_types.
80
81 2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
82
83 PR c++/60215
84 * semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
85 During error recovery allow_non_constant may be false.
86
87 2014-02-18 Adam Butcher <adam@jessamine.co.uk>
88
89 PR c++/60190
90 * parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
91 scope whenever a template parameter list has been started, independent
92 of whether the function call operator was well-formed or not.
93
94 PR c++/60064
95 * parser.c (cp_parser_member_declaration): Pop fully implicit template
96 scope for generic friend declarations as well as for non-friends.
97
98 2014-02-12 Paolo Carlini <paolo.carlini@oracle.com>
99
100 PR c++/60047
101 * method.c (implicitly_declare_fn): A constructor of a class with
102 virtual base classes isn't constexpr (7.1.5p4).
103
104 2014-02-05 Jan Hubicka <hubicka@ucw.cz
105
106 * parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.
107
108 2014-02-05 Jakub Jelinek <jakub@redhat.com>
109
110 PR c++/58703
111 * parser.c (cp_parser_omp_declare_reduction): Save and free
112 declarator_obstack.
113
114 2014-02-03 Marc Glisse <marc.glisse@inria.fr>
115
116 PR c++/53017
117 PR c++/59211
118 * tree.c (handle_init_priority_attribute): Call default_conversion on
119 the attribute argument.
120
121 2014-02-03 Paolo Carlini <paolo.carlini@oracle.com>
122
123 PR c++/58871
124 * method.c (synthesized_method_walk): If vbases is non-null but
125 is_empty is true, likewise don't worry about the virtual bases.
126
127 2014-02-01 Paolo Carlini <paolo.carlini@oracle.com>
128
129 PR c++/51219
130 * typeck2.c (process_init_constructor_record): Just skip unnamed
131 bit-fields.
132
133 2014-01-31 Jason Merrill <jason@redhat.com>
134
135 PR c++/59469
136 * pt.c (mark_decl_instantiated): Call mark_needed.
137
138 PR c++/58672
139 * decl2.c (handle_tls_init): Handle null init fn.
140
141 PR c++/55800
142 * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.
143
144 2014-01-31 Paolo Carlini <paolo.carlini@oracle.com>
145
146 PR c++/59082
147 * class.c (build_vfield_ref): Early return error_mark_node if
148 TYPE_VFIELD (type) is null.
149 (build_base_path): Check return value of build_vfield_ref.
150
151 2014-01-31 Jason Merrill <jason@redhat.com>
152
153 PR c++/59646
154 * call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
155 [ck_list]: Check for error_mark_node.
156 (build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.
157
158 PR c++/57043
159 * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
160 during partial ordering.
161
162 2014-01-31 Marek Polacek <polacek@redhat.com>
163
164 PR c/59963
165 * typeck.c (build_function_call_vec): Add dummy arg_loc parameter.
166
167 2014-01-30 Jason Merrill <jason@redhat.com>
168
169 PR c++/57899
170 * cp-tree.h (struct saved_scope): Add x_local_specializations.
171 (local_specializations): New macro.
172 * pt.c (local_specializations): Remove variable.
173
174 2014-01-30 Richard Sandiford <rdsandiford@googlemail.com>
175
176 PR c++/58708
177 * parser.c (make_string_pack): Use double_int::from_buffer.
178
179 2014-01-30 Marek Polacek <polacek@redhat.com>
180
181 PR c/59940
182 * typeck.c (build_ptrmemfunc1): Call convert_and_check with
183 input_location.
184 * cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
185 with input_location.
186 * call.c (build_conditional_expr_1): Call unsafe_conversion_p with
187 loc parameter.
188
189 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
190
191 PR c++/58843
192 * typeck.c (lookup_destructor): Check dtor_type for error_mark_node.
193
194 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
195
196 PR c++/58649
197 * pt.c (lookup_template_class_1): Check start_enum return value
198 for error_mark_node.
199
200 2014-01-30 Paolo Carlini <paolo.carlini@oracle.com>
201
202 * decl.c (duplicate_decls, typename_hash, typename_compare):
203 Use TYPE_IDENTIFIER.
204 * error.c (dump_type): Likewise.
205 * mangle.c (dump_substitution_candidates): Likewise.
206
207 2014-01-30 Jason Merrill <jason@redhat.com>
208
209 PR c++/59633
210 * decl2.c (attributes_naming_typedef_ok): New.
211 * cp-tree.h: Declare it.
212 * decl.c (grokdeclarator): Check it.
213 * tree.c (no_linkage_check): Handle VECTOR_TYPE.
214
215 2014-01-29 Jason Merrill <jason@redhat.com>
216
217 PR c++/59707
218 * call.c (add_builtin_candidate): Catch dependent types.
219
220 PR c++/59989
221 * pt.c (expand_template_argument_pack): Correct
222 non_default_args_count calculation.
223
224 PR c++/58466
225 * pt.c (unify_pack_expansion): Call expand_template_argument_pack.
226
227 PR c++/59956
228 * friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
229 have a friend template in a class template.
230 * pt.c (tsubst_friend_function): Look through it.
231 (push_template_decl_real): A friend member template is
232 primary.
233
234 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
235
236 PR c++/58846
237 * decl.c (get_dso_handle_node): Don't crash if dso_handle_node
238 == error_mark_node.
239
240 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
241
242 PR c++/58674
243 * pt.c (instantiate_template_1): Check for error_mark_node the second
244 argument too.
245
246 2014-01-29 Jason Merrill <jason@redhat.com>
247
248 PR c++/59916
249 * optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
250 cdtor_returns_this case.
251
252 PR c++/59315
253 * decl.c (cxx_maybe_build_cleanup): Call mark_used.
254
255 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
256
257 PR c++/58702
258 * semantics.c (finish_omp_reduction_clause): Check type for
259 error_mark_node.
260
261 2014-01-28 Jason Merrill <jason@redhat.com>
262
263 PR c++/59791
264 * pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
265 (tsubst_copy): Use it if lookup fails.
266
267 PR c++/59818
268 * pt.c (tsubst_function_type): Make sure we keep the same function
269 quals.
270
271 PR c++/58701
272 * semantics.c (build_anon_member_initialization): Stop walking
273 when we run out of COMPONENT_REFs.
274
275 PR c++/58632
276 * decl.c (lookup_and_check_tag): Ignore template parameters if
277 scope == ts_current.
278 * pt.c (check_template_shadow): Don't complain about the injected
279 class name.
280
281 * decl.c (duplicate_decls): Tweak.
282
283 PR c++/53756
284 * mangle.c (write_unqualified_name): Handle operator auto.
285
286 2014-01-27 Jason Merrill <jason@redhat.com>
287
288 PR c++/59823
289 Core DR 1138
290 * call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
291 list-initialization. A conversion to rvalue ref that involves
292 an lvalue-rvalue conversion is bad.
293 (convert_like_real): Give helpful error message.
294
295 PR c++/54652
296 * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.
297
298 PR c++/58504
299 * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for
300 types.
301
302 PR c++/58606
303 * pt.c (template_parm_to_arg): Call convert_from_reference.
304 (tsubst_template_arg): Don't strip reference refs.
305
306 PR c++/58639
307 * call.c (build_aggr_conv): Reject value-initialization of reference.
308
309 PR c++/58812
310 PR c++/58651
311 * call.c (convert_like_real): Give helpful error about excess braces
312 for ck_rvalue of scalar type.
313
314 Core DR 1288
315 * call.c (reference_binding): Only elide braces if the single
316 element is reference-related.
317
318 PR c++/58814
319 * typeck.c (cp_build_modify_expr): Make the RHS an rvalue before
320 stabilizing.
321
322 PR c++/58837
323 * typeck.c (cp_truthvalue_conversion): Use explicit comparison for
324 FUNCTION_DECL.
325
326 PR c++/59097
327 * decl.c (compute_array_index_type): Don't call
328 maybe_constant_value for a non-integral expression.
329
330 2014-01-24 Balaji V. Iyer <balaji.v.iyer@intel.com>
331
332 * call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
333 flag_cilkplus.
334 * cp-gimplify.c (cp_genericize): Likewise.
335 * decl.c (grokfndecl): Likewise.
336 * parser.c (cp_parser_postfix_expression): Likewise.
337 (cp_parser_postfix_open_square_expression): Likewise.
338 (cp_parser_direct_declarator): Likewise.
339 (is_cilkplus_vector_p): Likewise.
340 (cp_parser_omp_clause_name): Likewise.
341 (cp_parser_omp_all_clauses): Likewise.
342 * pt.c (apply_late_template_attributes): Likewise.
343 * typeck.c (cp_build_array_ref): Likewise.
344 (cp_build_compound_expr): Likewise.
345 (check_return_expr): Likewise.
346
347 2014-01-24 Jason Merrill <jason@redhat.com>
348
349 PR c++/58550
350 * decl.c (grokdeclarator): Turn pedwarn about auto return type in
351 c++11 into error.
352
353 PR c++/59886
354 PR c++/59659
355 * typeck2.c (process_init_constructor_array): Don't create
356 RANGE_EXPR yet.
357
358 2014-01-24 Jakub Jelinek <jakub@redhat.com>
359
360 * typeck2.c (split_nonconstant_init_1): Fix num_split_elts
361 handling for RANGE_ARRAY case.
362
363 2014-01-24 Paolo Carlini <paolo.carlini@oracle.com>
364
365 PR c++/57524
366 * name-lookup.c (push_using_directive): Use timevar_cond_start.
367
368 2014-01-23 Marek Polacek <polacek@redhat.com>
369
370 PR c/59846
371 * typeck.c (cp_build_binary_op): Pass location to shorten_compare.
372
373 2014-01-23 Marek Polacek <polacek@redhat.com>
374
375 PR c/58346
376 * typeck.c (pointer_diff): Give an error on arithmetic on pointer to
377 an empty aggregate.
378
379 2014-01-23 Jason Merrill <jason@redhat.com>
380
381 PR c++/55189
382 * cp-tree.h (struct language_function): Add infinite_loop and
383 infinite_loops.
384 (current_function_infinite_loop): New.
385 * semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
386 (break_maybe_infinite_loop): New.
387 (finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
388 (finish_do_stmt, finish_for_cond, finish_for_stmt)
389 (begin_range_for_stmt): Use them.
390 * decl.c (finish_function): Don't warn about missing return
391 if current_function_infinite_loop.
392 * pt.c (instantiate_decl): Copy current_function_infinite_loop.
393 * parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.
394
395 * call.c (build_op_delete_call): Use make_tree_vector and
396 release_tree_vector.
397
398 2014-01-23 Paolo Carlini <paolo.carlini@oracle.com>
399
400 PR c++/58980
401 * parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as
402 nested_name_specifier.
403
404 2014-01-23 Balaji V. Iyer <balaji.v.iyer@intel.com>
405
406 * parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
407 see if there is an attribute after function decl. If so, then
408 parse them now.
409 (cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
410 enabled function late parsing.
411 (cp_parser_gnu_attribute_list): Parse all the tokens for the vector
412 attribute for a SIMD-enabled function.
413 (cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
414 the function is used by SIMD-enabled function (indicated by NULL
415 pragma token). Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
416 PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
417 (cp_parser_cilk_simd_vectorlength): Modified this function to handle
418 vectorlength clause in SIMD-enabled function and #pragma SIMD's
419 vectorlength clause. Added a new bool parameter to differentiate
420 between the two.
421 (cp_parser_cilk_simd_fn_vector_attrs): New function.
422 (is_cilkplus_vector_p): Likewise.
423 (cp_parser_late_parsing_elem_fn_info): Likewise.
424 (cp_parser_omp_clause_name): Added a check for "mask", "nomask"
425 and "vectorlength" clauses when Cilk Plus is enabled.
426 (cp_parser_omp_clause_linear): Added a new parameter of type bool
427 and emit a sorry message when step size is a parameter.
428 * parser.h (cp_parser::cilk_simd_fn_info): New field.
429 * decl.c (grokfndecl): Added flag_enable_cilkplus along with
430 flag_openmp.
431 * pt.c (apply_late_template_attributes): Likewise.
432
433 2014-01-23 Jakub Jelinek <jakub@redhat.com>
434
435 PR middle-end/58809
436 * semantics.c (finish_omp_reduction_clause): Reject
437 BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.
438
439 2014-01-22 Ville Voutilainen <ville.voutilainen@gmail.com>
440
441 PR c++/59482
442 * parser.c (cp_parser_class_head): Push the class before parsing
443 the base-clause, pop after it.
444
445 2014-01-20 Eric Botcazou <ebotcazou@adacore.com>
446
447 * decl2.c (cpp_check): Revert prototype change.
448
449 2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
450
451 PR c++/59270
452 PR c++/58811
453 * init.c (build_value_init_noctor): Don't pass error_mark_node to
454 build_value_init.
455
456 2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
457
458 PR c++/59269
459 * init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
460 only when errorcount == 0.
461
462 2014-01-17 Marek Polacek <polacek@redhat.com>
463
464 PR c++/59838
465 * cvt.c (ocp_convert): Don't segfault on non-existing
466 ENUM_UNDERLYING_TYPE.
467
468 2014-01-16 Jason Merrill <jason@redhat.com>
469
470 PR c++/59821
471 * tree.c (bot_manip): Update the location of builtin_LINE and
472 builtin_FILE calls.
473
474 2014-01-14 Jason Merrill <jason@redhat.com>
475
476 PR c++/59659
477 * typeck2.c (massage_init_elt): New.
478 (process_init_constructor_record)
479 (process_init_constructor_union): Use it.
480 (process_init_constructor_array): Use it. Use RANGE_EXPR.
481 (split_nonconstant_init_1): Handle it.
482 * semantics.c (cxx_eval_vec_init_1): Use force_rvalue.
483
484 2014-01-09 Balaji V. Iyer <balaji.v.iyer@intel.com>
485
486 PR c++/59631
487 * parser.c (cp_parser_postfix_expression): Added a new if-statement
488 and replaced an existing if-statement with else-if statement.
489 Changed an existing error message wording to match the one from the C
490 parser.
491
492 2014-01-08 Jason Merrill <jason@redhat.com>
493
494 PR c++/59614
495 * class.c (abi_tag_data): Add tags field.
496 (check_abi_tags): Initialize it.
497 (find_abi_tags_r): Support collecting missing tags.
498 (mark_type_abi_tags): Don't look at template args.
499 (inherit_targ_abi_tags): New.
500 (check_bases_and_members): Use it.
501 * cp-tree.h (ABI_TAG_IMPLICIT): New.
502 * mangle.c (write_abi_tags): Check it.
503
504 2014-01-07 Jason Merrill <jason@redhat.com>
505
506 PR c++/58856
507 * pt.c (num_innermost_template_parms): New.
508 (get_underlying_template): Use it.
509
510 PR c++/58965
511 * mangle.c (write_guarded_var_name): Handle null DECL_NAME.
512
513 2014-01-07 Paolo Carlini <paolo.carlini@oracle.com>
514
515 * semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
516 the letter of 20.11.6 about Base and Derived naming the same
517 class type modulo cv-qualifiers.
518
519 2014-01-06 Adam Butcher <adam@jessamine.co.uk>
520
521 PR c++/59635
522 * lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
523 function as unimplemented for generic lambdas with varargs.
524
525 PR c++/59636
526 * parser.c (cp_parser_template_parameter): Early out with
527 error_mark_node if parameter declaration was not parsed.
528
529 PR c++/59629
530 * parser.c (cp_parser_lambda_expression): Save/reset/restore
531 auto_is_implicit_function_template_parm_p around lambda body.
532
533 PR c++/59638
534 * parser.c (cp_parser_init_declarator): Undo fully implicit
535 template parameter list when declarator is not a function.
536
537 2014-01-03 Marc Glisse <marc.glisse@inria.fr>
538
539 PR c++/58950
540 * cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.
541
542 2014-01-03 Tobias Burnus <burnus@net-b.de>
543
544 PR c++/58567
545 * pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.
546
547 2014-01-03 Paolo Carlini <paolo.carlini@oracle.com>
548
549 Core DR 1442
550 PR c++/59165
551 * parser.c (cp_parser_perform_range_for_lookup): Don't pass true
552 as include_std to perform_koenig_lookup.
553 (cp_parser_postfix_expression): Adjust.
554 * pt.c (tsubst_copy_and_build): Likewise.
555 * semantics.c (perform_koenig_lookup): Remove bool parameter.
556 (omp_reduction_lookup): Adjust.
557 * name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
558 (lookup_arg_dependent): Likewise.
559 (lookup_function_nonclass): Adjust.
560 * name-lookup.h: Adjust declaration.
561 * cp-tree.h: Likewise.
562
563 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
564
565 PR c++/59087
566 * parser.c (cp_parser_userdef_numeric_literal): Mention
567 -fext-numeric-literals in the message.
568
569 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
570
571 PR c++/59641
572 * call.c (build_conditional_expr_1): Check the return value of
573 force_rvalue.
574
575 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
576
577 * call.c (convert_like_real): Check complain.
578
579 2014-01-02 Marc Glisse <marc.glisse@inria.fr>
580
581 PR c++/59378
582 * typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
583 in templates.
584
585 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
586
587 Update copyright years
588
589 2014-01-02 Richard Sandiford <rdsandiford@googlemail.com>
590
591 * cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
592 the standard form for the copyright notice.
593 \f
594 Copyright (C) 2014 Free Software Foundation, Inc.
595
596 Copying and distribution of this file, with or without modification,
597 are permitted in any medium without royalty provided the copyright
598 notice and this notice are preserved.