re PR c++/47999 ([C++0x] auto type deduction works incorrectly in a function template)
[gcc.git] / gcc / cp / ChangeLog
1 2011-03-16 Jason Merrill <jason@redhat.com>
2
3 PR c++/47999
4 * semantics.c (finish_call_expr): Preserve reference semantics
5 in templates.
6
7 * call.c (convert_default_arg): Use LOOKUP_IMPLICIT.
8
9 2011-03-16 Jakub Jelinek <jakub@redhat.com>
10
11 * cp-objcp-common.c (cp_function_decl_explicit_p): Don't crash if
12 DECL_LANG_SPECIFIC is NULL.
13
14 2011-03-15 Jason Merrill <jason@redhat.com>
15
16 Core 1074
17 * pt.c (value_dependent_expression_p) [NOEXCEPT_EXPR]: Don't
18 check value_dependent_expression_p on the operand.
19
20 * semantics.c (push_cx_call_context): Return bool.
21 (cxx_eval_call_expression): Handle excess depth.
22
23 Core 1191
24 * method.c (synthesized_method_walk): Cleanups don't affect the
25 triviality of a constructor, but do affect deletion and exception
26 specification.
27
28 2011-03-15 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
29
30 * decl2.c (cp_check_const_attributes): New.
31 (cplus_decl_attributes): Call cp_check_const_attributes.
32
33 2011-03-15 Jason Merrill <jason@redhat.com>
34
35 PR c++/34758
36 * call.c (convert_default_arg): Use DECL_ORIGIN of fn. Check for
37 recursion first.
38 (push_defarg_context, pop_defarg_context): New.
39 * parser.c (cp_parser_late_parsing_default_args): Use them.
40 * cp-tree.h: Declare them.
41
42 2011-03-11 Dodji Seketeli <dodji@redhat.com>
43
44 * call.c (add_builtin_candidate)<case INDIRECT_REF>: The type of
45 the argument of the indirection operator should not be dependent.
46 Fix the comment.
47
48 2011-03-11 Jason Merrill <jason@redhat.com>
49
50 PR c++/47125
51 * pt.c (tsubst) [TYPENAME_TYPE]: Only give errors if tf_error.
52
53 PR c++/47144
54 * parser.c (cp_parser_template_type_arg): Set
55 type_definition_forbidden_message.
56
57 PR c++/47808
58 * decl.c (compute_array_index_type): Discard folding
59 if it didn't produce a constant.
60
61 2011-03-11 Jakub Jelinek <jakub@redhat.com>
62
63 PR c++/48035
64 * init.c (build_zero_init_1): Extracted from build_zero_init.
65 Add FIELD_SIZE argument, if non-NULL and field bit_position
66 as not smaller than that, don't add that field's initializer.
67 Pass DECL_SIZE as last argument to build_zero_init_1
68 for DECL_FIELD_IS_BASE fields.
69 (build_zero_init): Use build_zero_init_1.
70
71 2011-03-10 Jason Merrill <jason@redhat.com>
72
73 PR c++/48029
74 * pt.c (iterative_hash_template_arg): Remove special case for
75 ARRAY_TYPE.
76
77 PR c++/47198
78 * parser.c (cp_parser_single_declaration): Just return if
79 cp_parser_parse_and_diagnose_invalid_type_name complained.
80
81 2011-03-09 Jason Merrill <jason@redhat.com>
82
83 PR c++/44629
84 * pt.c (unify): An unresolved overload is a nondeduced context.
85
86 2011-03-09 Martin Jambor <mjambor@suse.cz>
87
88 PR tree-optimization/47714
89 * method.c (use_thunk): Clear addressable flag of thunk arguments.
90
91 2011-03-08 Dodji Seketeli <dodji@redhat.com>
92
93 PR c++/47705
94 * pt.c (convert_nontype_argument): Only call decay_conversion on
95 arrays.
96
97 2011-03-08 Jason Merrill <jason@redhat.com>
98
99 PR c++/47488
100 * mangle.c (write_template_arg_literal) [STRING_CST]: Sorry.
101
102 PR c++/47705
103 * pt.c (convert_nontype_argument): Don't crash on non-pointer
104 argument to pointer parameter.
105
106 PR c++/45651
107 * pt.c (instantiate_decl): Don't clear DECL_INTERFACE_KNOWN on
108 !TREE_PUBLIC decls.
109
110 2011-03-08 Dodji Seketeli <dodji@redhat.com>
111
112 PR c++/47957
113 * name-lookup.c (binding_to_template_parms_of_scope_p): Only
114 consider scopes of primary template definitions. Adjust comments.
115
116 2011-03-07 Jason Merrill <jason@redhat.com>
117
118 PR c++/48003
119 * pt.c (convert_nontype_argument): Fix -fpermissive allowing
120 integer overflow.
121 * semantics.c (potential_constant_expression_1): Check TREE_OVERFLOW.
122
123 PR c++/48015
124 * init.c (constant_value_1): Always require init to be TREE_CONSTANT.
125
126 PR c++/48008
127 * mangle.c (write_type): Strip cv-quals from FUNCTION_TYPE here.
128 (write_CV_qualifiers_for_type): Not here.
129
130 2011-03-06 Joseph Myers <joseph@codesourcery.com>
131
132 * lang-specs.h: Match -save-temps* instead of -save-temps.
133
134 2011-03-05 Jason Merrill <jason@redhat.com>
135
136 * mangle.c (write_expression): Change ABI v6 to v5.
137 (write_type): Likewise.
138
139 2011-03-04 Jan Hubicka <jh@suse.cz>
140
141 PR lto/47497
142 * optimize.c (maybe_clone_body): Update call of cgraph_same_body_alias
143 and cgraph_add_thunk.
144 * method.c (make_alias_for_thunk, use_thunk): Likewise.
145 * mangle.c (mangle_decl): Likewise.
146
147 2011-03-04 Jason Merrill <jason@redhat.com>
148
149 PR c++/47971
150 * pt.c (tsubst_copy_and_build) [PSEUDO_DTOR_EXPR]: Use tsubst for type.
151 (tsubst_copy) [default]: Just return t if !ENABLE_CHECKING.
152
153 PR c++/46220
154 * search.c (check_final_overrider): Allow pointer to same incomplete
155 class type with different cv-quals.
156
157 2011-03-03 Paolo Carlini <paolo.carlini@oracle.com>
158
159 PR c++/47974
160 * pt.c (tsubst_template_args): Check argument t for error_mark_node.
161
162 2011-03-03 Jason Merrill <jason@redhat.com>
163
164 PR c++/47950
165 * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
166
167 2011-03-02 Jason Merrill <jason@redhat.com>
168
169 PR c++/47950
170 * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
171
172 PR c++/47774
173 * tree.c (build_vec_init_elt): Split out from...
174 (build_vec_init_expr): ...here.
175 (diagnose_non_constexpr_vec_init): New fn.
176 * semantics.c (potential_constant_expression_1): Use it.
177 * cp-tree.h: Declare it.
178
179 2011-03-01 Jason Merrill <jason@redhat.com>
180
181 PR c++/46159
182 * parser.c (cp_parser_primary_expression): Don't warn about a
183 failed tentative parse.
184
185 PR c++/47200
186 * semantics.c (cxx_bind_parameters_in_call): Don't call
187 adjust_temp_type on non-constant args.
188
189 PR c++/47851
190 * call.c (standard_conversion): Provide requested cv-quals on
191 class rvalue conversion.
192
193 PR c++/46282
194 * decl2.c (grokbitfield): Handle type-dependent width.
195
196 2011-02-28 Jason Merrill <jason@redhat.com>
197
198 PR c++/47873
199 * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
200 after checking for a non-thunk.
201
202 2011-02-26 Jason Merrill <jason@redhat.com>
203
204 PR c++/47904
205 * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
206 * pt.c (iterative_hash_template_arg): And hash it.
207
208 PR c++/47897
209 * semantics.c (non_const_var_error): Split out from...
210 (cxx_eval_constant_expression): ...here.
211 (potential_constant_expression_1) [VAR_DECL]: Use it.
212 Allow dependent variables.
213
214 2011-02-24 Jason Merrill <jason@redhat.com>
215
216 * parser.c (cp_parser_constant_expression): Set
217 non_integral_constant_expression correctly for C++0x too.
218 (cp_parser_static_assert): Allow non-constant expression.
219 (cp_parser_direct_declarator): Expect non_constant_p to be set
220 properly for C++0x.
221 * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
222 * semantics.c (maybe_constant_value): Check type_unknown_p too.
223 (potential_rvalue_constant_expression): New.
224 (require_potential_rvalue_constant_expression): New.
225
226 2011-02-23 Jason Merrill <jason@redhat.com>
227
228 * cp-tree.h (DECL_PARM_LEVEL): New.
229 (struct lang_decl_parm): Add level field.
230 * name-lookup.c (function_parm_depth): New fn.
231 * name-lookup.h: Declare it.
232 * parser.c (cp_parser_parameter_declaration_list): Use it.
233 * mangle.c (struct globals): Add parm_depth field.
234 (write_bare_function_type): Adjust it.
235 (write_expression): Include the level delta in PARM_DECL mangling
236 for abi >= 6.
237
238 * semantics.c (finish_decltype_type): Remove shortcut for decltype
239 of id-expression.
240 * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
241
242 2011-02-23 Nathan Froyd <froydnj@codesourcery.com>
243
244 PR c++/46868
245 * parser.c (cp_parser_class_specifier): Require a closing brace
246 to attempt error recovery.
247
248 2011-02-23 Jakub Jelinek <jakub@redhat.com>
249
250 PR c++/47833
251 * pt.c (struct pending_template): Add chain_next GTY option.
252 * decl.c (struct named_label_use_entry): Likewise.
253
254 2011-02-22 Paolo Carlini <paolo.carlini@oracle.com>
255
256 PR c++/47242
257 * semantics.c (build_lambda_object): Bail out if a field is
258 error_mark_node.
259
260 2011-02-22 Dodji Seketeli <dodji@redhat.com>
261
262 PR c++/47666
263 * class.c (dfs_declare_virt_assop_and_dtor)
264 (declare_virt_assop_and_dtor): New static functions.
265 (add_implicitly_declared_members): Use
266 declare_virt_assop_and_dtor.
267
268 2011-02-21 Jason Merrill <jason@redhat.com>
269
270 PR c++/47207
271 * decl2.c (decl_constant_var_p): A constexpr var needs an
272 initializer to be constant.
273 * semantics.c (cxx_eval_constant_expression): Complain about
274 constexpr var used in its own initializer.
275 * call.c (set_up_extended_ref_temp): Set
276 DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
277
278 2011-02-20 Jason Merrill <jason@redhat.com>
279
280 PR c++/47199
281 * semantics.c (cxx_eval_call_expression): Call
282 cxx_eval_constant_expression in trivial shortcut.
283
284 PR c++/46831
285 * call.c (convert_class_to_reference): Don't try to set up a
286 second conv sequence for non-viable candidates.
287
288 PR c++/47703
289 * error.c (location_of): Handle non-tagged types.
290
291 PR c++/46472
292 * method.c (process_subob_fn): Instantiate constexpr templates.
293 * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
294
295 2011-02-20 Dodji Seketeli <dodji@redhat.com>
296
297 PR c++/46394
298 * pt.c (tsubst_pack_expansion): do not use
299 cp_tree_equal/same_type_p to detect an expansion of a parameter
300 pack.
301
302 2011-02-19 Jason Merrill <jason@redhat.com>
303
304 PR c++/47503
305 * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
306
307 2011-02-18 Paolo Carlini <paolo.carlini@oracle.com>
308
309 PR c++/47795
310 * semantics.c (finish_non_static_data_member): Early return if
311 object is error_mark_node.
312
313 2011-02-18 Dodji Seketeli <dodji@redhat.com>
314
315 PR c++/47208
316 * pt.c (do_auto_deduction): Do not mention error_mark_node in
317 diagnostics.
318 * semantics.c (finish_id_expression): Do not pass erroneous decl
319 to decl_constant_var_p.
320
321 2011-02-17 Jakub Jelinek <jakub@redhat.com>
322
323 PR c++/47783
324 * cvt.c (convert_from_reference): Call mark_exp_read.
325
326 2011-02-11 Dodji Seketeli <dodji@redhat.com>
327
328 PR c++/47172
329 * pt.c (finish_call_expr): Consider a call expression that has a
330 dependent "this" pointer as being dependent. Add comments.
331 (dependent_type_p, type_dependent_expression_p): Update comments.
332
333 2011-02-16 Dodji Seketeli <dodji@redhat.com>
334
335 PR c++/47326
336 * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
337 expansion arguments are not evaluated.
338
339 2011-02-16 Jakub Jelinek <jakub@redhat.com>
340
341 PR c++/47704
342 * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
343 instead of TYPE_LANG_FLAG_3.
344 * pt.c (lookup_template_class): Copy over
345 ENUM_FIXED_UNDERLYING_TYPE_P.
346
347 2011-02-15 Jason Merrill <jason@redhat.com>
348
349 PR c++/46807
350 * method.c (synthesized_method_walk): Always exit early for
351 trivial fn in C++98 mode.
352
353 2011-02-14 Jason Merrill <jason@redhat.com>
354
355 PR c++/47482
356 * parser.c (cp_parser_enumerator_definition): Call
357 fold_non_dependent_expr.
358
359 2011-02-09 Jason Merrill <jason@redhat.com>
360
361 * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
362 * semantics.c (finish_fname): Only return the name if we're in
363 a function.
364
365 * decl.c (build_enumerator): Don't perform integral promotions on
366 non-integral constants.
367
368 * cvt.c (convert_to_void): Handle null op1.
369
370 * class.c (type_has_constexpr_default_constructor): Make sure the
371 caller stripped an enclosing array.
372 * init.c (perform_member_init): Strip arrays before calling it.
373
374 PR c++/47511
375 * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
376
377 2011-02-03 Dodji Seketeli <dodji@redhat.com>
378
379 PR c++/47398
380 * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
381 template parameters in account.
382
383 2011-02-03 Nathan Froyd <froydnj@codesourcery.com>
384
385 PR c++/46890
386 * parser.c (cp_parser_class_specifier): Fix setting of
387 want_semicolon.
388
389 2011-01-31 Jakub Jelinek <jakub@redhat.com>
390
391 PR c++/47416
392 * semantics.c (build_data_member_initialization): Handle
393 STATEMENT_LIST always instead of just for CLEANUP_BODY.
394
395 2011-01-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
396
397 * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
398 LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
399
400 2011-01-29 Dodji Seketeli <dodji@redhat.com>
401
402 PR c++/47311
403 * cp-tree.h (fixup_template_parms): Declare.
404 * pt.c (end_template_parm_list): Do not fixup template parms here.
405 (fixup_template_parms): Remove static. Fix typo in the
406 comments. Remove useless code statement.
407 (fixup_template_parm): For a template template parameter, fixup
408 its attributes before fixing up its type.
409 * parser.c
410 (cp_parser_template_declaration_after_export): After parsing
411 template parameters fixup their types.
412
413 2011-01-26 Jakub Jelinek <jakub@redhat.com>
414
415 PR c++/47476
416 * semantics.c (potential_constant_expression_1): Handle
417 TRUTH_XOR_EXPR.
418
419 2011-01-26 Dave Korn <dave.korn.cygwin@gmail.com>
420
421 PR c++/43601
422 * semantics.c (expand_or_defer_fn_1): Handle it.
423 * decl2.c (decl_needed_p): Likewise.
424
425 2011-01-21 Jason Merrill <jason@redhat.com>
426
427 PR c++/47041
428 * semantics.c (build_constexpr_constructor_member_initializers):
429 Handle trivial copy.
430
431 2011-01-21 Jakub Jelinek <jakub@redhat.com>
432
433 PR c++/47388
434 * semantics.c (begin_for_stmt): If -fno-for-scope, don't
435 assume init must be NULL if scope is NULL.
436 (begin_range_for_stmt): Likewise.
437
438 2011-01-21 Jason Merrill <jason@redhat.com>
439
440 PR c++/46552
441 * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
442
443 PR c++/46977
444 * semantics.c (potential_constant_expression_1): Split out from
445 potential_constant_expression. Add want_rval parm. Handle
446 template expression forms. Don't enforce restriction on address
447 of automatic variable here. Add a couple of diagnostics that
448 had been missing.
449 (require_potential_constant_expression): New entry point.
450 (build_data_member_initialization, register_constexpr_fundef): Adjust.
451 (maybe_constant_value): Check potential_constant_expression.
452 * pt.c (fold_non_dependent_expr_sfinae): Likewise.
453 * tree.c (build_vec_init_expr): Adjust.
454
455 2011-01-19 Jakub Jelinek <jakub@redhat.com>
456
457 PR c++/47303
458 * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
459 or DECL_EXTERNAL.
460
461 2011-01-17 Jason Merrill <jason@redhat.com>
462
463 PR c++/47067
464 * semantics.c (base_field_constructor_elt): New fn.
465 (cxx_eval_bare_aggregate): Use it.
466 (build_data_member_initialization): Leave COMPONENT_REF for
467 vfield inits.
468
469 2011-01-14 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
470
471 * parser.c (cp_parser_range_for): Remove the "unused variable" warning
472 workaround.
473
474 2011-01-15 Giovanni Funchal <gafunchal@gmail.com>
475 Jonathan Wakely <jwakely.gcc@gmail.com>
476
477 PR c++/33558
478 * decl.c (grokdeclarator): Reject mutable reference members.
479
480 2011-01-14 Jason Merrill <jason@redhat.com>
481
482 PR c++/47289
483 * pt.c (coerce_template_parms): Fix error recovery.
484
485 PR c++/46903
486 * typeck2.c (check_narrowing): Only check arithmetic types.
487
488 PR c++/46688
489 * tree.c (build_vec_init_expr): Handle flexible array
490 properly.
491
492 2011-01-13 Kai Tietz <kai.tietz@onevision.com>
493
494 PR c++/47213
495 * cp-tree.h (CLASSTYPE_VISIBILITY): Use
496 TYPE_MAIN_DECL instead of TYPE_NAME.
497 (CLASSTYPE_VISIBILITY_SPECIFIED): Likewise.
498 * decl2.c (determine_visibility): Add check
499 of CLASS_TYPE_P for underlying_type.
500
501 2011-01-12 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
502
503 * cp-tree.h (begin_for_scope): New prototype.
504 (begin_for_stmt): Update prototype.
505 (begin_range_for_stmt): Update prototype.
506 * init.c (build_vec_init): Update call to begin_for_stmt.
507 * parser.c (cp_parser_for): New.
508 (cp_parser_c_for): Add three new parameters.
509 (cp_parser_range_for): Likewise. Most parsing code removed.
510 (cp_parser_iteration_statement): Call cp_parser_for instead of
511 cp_parser_c_for and cp_parser_range_for.
512 (cp_parser_for_init_statement): Add new parameter and return type.
513 (cp_parser_block_declaration): Update call to
514 cp_parser_simple_declaration.
515 (cp_parser_simple_declaration): Add new parameter.
516 Update call to cp_parser_init_declarator.
517 (cp_parser_init_declarator): Add new parameter.
518 * pt.c (tsubst_expr): Update call to begin_for_stmt.
519 * semantics.c (begin_for_scope): New.
520 (begin_for_stmt): Add two new parameters.
521 (begin_range_for_stmt): Likewise.
522
523 2011-01-12 Nicola Pero <nicola.pero@meta-innovation.com>
524
525 * parser.c (cp_parser_objc_at_property_declaration): Improved
526 error message.
527
528 2011-01-11 Dodji Seketeli <dodji@redhat.com>
529
530 PR debug/46955
531 * cp-lang.c (get_template_innermost_arguments_folded)
532 (get_template_argument_pack_elems_folded)
533 (template_arg_needs_folding, fold_cplus_constants): New static
534 functions.
535 (LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS): Set this hook to
536 get_template_innermost_arguments_folded.
537 (LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS): Set this hook to
538 get_template_argument_pack_elems_folded.
539
540 2011-01-11 Jason Merrill <jason@redhat.com>
541
542 PR c++/46658
543 * init.c (build_new_1): Handle value-init in templates differently.
544
545 PR c++/45520
546 * tree.c (maybe_dummy_object): Check current_class_ref against
547 context, not current_class_type.
548
549 2011-01-08 Nicola Pero <nicola.pero@meta-innovation.com>
550
551 PR objc/47078
552 * parser.c (cp_parser_objc_typename): If the type is unknown, for
553 error recovery purposes behave as if it was not specified so that
554 the default type is used.
555
556 2011-01-07 Jakub Jelinek <jakub@redhat.com>
557
558 PR c++/47022
559 * pt.c (tsubst_copy_and_build): Use tsubst instead of tsubst_copy
560 for the second build_x_va_arg argument.
561
562 2011-01-05 Tom Tromey <tromey@redhat.com>
563
564 * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
565 (lvalue_or_else): Likewise.
566
567 2011-01-01 Kai Tietz <kai.tietz@onevision.com>
568
569 PR target/38662
570 * tree.c (cxx_type_hash_eq):
571 Allow METHOD_TYPE, too.
572
573 \f
574 Copyright (C) 2011 Free Software Foundation, Inc.
575
576 Copying and distribution of this file, with or without modification,
577 are permitted in any medium without royalty provided the copyright
578 notice and this notice are preserved.