OSDN Git Service

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