OSDN Git Service

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