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