OSDN Git Service

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