OSDN Git Service

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