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