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