OSDN Git Service

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