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