OSDN Git Service

PR c++/41970
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2010-04-07  Jason Merrill  <jason@redhat.com>
2
3         PR c++/41970
4         * decl.c (grokvardecl): Tweak warning message.
5         (grokfndecl): Likewise.
6
7 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
8
9         PR c++/42697
10         *pt.c (tsubst_decl): Get the arguments of a specialization from
11         the specialization template, not from the most general template.
12
13 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
14
15         PR c++/40239
16         * typeck2.c (process_init_constructor_record):
17         value-initialize members that are are not explicitely
18         initialized.
19
20 2010-04-07  Jie Zhang  <jie@codesourcery.com>
21
22         PR c++/42556
23         * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
24         when all of its elements are non-constant and have been split out.
25
26 2010-04-06  Taras Glek  <taras@mozilla.com>
27             Jason Merrill  <jason@redhat.com>
28
29         * parser.c (cp_parser_class_specifier): Set class location to that
30         of IDENTIFIER_NODE instead of '{' when possible.
31         * semantics.c (begin_class_definition): Do not overide locations
32         with less precise ones.
33
34 2010-04-06  Jason Merrill  <jason@redhat.com>
35
36         PR c++/43648
37         * name-lookup.c (constructor_name_p): Allow X::~X even for typedefs.
38
39         PR c++/43621
40         * pt.c (maybe_update_decl_type): Check the return value from
41         push_scope.
42
43 2010-04-01  Jason Merrill  <jason@redhat.com>
44
45         * decl.c (next_initializable_field): No longer static.
46         * cp-tree.h: Declare it.
47         * call.c (build_aggr_conv): Fail if there are more initializers
48         than initializable fields.
49
50         * semantics.c (maybe_add_lambda_conv_op): Use null_pointer_node
51         instead of void_zero_node.
52
53 2010-03-31  Dodji Seketeli  <dodji@redhat.com>
54
55         PR c++/43558
56         * cp-tree.h (TEMPLATE_TYPE_PARM_SIBLING_PARMS): New accessor macro.
57         * pt.c (end_template_parm_list): Store sibling template parms of
58         each TEMPLATE_TYPE_PARMs into its TEMPLATE_TYPE_PARM_SIBLING_PARMS.
59         (push_template_decl_real): Don't store the containing template decl
60         into the DECL_CONTEXT of TEMPLATE_TYPE_PARMs anymore.
61         * typeck.c (get_template_parms_of_dependent_type): Get sibling parms
62         of a TEMPLATE_TYPE_PARM from TEMPLATE_TYPE_PARM_SIBLING_PARMS.
63         Simplify the logic.
64
65 2010-03-30  Jason Merrill  <jason@redhat.com>
66
67         PR c++/43076
68         * pt.c (push_template_decl_real): Deal better with running out of
69         scopes before running out of template parms.
70
71         PR c++/41185
72         PR c++/41786
73         * parser.c (cp_parser_direct_declarator): Don't allow VLAs in
74         function parameter context.  Don't print an error if parsing
75         tentatively.
76
77         PR c++/43559
78         * pt.c (more_specialized_fn): Don't control cv-qualifier check
79         with same_type_p.
80
81 2010-03-26  Jason Merrill  <jason@redhat.com>
82
83         PR c++/43509
84         * parser.c (cp_parser_qualifying_entity): Do accept enum names in
85         c++0x mode, but not other type-names.
86
87 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
88
89         PR c++/43327
90         * pt.c (add_to_template_args): Support NULL ARGS;
91         (most_specialized_class): call coerce_template_parms on
92         template arguments passed to get_class_bindings. Use
93         add_to_template_args.
94         (unify): Handle VAR_DECLs.
95
96 2010-03-26  Dodji Seketeli  <dodji@redhat.com>
97
98         * cp-tree.h (get_template_parms_at_level): Change unsigned parm
99         into int.
100         * pt.c (get_template_parms_at_level): Adjust.
101
102 2010-03-25  Dodji Seketeli  <dodji@redhat.com>
103
104         PR c++/43206
105         * cp-tree.h (get_template_parms_at_level): Declare ...
106         * pt.c (get_template_parms_at_level): ... new function.
107         * typeck.c (get_template_parms_of_dependent_type): If a template
108         type parm's DECL_CONTEXT isn't yet set, get its siblings from
109         current_template_parms. Use get_template_parms_at_level. Remove
110         useless test.
111         (incompatible_dependent_types_p): If we get empty parms from just one
112         of the template type parms we are comparing then the template parms are
113         incompatible.
114
115 2010-03-24  Jason Merrill  <jason@redhat.com>
116
117         PR c++/43502
118         * parser.c (make_declarator): Initialize id_loc.
119         (cp_parser_lambda_declarator_opt): And set it.
120
121 2010-03-23  Jason Merrill  <jason@redhat.com>
122
123         Make lambda conversion op and op() non-static.
124         * semantics.c (maybe_add_lambda_conv_op): Make non-static.
125         Also add the thunk function returned by the conversion op.
126         Mark the conversion deleted if the op() is variadic.
127         * decl2.c (mark_used): Give helpful message about deleted conversion.
128         * parser.c (cp_parser_lambda_declarator_opt): Don't make op() static.
129         * semantics.c (finish_this_expr): Adjust.
130         * mangle.c (write_closure_type_name): Adjust.
131         * decl.c (grok_op_properties): Don't allow it.
132         * call.c (build_user_type_conversion_1): No static conversion ops.
133         (build_op_call): Or op().
134
135         * decl2.c (change_return_type): Fix 'this' quals.
136
137 2010-03-22  Jason Merrill  <jason@redhat.com>
138
139         PR c++/43333
140         * tree.c (pod_type_p): Use old meaning in C++98 mode.
141
142         PR c++/43281
143         * pt.c (contains_auto_r): New fn.
144         (do_auto_deduction): Use it.
145         (tsubst): Don't look at TREE_TYPE of a TEMPLATE_TYPE_PARM.
146
147 2010-03-20  Simon Martin  <simartin@users.sourceforge.net>
148
149         PR c++/43081:
150         * decl2.c (grokfield): Handle invalid initializers for member
151         functions.
152
153 2010-03-20  Dodji Seketeli  <dodji@redhat.com>
154
155         PR c++/43375
156         * method.c (make_alias_for): Avoid crashing when DECL_LANG_SPECIFIC
157         is NULL.
158         * decl2.c (vague_linkage_p): Likewise.
159
160 2010-03-18  Paolo Carlini  <paolo.carlini@oracle.com>
161
162         PR c++/43418
163         * parser.c (cp_parser_for_init_statement): Use NULL_TREE, not
164         false, in the cp_parser_expression_statement call.
165
166 2010-03-05  Jason Merrill  <jason@redhat.com>
167
168         * mangle.c (mangle_decl): Give name collision error even without
169         ASM_OUTPUT_DEF.
170
171 2010-03-04  Marco Poletti  <poletti.marco@gmail.com>
172
173         * pt.c (process_partial_specialization): Use error_n instead of
174         error.
175
176 2010-03-03  Jason Merrill  <jason@redhat.com>
177
178         PR c++/12909
179         * mangle.c (mangle_decl): Handle VAR_DECL, too.
180
181 2010-03-03  Jason Merrill  <jason@redhat.com>
182
183         PR c++/12909
184         * mangle.c: Include cgraph.h.
185         (mangle_decl): If the mangled name will change in a later
186         ABI version, make the later mangled name an alias.
187         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
188         * Make-lang.in (mangle.o): Depend on cgraph.h.
189         * method.c (make_alias_for): Handle VAR_DECL, too.
190         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
191         * tree.c (no_linkage_check): Adjust.
192         * decl.c (maybe_commonize_var): Adjust.
193         * cp-tree.h: Adjust.
194
195 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
196
197         * pt.c (redeclare_class_template): Use error_n and inform_n.
198
199 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
200
201         PR c++/42748
202         * cp-tree.h (push_tinst_level): Declare.
203         (pop_tinst_level): Likewise.
204         * pt.c (push_tinst_level): Give it external linkage.
205         (pop_tinst_level): Likewise.
206         * mangle.c (mangle_decl_string): Set the source location to that
207         of the decl while mangling.
208
209 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
210
211         PR c++/42054
212         * pt.c (redeclare_class_template): Return false if there are erroneous
213         template parameters.
214
215 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
216
217         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
218         -ftemplate-depth=.
219
220 2010-02-24  Jason Merrill  <jason@redhat.com>
221
222         PR c++/12909
223         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
224
225         * class.c (layout_class_type): Don't give -Wabi warning for a bug
226         in a previous ABI version.
227
228 2010-02-23  Jason Merrill  <jason@redhat.com>
229
230         PR c++/43143
231         * typeck2.c (digest_init_r): Accept value init of array.
232
233 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
234
235         PR c++/43126
236         * typeck.c (convert_arguments): Update error message.
237
238 2010-02-22  Mike Stump  <mikestump@comcast.net>
239
240         PR c++/43125
241         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
242
243 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
244
245         PR c++/23510
246         * error.c (print_instantiation_partial_context_line): New.
247         (print_instantiation_partial_context): Print at most 12 contexts,
248         skip the rest with a message.
249
250 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
251
252         PR c++/42824
253         * pt.c (lookup_template_class): Better support of specialization
254         of member of class template implicit instantiation.
255
256 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
257
258         PR c++/35669
259         * call.c (conversion_null_warnings): Replace -Wconversion with
260         -Wconversion-null.
261         * cvt.c (build_expr_type_conversion): Likewise.
262
263 2010-02-18  Jason Merrill  <jason@redhat.com>
264
265         PR c++/42837
266         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
267
268         PR c++/43108
269         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
270         C build_binary_op.
271         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
272         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
273
274         PR c++/43070
275         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
276
277         PR c++/26261
278         PR c++/43101
279         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
280         (maybe_update_decl_type): New fn.
281         * parser.c (cp_parser_init_declarator): Use it.
282
283         PR c++/43109
284         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
285
286 2010-02-17  Jason Merrill  <jason@redhat.com>
287
288         PR c++/43075
289         * call.c (build_over_call): Don't create zero-sized assignments.
290         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
291         * cp-objcp-common.c (cp_expr_size): Remove.
292         * cp-tree.h: Remove prototype.
293
294         PR c++/43069
295         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
296         decl we looked up doesn't match.
297
298         PR c++/43093
299         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
300         have an INIT_EXPR anymore.
301
302         PR c++/43079
303         * pt.c (convert_nontype_argument): Change assert to test.
304
305 2010-02-16  Jason Merrill  <jason@redhat.com>
306
307         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
308
309         PR c++/43031
310         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
311         VIEW_CONVERT_EXPR for conversions between structural equality types
312         that the back end can't tell are the same.
313
314         PR c++/43036
315         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
316         cv-quals from element here.
317         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
318
319 2010-02-14  Jason Merrill  <jason@redhat.com>
320
321         PR c++/41997
322         * semantics.c (finish_compound_literal): Use
323         cp_apply_type_quals_to_decl when creating a static variable.
324
325 2010-02-12  Jason Merrill  <jason@redhat.com>
326
327         PR c++/43024
328         * name-lookup.h (current_binding_level): Check for null
329         cp_function_chain.
330
331 2010-02-12  Jason Merrill  <jason@redhat.com>
332
333         PR c++/43054
334         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
335
336 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
337
338         PR c++/43033
339         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
340         instead of x.
341
342 2010-02-10  Jason Merrill  <jason@redhat.com>
343
344         PR c++/41896
345         * semantics.c (outer_lambda_capture_p): Revert.
346         (add_capture): Only finish_member_declaration if
347         we're in the lambda class.
348         (register_capture_members): New.
349         * cp-tree.h: Declare it.
350         * parser.c (cp_parser_lambda_expression): Call it.
351
352 2010-02-10  Jason Merrill  <jason@redhat.com>
353
354         PR c++/41896
355         * semantics.c (outer_lambda_capture_p): Use current_function_decl
356         instead of current_class_type.
357
358 2010-02-10  Jason Merrill  <jason@redhat.com>
359
360         PR c++/42983, core issue 906
361         * method.c (defaultable_fn_check): Check virtualness.
362
363 2010-02-10  Jason Merrill  <jason@redhat.com>
364
365         PR c++/43016
366         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
367
368 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
369
370         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
371         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
372         translation.
373         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
374         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
375         (cp_parser_parameter_declaration)
376         (cp_parser_exception_specification_opt)
377         (cp_parser_exception_declaration): Likewise.
378         * pt.c (check_default_tmpl_args): Likewise.
379         * search.c (lookup_field_r): Likewise.
380
381 2010-02-09  Jason Merrill  <jason@redhat.com>
382
383         PR c++/42399
384         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
385
386 2010-02-09  Jason Merrill  <jason@redhat.com>
387
388         PR c++/42370
389         * decl2.c (change_return_type): New fn.
390         * semantics.c (apply_lambda_return_type): Use it.
391         * cp-tree.h: Declare it.
392
393 2010-02-05  Richard Guenther  <rguenther@suse.de>
394
395         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
396         * cp-lang.c: Include gt-cp-cp-lang.h.
397         * config-lang.in (gtfiles): Add cp/cp-lang.c.
398
399 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
400
401         PR c++/42915
402         * typeck.c (get_template_parms_of_dependent_type): Try getting
403         the template parameters fromt the type itself first.
404
405 2010-02-03  Jason Merrill  <jason@redhat.com>
406
407         PR c++/4926
408         PR c++/38600
409         * mangle.c (write_unqualified_id): Split out from write_expression.
410         (write_unqualified_name): Call it.
411         (write_member_name): Likewise.
412         (write_expression): Support TEMPLATE_ID_EXPR.
413         Disambiguate operator names.
414
415         PR c++/12909
416         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
417         -fabi-version=4.
418
419 2010-02-02  Jason Merrill  <jason@redhat.com>
420
421         PR c++/41090
422         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
423         * optimize.c (clone_body): Remap their initializers when making base
424         variants.
425         (maybe_clone_body): Complain if multiple clones aren't safe.
426
427 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
428
429         PR c++/42758
430         PR c++/42634
431         PR c++/42336
432         PR c++/42797
433         PR c++/42880
434         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
435         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
436         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
437         * pt.c (coerce_template_parms, type_unification_real,
438         expand_template_argument_pack, coerce_template_parameter_pack):
439         Set the non default template args count.
440         (current_template_args): Always set non defaulted
441         template args count when compiled with --enable-checking
442         (tsubst_template_args, type_unification_real): Propagate the non
443         defaulted template args count.
444         * error.c (get_non_default_template_args_count): Renamed
445         count_non_default_template_args into this. Don't calculate the
446         non default template argument count anymore. Use the new
447         accessor macros above to get it.
448         (dump_template_argument_list, dump_type, dump_decl,
449         dump_template_parms): Adjust.
450         * parser.c (cp_parser_template_argument_list): Always set defaulted
451         template args count when compiled with --enable-checking.
452
453 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
454
455         * decl.c (redeclaration_error_message): Wrap the return messages into
456         G_() for easy translation.
457
458 2010-01-28  Jason Merrill  <jason@redhat.com>
459
460         PR c++/42880
461         * semantics.c (begin_class_definition): Don't use type_as_string.
462
463 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
464
465         PR c++/42713
466         PR c++/42820
467         * typeck.c (get_template_parms_of_dependent_type): Factorized
468         this out of incompatible_template_type_parms_p
469         (incompatible_dependent_types_p): Renamed
470         incompatible_template_type_parms_p into this. Make it detect
471         two incompatible dependent typedefs too.
472         (structural_comptypes): Use incompatible_dependent_types_p.
473         * pt.c (get_template_info):
474         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
475
476 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
477             Jason Merrill  <jason@redhat.com>
478
479         * mangle.c (write_type): Mangle transparent record as member type.
480         * semantics.c (begin_class_definition): Recognize decimal classes
481         and set TYPE_TRANSPARENT_AGGR.
482
483 2010-01-20  Jason Merrill  <jason@redhat.com>
484
485         PR c++/42338
486         * mangle.c (write_expression): Handle tree codes that have extra
487         arguments in the middle-end.
488
489 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
490
491         PR c++/42038
492         * except.c (expand_start_catch_block): Deal correctly with
493         do_begin_catch returning error_mark_node.
494
495 2010-01-20  Jason Merrill  <jason@redhat.com>
496
497         PR c++/41788
498         * class.c (layout_class_type): Set packed_maybe_necessary for packed
499         non-PODs.
500
501         PR c++/41920
502         * semantics.c (build_lambda_object): Call mark_used on captured
503         variables.
504
505         PR c++/40750
506         * decl.c (grokdeclarator): Clear type_quals for a member function
507         declared using a typedef.  Don't complain about adding cv-quals
508         to a function typedef in C++0x mode.
509
510 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
511
512         * decl.c (create_array_type_for_decl): Remove set but not used
513         variable error_msg.  Remove break stmts after return stmts.
514
515 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
516
517         * error.c (dump_template_parms, count_non_default_template_args):
518         Revert fix of PR c++/42634.
519
520 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
521
522         PR c++/42634
523         * error.c (dump_template_parms): Use innermost template
524         arguments before calling count_non_default_template_args.
525         (count_non_default_template_args): We are being called with
526         template innermost arguments now. There is no need to ensure
527         that again.
528
529 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
530
531         PR c++/42766
532         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
533
534 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
535
536         PR c++/42697
537         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
538
539 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
540
541         PR c++/42697
542         *pt.c (tsubst_decl): Get the arguments of a specialization from
543         the specialization template, not from the most general template.
544
545 2010-01-16  Jason Merrill  <jason@redhat.com>
546
547         PR c++/42761
548         * semantics.c (finish_decltype_type): Within a template, treat
549         unresolved CALL_EXPR as dependent.
550
551 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
552
553         * error.c (dump_template_parms,count_non_default_template_args):
554         Revert changes of PR c++/42634.
555
556 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
557
558         PR middle-end/42674
559         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
560         functions with noreturn attribute.
561
562 2010-01-14  Jason Merrill  <jason@redhat.com>
563
564         PR c++/42701
565         * call.c (build_new_method_call): Don't free the vec here.
566
567         PR c++/42655
568         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
569
570 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
571
572         PR c++/42634
573         * error.c (dump_template_parms): Use innermost template
574         arguments before calling count_non_default_template_args.
575         (count_non_default_template_args): We are being called with
576         template innermost arguments now. There is no need to ensure
577         that again.
578
579 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
580
581         c++/40155
582         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
583         arguments that were previously deduced.
584
585 2010-01-05  Jason Merrill  <jason@redhat.com>
586
587         * pt.c (unify_pack_expansion): Handle deduction from init-list.
588         * call.c (build_over_call): Don't complain about it.
589
590 2010-01-04  Jason Merrill  <jason@redhat.com>
591
592         PR c++/42555
593         * pt.c (tsubst_decl): Don't apply type attributes in place.
594
595         PR c++/42567
596         * semantics.c (describable_type): Remove decltype comment and
597         semantics.
598
599
600 \f
601 Copyright (C) 2010 Free Software Foundation, Inc.
602
603 Copying and distribution of this file, with or without modification,
604 are permitted in any medium without royalty provided the copyright
605 notice and this notice are preserved.