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 (mangle_decl): Handle VAR_DECL, too.
173
174 2010-03-03  Jason Merrill  <jason@redhat.com>
175
176         PR c++/12909
177         * mangle.c: Include cgraph.h.
178         (mangle_decl): If the mangled name will change in a later
179         ABI version, make the later mangled name an alias.
180         * method.c (make_alias_for): Copy DECL_ARGUMENTS.
181         * Make-lang.in (mangle.o): Depend on cgraph.h.
182         * method.c (make_alias_for): Handle VAR_DECL, too.
183         * decl2.c (vague_linkage_p): Rename from vague_linkage_fn_p.
184         * tree.c (no_linkage_check): Adjust.
185         * decl.c (maybe_commonize_var): Adjust.
186         * cp-tree.h: Adjust.
187
188 2010-03-01  Marco Poletti  <poletti.marco@gmail.com>
189
190         * pt.c (redeclare_class_template): Use error_n and inform_n.
191
192 2010-02-27  Mark Mitchell  <mark@codesourcery.com>
193
194         PR c++/42748
195         * cp-tree.h (push_tinst_level): Declare.
196         (pop_tinst_level): Likewise.
197         * pt.c (push_tinst_level): Give it external linkage.
198         (pop_tinst_level): Likewise.
199         * mangle.c (mangle_decl_string): Set the source location to that
200         of the decl while mangling.
201
202 2010-02-27  Simon Martin  <simartin@users.sourceforge.net>
203
204         PR c++/42054
205         * pt.c (redeclare_class_template): Return false if there are erroneous
206         template parameters.
207
208 2010-02-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
209
210         * pt.c (push_tinst_level): Replace -ftemplate-depth- with 
211         -ftemplate-depth=.
212
213 2010-02-24  Jason Merrill  <jason@redhat.com>
214
215         PR c++/12909
216         * mangle.c (write_type): Give -Wabi warning for old vector mangling.
217
218         * class.c (layout_class_type): Don't give -Wabi warning for a bug
219         in a previous ABI version.
220
221 2010-02-23  Jason Merrill  <jason@redhat.com>
222
223         PR c++/43143
224         * typeck2.c (digest_init_r): Accept value init of array.
225
226 2010-02-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
227
228         PR c++/43126
229         * typeck.c (convert_arguments): Update error message.
230
231 2010-02-22  Mike Stump  <mikestump@comcast.net>
232
233         PR c++/43125
234         * decl.c (duplicate_decls): Merge DECL_PRESERVE_P.
235
236 2010-02-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
237
238         PR c++/23510
239         * error.c (print_instantiation_partial_context_line): New.
240         (print_instantiation_partial_context): Print at most 12 contexts,
241         skip the rest with a message.
242
243 2010-02-21  Dodji Seketeli  <dodji@redhat.com>
244
245         PR c++/42824
246         * pt.c (lookup_template_class): Better support of specialization
247         of member of class template implicit instantiation.
248
249 2010-02-20  Manuel López-Ibáñez  <manu@gcc.gnu.org>
250
251         PR c++/35669
252         * call.c (conversion_null_warnings): Replace -Wconversion with
253         -Wconversion-null.
254         * cvt.c (build_expr_type_conversion): Likewise.
255
256 2010-02-18  Jason Merrill  <jason@redhat.com>
257
258         PR c++/42837
259         * class.c (create_vtable_ptr): Set DECL_PACKED if type is packed.
260
261         PR c++/43108
262         * typeck.c (cp_build_binary_op): Adapt mixed complex/non handling from
263         C build_binary_op.
264         * cp-tree.h (WANT_VECTOR_OR_COMPLEX): Rename from WANT_VECTOR.
265         * cvt.c (build_expr_type_conversion): Allow COMPLEX_TYPE.
266
267         PR c++/43070
268         * semantics.c (finish_goto_stmt): Don't call decay_conversion.
269
270         PR c++/26261
271         PR c++/43101
272         * pt.c (tsubst_qualified_id): Do normal lookup in non-dependent scope.
273         (maybe_update_decl_type): New fn.
274         * parser.c (cp_parser_init_declarator): Use it.
275
276         PR c++/43109
277         * semantics.c (begin_class_definition): Don't crash on unnamed ns.
278
279 2010-02-17  Jason Merrill  <jason@redhat.com>
280
281         PR c++/43075
282         * call.c (build_over_call): Don't create zero-sized assignments.
283         * cp-gimplify.c (cp_genericize_r): Don't remove them here.
284         * cp-objcp-common.c (cp_expr_size): Remove.
285         * cp-tree.h: Remove prototype.
286
287         PR c++/43069
288         * name-lookup.c (set_decl_namespace): Don't copy DECL_CONTEXT if the
289         decl we looked up doesn't match.
290
291         PR c++/43093
292         * cp-gimplify.c (cp_gimplify_expr) [INIT_EXPR]: Return if we don't
293         have an INIT_EXPR anymore.
294
295         PR c++/43079
296         * pt.c (convert_nontype_argument): Change assert to test.
297
298 2010-02-16  Jason Merrill  <jason@redhat.com>
299
300         * cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
301
302         PR c++/43031
303         * cp-gimplify.c (cp_gimplify_expr) [MODIFY_EXPR]: Use
304         VIEW_CONVERT_EXPR for conversions between structural equality types
305         that the back end can't tell are the same.
306
307         PR c++/43036
308         * tree.c (build_cplus_array_type): Set TYPE_MAIN_VARIANT to strip
309         cv-quals from element here.
310         (cp_build_qualified_type_real): Not here.  Preserve typedef name.
311
312 2010-02-14  Jason Merrill  <jason@redhat.com>
313
314         PR c++/41997
315         * semantics.c (finish_compound_literal): Use
316         cp_apply_type_quals_to_decl when creating a static variable.
317
318 2010-02-12  Jason Merrill  <jason@redhat.com>
319
320         PR c++/43024
321         * name-lookup.h (current_binding_level): Check for null
322         cp_function_chain.
323
324 2010-02-12  Jason Merrill  <jason@redhat.com>
325
326         PR c++/43054
327         * tree.c (cp_tree_equal): Correct CALL_EXPR logic.
328
329 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
330
331         PR c++/43033
332         * name-lookup.c (pushdecl_maybe_friend): Check default args of t
333         instead of x.
334
335 2010-02-10  Jason Merrill  <jason@redhat.com>
336
337         PR c++/41896
338         * semantics.c (outer_lambda_capture_p): Revert.
339         (add_capture): Only finish_member_declaration if
340         we're in the lambda class.
341         (register_capture_members): New.
342         * cp-tree.h: Declare it.
343         * parser.c (cp_parser_lambda_expression): Call it.
344
345 2010-02-10  Jason Merrill  <jason@redhat.com>
346
347         PR c++/41896
348         * semantics.c (outer_lambda_capture_p): Use current_function_decl
349         instead of current_class_type.
350
351 2010-02-10  Jason Merrill  <jason@redhat.com>
352
353         PR c++/42983, core issue 906
354         * method.c (defaultable_fn_check): Check virtualness.
355
356 2010-02-10  Jason Merrill  <jason@redhat.com>
357
358         PR c++/43016
359         * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
360
361 2010-02-10  Shujing Zhao  <pearly.zhao@oracle.com>
362
363         * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h.
364         * cvt.c (warn_ref_binding): Wrap the messages into G_() for easy
365         translation.
366         * parser.c (cp_parser_postfix_expression, cp_parser_new_type_id)
367         (cp_parser_cast_expression, cp_parser_condition, cp_parser_decltype)
368         (cp_parser_parameter_declaration)
369         (cp_parser_exception_specification_opt)
370         (cp_parser_exception_declaration): Likewise.
371         * pt.c (check_default_tmpl_args): Likewise.
372         * search.c (lookup_field_r): Likewise.
373
374 2010-02-09  Jason Merrill  <jason@redhat.com>
375
376         PR c++/42399
377         * pt.c (tsubst_copy_and_build): Propagate LAMBDA_EXPR_LOCATION.
378
379 2010-02-09  Jason Merrill  <jason@redhat.com>
380
381         PR c++/42370
382         * decl2.c (change_return_type): New fn.
383         * semantics.c (apply_lambda_return_type): Use it.
384         * cp-tree.h: Declare it.
385
386 2010-02-05  Richard Guenther  <rguenther@suse.de>
387
388         * Make-lang.in (cp/cp-lang.o): Depend on gt-cp-cp-lang.h.
389         * cp-lang.c: Include gt-cp-cp-lang.h.
390         * config-lang.in (gtfiles): Add cp/cp-lang.c.
391
392 2010-02-05  Dodji Seketeli  <dodji@redhat.com>
393
394         PR c++/42915
395         * typeck.c (get_template_parms_of_dependent_type): Try getting
396         the template parameters fromt the type itself first.
397
398 2010-02-03  Jason Merrill  <jason@redhat.com>
399
400         PR c++/4926
401         PR c++/38600
402         * mangle.c (write_unqualified_id): Split out from write_expression.
403         (write_unqualified_name): Call it.
404         (write_member_name): Likewise.
405         (write_expression): Support TEMPLATE_ID_EXPR.
406         Disambiguate operator names.
407
408         PR c++/12909
409         * mangle.c (write_type) [VECTOR_TYPE]: Change mangling with
410         -fabi-version=4.
411
412 2010-02-02  Jason Merrill  <jason@redhat.com>
413
414         PR c++/41090
415         * decl.c (cp_finish_decl): Add local statics to cfun->local_decls.
416         * optimize.c (clone_body): Remap their initializers when making base
417         variants.
418         (maybe_clone_body): Complain if multiple clones aren't safe.
419
420 2010-01-29  Dodji Seketeli  <dodji@redhat.com>
421
422         PR c++/42758
423         PR c++/42634
424         PR c++/42336
425         PR c++/42797
426         PR c++/42880
427         * cp-tree.h (NON_DEFAULT_TEMPLATE_ARGS_COUNT,
428         SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT,
429         GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT): New accessor macros.
430         * pt.c (coerce_template_parms, type_unification_real,
431         expand_template_argument_pack, coerce_template_parameter_pack):
432         Set the non default template args count.
433         (current_template_args): Always set non defaulted
434         template args count when compiled with --enable-checking
435         (tsubst_template_args, type_unification_real): Propagate the non
436         defaulted template args count.
437         * error.c (get_non_default_template_args_count): Renamed
438         count_non_default_template_args into this. Don't calculate the
439         non default template argument count anymore. Use the new
440         accessor macros above to get it.
441         (dump_template_argument_list, dump_type, dump_decl,
442         dump_template_parms): Adjust.
443         * parser.c (cp_parser_template_argument_list): Always set defaulted
444         template args count when compiled with --enable-checking.
445
446 2010-01-29  Shujing Zhao  <pearly.zhao@oracle.com>
447
448         * decl.c (redeclaration_error_message): Wrap the return messages into
449         G_() for easy translation.
450
451 2010-01-28  Jason Merrill  <jason@redhat.com>
452
453         PR c++/42880
454         * semantics.c (begin_class_definition): Don't use type_as_string.
455
456 2010-01-28  Dodji Seketeli  <dodji@redhat.com>
457
458         PR c++/42713
459         PR c++/42820
460         * typeck.c (get_template_parms_of_dependent_type): Factorized
461         this out of incompatible_template_type_parms_p
462         (incompatible_dependent_types_p): Renamed
463         incompatible_template_type_parms_p into this. Make it detect
464         two incompatible dependent typedefs too.
465         (structural_comptypes): Use incompatible_dependent_types_p.
466         * pt.c (get_template_info):
467         Handle BOUND_TEMPLATE_TEMPLATE_PARAM.
468
469 2010-01-20  Janis Johnson  <janis187@us.ibm.com>
470             Jason Merrill  <jason@redhat.com>
471
472         * mangle.c (write_type): Mangle transparent record as member type.
473         * semantics.c (begin_class_definition): Recognize decimal classes
474         and set TYPE_TRANSPARENT_AGGR.
475
476 2010-01-20  Jason Merrill  <jason@redhat.com>
477
478         PR c++/42338
479         * mangle.c (write_expression): Handle tree codes that have extra
480         arguments in the middle-end.
481
482 2010-01-20  Paolo Carlini  <paolo.carlini@oracle.com>
483
484         PR c++/42038
485         * except.c (expand_start_catch_block): Deal correctly with
486         do_begin_catch returning error_mark_node.
487
488 2010-01-20  Jason Merrill  <jason@redhat.com>
489
490         PR c++/41788
491         * class.c (layout_class_type): Set packed_maybe_necessary for packed
492         non-PODs.
493
494         PR c++/41920
495         * semantics.c (build_lambda_object): Call mark_used on captured
496         variables.
497
498         PR c++/40750
499         * decl.c (grokdeclarator): Clear type_quals for a member function
500         declared using a typedef.  Don't complain about adding cv-quals
501         to a function typedef in C++0x mode.
502
503 2010-01-20  Jakub Jelinek  <jakub@redhat.com>
504
505         * decl.c (create_array_type_for_decl): Remove set but not used
506         variable error_msg.  Remove break stmts after return stmts.
507
508 2010-01-19  Dodji Seketeli  <dodji@redhat.com>
509
510         * error.c (dump_template_parms, count_non_default_template_args):
511         Revert fix of PR c++/42634.
512
513 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
514
515         PR c++/42634
516         * error.c (dump_template_parms): Use innermost template
517         arguments before calling count_non_default_template_args.
518         (count_non_default_template_args): We are being called with
519         template innermost arguments now. There is no need to ensure
520         that again.
521
522 2010-01-18  Dodji Seketeli  <dodji@redhat.com>
523
524         PR c++/42766
525         * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
526
527 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
528
529         PR c++/42697
530         *pt.c (tsubst_decl):  Revert commit for PR c++/42697.
531
532 2010-01-17  Dodji Seketeli  <dodji@redhat.com>
533
534         PR c++/42697
535         *pt.c (tsubst_decl): Get the arguments of a specialization from
536         the specialization template, not from the most general template.
537
538 2010-01-16  Jason Merrill  <jason@redhat.com>
539
540         PR c++/42761
541         * semantics.c (finish_decltype_type): Within a template, treat
542         unresolved CALL_EXPR as dependent.
543
544 2010-01-15  Dodji Seketeli  <dodji@redhat.com>
545
546         * error.c (dump_template_parms,count_non_default_template_args):
547         Revert changes of PR c++/42634.
548
549 2010-01-14  Jakub Jelinek  <jakub@redhat.com>
550
551         PR middle-end/42674
552         * decl.c (finish_function): Don't emit -Wreturn-type warnings in
553         functions with noreturn attribute.
554
555 2010-01-14  Jason Merrill  <jason@redhat.com>
556
557         PR c++/42701
558         * call.c (build_new_method_call): Don't free the vec here.
559
560         PR c++/42655
561         * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
562
563 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
564
565         PR c++/42634
566         * error.c (dump_template_parms): Use innermost template
567         arguments before calling count_non_default_template_args.
568         (count_non_default_template_args): We are being called with
569         template innermost arguments now. There is no need to ensure
570         that again.
571
572 2010-01-07  Dodji Seketeli  <dodji@redhat.com>
573
574         c++/40155
575         * pt.c (unify_pack_expansion): In non-deduced contexts, re-use template
576         arguments that were previously deduced.
577
578 2010-01-05  Jason Merrill  <jason@redhat.com>
579
580         * pt.c (unify_pack_expansion): Handle deduction from init-list.
581         * call.c (build_over_call): Don't complain about it.
582
583 2010-01-04  Jason Merrill  <jason@redhat.com>
584
585         PR c++/42555
586         * pt.c (tsubst_decl): Don't apply type attributes in place.
587
588         PR c++/42567
589         * semantics.c (describable_type): Remove decltype comment and
590         semantics.
591
592
593 \f
594 Copyright (C) 2010 Free Software Foundation, Inc.
595
596 Copying and distribution of this file, with or without modification,
597 are permitted in any medium without royalty provided the copyright
598 notice and this notice are preserved.