OSDN Git Service

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