OSDN Git Service

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