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