OSDN Git Service

PR c++/41119
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2009-08-19  Jason Merrill  <jason@redhat.com>
2
3         PR c++/41119
4         PR c++/41120
5         * decl2.c (mark_used): Increment function_depth during synthesis.
6         * parser.c (cp_parser_default_argument): Not here.
7
8 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
9
10         * method.c (use_thunk): Call free_after_compilation after
11         assemble_end_function.
12
13 2009-08-17  Richard Guenther  <rguenther@suse.de>
14
15         * decl.c (build_ptrmemfunc_type): Keep variant chain intact.
16         Avoid useless copy.
17         (finish_enum): Keep variant chain intact.
18         * tree.c (cp_build_reference_type): Likewise.
19
20 2009-08-16  Jason Merrill  <jason@redhat.com>
21
22         Make TREE_USED match the [basic.def.odr] concept for FUNCTION_DECL
23         and VAR_DECL, so mark_used only has effect the first time.
24         * decl2.c (mark_used): Just return if TREE_USED is already set.
25         Don't set TREE_USED if cp_unevaluated_operand is set.
26         (tree_used_ok): New fn.
27         * init.c (build_offset_ref): Check it instead of TREE_USED.
28         * call.c (build_call_a): Likewise.
29         * cp-tree.h: Declare it.
30         (DECL_NO_LINKAGE_CHECKED): No longer needed.
31         (struct lang_decl_base): Remove no_linkage_checked bitfield.
32
33         * decl2.c (finish_static_data_member_decl): Don't set TREE_USED.
34
35         * decl2.c (mark_used): It's ok to synthesize for default args now.
36
37 2009-08-10  Jason Merrill  <jason@redhat.com>
38
39         Implement DR 757: It's OK for a decl to use a type without linkage
40         so long as the decl is defined in the current translation unit.
41         * decl2.c (no_linkage_decls): New vector.
42         (mark_used): Add decls that use types with no linkage.
43         (cp_write_global_declarations): Check that they are defined.
44         (decl_defined_p, no_linkage_error): New fns.
45         * cp-tree.h (DECL_NO_LINKAGE_CHECKED): New macro.
46         (struct lang_decl_base): Add flag.
47         * decl.c (grokfndecl): Don't check type linkage.
48         (grokvardecl): If the type has no linkage, just make sure
49         DECL_LANG_SPECIFIC is set.
50         * pt.c (check_instantiated_arg): Don't check type linkage.
51         * name-lookup.c (is_local_extern): New fn.
52         * name-lookup.h: Declare it.
53
54 2009-08-05  Jason Merrill  <jason@redhat.com>
55
56         PR c++/40948
57         * init.c (build_vec_init): Evaluate the initializer before
58         starting the initialization try block.
59
60 2009-08-05  Manuel López-Ibáñez  <manu@gcc.gnu.org>
61
62         PR c++/36069
63         * typeck.c (convert_for_assignment): Do not warn for any boolean
64         variant. Use explicit location.
65
66 2009-08-04  Dodji Seketeli  <dodji@redhat.com>
67
68         PR c++/39987
69         * pt.c (tsubst_default_argument): Let access checks of the
70         default argument happen in the context of the current function.
71
72 2009-08-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
73
74         PR c++/16696
75         * call.c (build_new_op): Only try prefix operator if -fpermissive,
76         otherwise just error.
77
78 2009-08-04  Dodji Seketeli  <dodji@redhat.com>
79
80         PR debug/39706
81         * error.c (lang_decl_name): Print qualified names for decls
82         in  namespace scope.
83
84 2009-08-03  Jason Merrill  <jason@redhat.com>
85             Jakub Jelinek  <jakub@redhat.com>
86
87         PR c++/40948
88         * init.c (build_vec_init): Look through a TARGET_EXPR around a
89         CONSTRUCTOR.
90
91 2009-07-31  Jason Merrill  <jason@redhat.com>
92             Douglas Gregor  <doug.gregor@gmail.com>
93
94         Remove implicit binding of lvalues to rvalue references (N2831)
95         * call.c (convert_class_to_reference): Binding an lvalue to an
96         rvalue reference is bad.  If the user-defined conversion is bad,
97         set bad_p before merging conversions.
98         (maybe_handle_ref_bind): Don't push down bad_p.
99         (reference_binding): Binding an lvalue to an rvalue reference is bad.
100         (convert_like_real): Give a helpful error about binding lvalue
101         to rvalue reference.
102         (reference_related_p): No longer static.
103         * typeck.c (build_typed_address): New.
104         (build_static_cast_1): Add static_cast from lvalue to &&.
105         * cp-tree.h: Adjust.
106
107 2009-07-31  Jason Merrill  <jason@redhat.com>
108
109         * call.c (reference_binding): Rename lvalue_p to is_lvalue.
110         Do direct binding of "rvalues" in memory to rvalue references.
111         * tree.c (lvalue_p_1): Can't be both non-addressable lvalue and
112         "rvalue" in memory.
113         * typeck.c (build_static_cast_1): Do direct binding of memory
114         "rvalues" to rvalue references.
115         * cvt.c (cp_fold_convert): New.
116         * cp-tree.h: Declare it.
117
118 2009-07-31  Jason Merrill  <jason@redhat.com>
119
120         * typeck.c (build_address): Do fold away ADDR_EXPR of INDIRECT_REF.
121         * tree.c (rvalue): Use cp_build_qualified_type, not TYPE_MAIN_VARIANT.
122
123 2009-07-29  Jason Merrill  <jason@redhat.com>
124
125         PR c++/14912
126         * cp-tree.h (enum tsubst_flags): Add tf_no_class_instantiations.
127         * error.c (count_non_default_template_args): Pass it.
128         * pt.c (tsubst) [TYPENAME_TYPE]: Don't complete type if it's set.
129
130 2009-07-29  Richard Guenther  <rguenther@suse.de>
131
132         PR c++/40834
133         * cp-gimplify.c (cp_genericize_r): Properly walk the BIND_EXPR
134         vars.
135
136 2009-07-26  Simon Martin  <simartin@users.sourceforge.net>
137
138         PR c++/40749
139         * decl.c (grokdeclarator): Do not set TREE_NO_WARNING for functions
140         with a qualified return type.
141
142 2009-07-24  Jason Merrill  <jason@redhat.com>
143
144         Core issue 901
145         * call.c (build_op_delete_call): If this is for a new-expression
146         and the op delete is deleted, do nothing.
147
148         Core issue 702
149         * call.c (compare_ics): Give list-initialization of std::init_list
150         priority over conversion to scalar, too.
151
152 2009-07-22  Jason Merrill  <jason@redhat.com>
153
154         * mangle.c (mangle_type_string_for_rtti): Rename to be clearer.
155         (needs_fake_anon): New.
156         (write_name): Check it.
157         (write_nested_name): Add a fake anonymous namespace scope if true.
158         * name-lookup.c (get_anonymous_namespace_name): No longer static.
159         * rtti.c, cp-tree.h: Adjust.
160
161 2009-07-22  Richard Guenther  <rguenther@suse.de>
162
163         PR c++/40799
164         * cp-gimplify.c (cp_gimplify_expr): Move handling of using
165         related exprs to ...
166         (cp_genericize_r): ... genericization stage.
167         (cp_genericize): Adjust.
168
169 2009-07-21  Jason Merrill  <jason@redhat.com>
170
171         Core issue 934
172         * call.c (reference_binding): Implement binding to { }.
173         (initialize_reference): Binding temporary to non-const && is fine.
174         * decl.c (grok_reference_init): Remove error for CONSTRUCTOR.
175
176         * decl.c (reshape_init_r): { T } is not an aggregate initializer
177         for class T.
178
179 2009-07-17  Richard Guenther  <rguenther@suse.de>
180
181         PR c/40401
182         * decl.c (finish_function): Do not emit unused result warnings
183         from here.
184         * cp-objcp-common.h (LANG_HOOKS_POST_GIMPLIFY_PASS): Use
185         c_warn_unused_result_pass.
186         * semantics.c (expand_or_defer_fn): Adjust assertion about IL status.
187         * optimize.c (clone_body): Clone in GENERIC.
188         (maybe_clone_body): Do not clear DECL_SAVED_TREE.
189         * decl2.c (cp_write_global_declarations): Fix body test.
190         Do not call cgraph_optimize.
191         * Make-lang.in (optimize.o): Add tree-iterator.h dependency.
192         * method.c (use_thunk): Register thunk with
193         cgraph_finalize_function.
194         * error.c (function_category): Guard access of DECL_LANG_SPECIFIC.
195
196 2009-07-17  Richard Guenther  <rguenther@suse.de>
197
198         * init.c (build_vec_delete_1): Do not set DECL_REGISTER on the
199         temporary pointer.
200
201 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
202             Manuel López-Ibáñez  <manu@gcc.gnu.org>
203
204         PR 40435 
205         * typeck.c, init.c, class.c, method.c, rtti.c, except.c, error.c,
206         tree.c, cp-gimplify.c, cxx-pretty-print.c, pt.c, semantics.c,
207         call.c, cvt.c, mangle.c: Add location argument to
208         fold_{unary,binary,ternary}, fold_build[123], build_call_expr,
209         build_size_arg, build_fold_addr_expr, build_call_array,
210         non_lvalue, size_diffop, fold_build1_initializer,
211         fold_build2_initializer, fold_build3_initializer,
212         fold_build_call_array, fold_build_call_array_initializer,
213         fold_single_bit_test, omit_one_operand, omit_two_operands,
214         invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref,
215         fold_indirect_ref, combine_comparisons, fold_builtin_*,
216         fold_call_expr, build_range_check, maybe_fold_offset_to_address,
217         round_up, round_down.
218
219 2009-07-16  Jason Merrill  <jason@redhat.com>
220
221         PR libstdc++/37907
222         Split POD into "standard-layout" and "trivial" as per N2230,
223         Support std::is_standard_layout and std::is_trivial traits.
224         * cp-tree.h (enum cp_trait_kind): Add CPTK_IS_STD_LAYOUT,
225         CPTK_IS_TRIVIAL.
226         (struct lang_type_class): Add non_std_layout.
227         (CLASSTYPE_NON_STD_LAYOUT): New.
228         * class.c (check_bases): Set it.
229         (check_field_decls): Likewise.
230         (check_bases_and_members): Likewise.
231         * parser.c (cp_parser_primary_expression): Handle RID_IS_STD_LAYOUT,
232         RID_IS_TRIVIAL.
233         (cp_parser_trait_expr): Likewise.
234         * semantics.c (trait_expr_value): Handle CPTK_IS_STD_LAYOUT,
235         CPTK_IS_TRIVIAL.
236         (finish_trait_expr): Likewise.
237         * tree.c (scalarish_type_p, trivial_type_p, std_layout_type_p): New.
238         (pod_type_p): Use them.
239         (type_has_nontrivial_copy_init, type_has_nontrivial_default_init): New.
240
241         Adjust bits of the language that no longer refer to POD types.
242         * call.c (convert_arg_to_ellipsis): Use type_has_nontrivial_copy_init
243         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
244         (build_x_va_arg): Likewise.
245         (call_builtin_trap): Remove.
246         * decl.c (declare_local_label): Use type_has_nontrivial_default_init
247         and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
248         (cp_finish_decl): Likewise.
249         (check_previous_goto_1, check_goto): Adjust error.
250         * typeck.c (build_class_member_access_expr): Check
251         CLASSTYPE_NON_STD_LAYOUT rather than CLASSTYPE_NON_POD_P.
252
253 2009-07-14  Taras Glek  <tglek@mozilla.com>
254             Rafael Espindola  <espindola@google.com>
255
256         * Make-lang.in: Added CP_PLUGIN_HEADERS and
257         c.install-target to export cp-tree.h cxx-pretty-print.h
258         name-lookup.h headers for plugins.
259
260 2009-07-14  Jason Merrill  <jason@redhat.com>
261
262         PR c++/37276
263         * decl.c (decls_match): A non-extern-C declaration doesn't match
264         a builtin extern-C declaration.
265
266         PR c++/40746
267         * name-lookup.c (qualified_lookup_using_namespace): Don't stop
268         looking in used namespaces just because we found something on
269         another branch.
270
271         PR c++/40740
272         * semantics.c (perform_koenig_lookup): Handle empty template args.
273
274         * call.c (build_over_call): Use can_trust_pointer_alignment.
275
276 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
277
278         PR debug/40705
279         PR c++/403057
280         * decl2.c (grokfield): Don't call set_underlying_type on typedef
281         decls that are type names.
282
283 2009-07-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
284
285         PR C++/22154
286         * parser.c (cp_parser_elaborated_type_specifier): Accept typename in
287         front of qualified names.
288
289 2009-07-12  Jason Merrill  <jason@redhat.com>
290
291         PR c++/36628
292         * tree.c (rvalue): Use lvalue_or_rvalue_with_address_p.
293
294         PR c++/37206
295         * cp-tree.h (enum cp_lvalue_kind_flags): Add clk_rvalueref.
296         * tree.c (lvalue_p_1): Return it.  Remove
297         treat_class_rvalues_as_lvalues parm.
298         (real_lvalue_p): Disallow pseudo-lvalues here.
299         (lvalue_or_rvalue_with_address_p): New fn.
300         * call.c (initialize_reference): Use it instead of real_lvalue_p.
301
302         PR c++/40689
303         * init.c (build_new_1): Handle initializer list as array initializer.
304         (build_vec_init): Likewise.
305         * typeck.c (cp_build_modify_expr): Likewise.
306         * typeck2.c (process_init_constructor_array): Error rather than abort
307         if too many initializers.
308
309 2009-07-10  Jakub Jelinek  <jakub@redhat.com>
310
311         PR c++/40502
312         * error.c (cp_print_error_function): Check for NULL block.
313
314 2008-07-09  Simon Martin  <simartin@users.sourceforge.net>
315             Jason Merrill  <jason@redhat.com>
316
317         * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
318         append_type_to_template_for_access_check_1): Use CLASS_TYPE_P.
319
320 2009-07-09  Dodji Seketeli  <dodji@redhat.com>
321
322         PR c++/40684
323         * pt.c (type_unification_real): Use tsubst_template_arg instead
324         of tsubst to substitute default template arguments.
325
326 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
327
328         PR c++/31246
329         * init.c (build_new_1): Set TREE_NO_WARNING for compiler-generated
330         code.
331         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
332         
333
334 2009-07-07  Jason Merrill  <jason@redhat.com>
335
336         PR c++/35828
337         * pt.c (tsubst_decl): Don't abort if we didn't change anything
338         in a TEMPLATE_DECL's args.
339
340 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
341
342         * semantics.c (finalize_nrv_r): Replace EXPR_LOCUS by
343         EXPR_LOCATION.
344         
345 2009-07-07  Jason Merrill  <jason@redhat.com>
346
347         PR c++/37816
348         * decl.c (build_enumerator): Don't add enumerators for a
349         scoped enum to the enclosing class.
350
351         PR c++/40639
352         * decl.c (start_enum): Allow dependent underlying type.
353
354         PR c++/40633
355         * decl.c (finish_enum): Finish scope even in a template.
356
357 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
358
359         * init.c: Replace %J by an explicit location. Update all calls.
360         * decl.c: Likewise.
361         * typeck2.c: Likewise.
362         * pt.c: Likewise.
363         * name-lookup.c: Likewise.
364         
365 2009-07-06  Manuel López-Ibáñez  <manu@gcc.gnu.org>
366
367         * decl.c: Replace %H by an explicit location. Update all calls.
368         * except.c: Likewise.
369         * semantics.c: Likewise.
370         * parser.c: Likewise.
371
372 2009-07-06  Simon Martin  <simartin@users.sourceforge.net>
373
374         PR c++/40557
375         * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
376         append_type_to_template_for_access_check_1): Use
377         RECORD_OR_UNION_CODE_P.
378
379 2009-07-04  Jason Merrill  <jason@redhat.com>
380
381         * pt.c (retrieve_specialization): Don't get confused by a
382         using-declaration that brings in another instance of this template
383         from a base class.
384
385         * ptree.c (cxx_print_type): Fix logic.
386
387         * cp-tree.h (LANG_DECL_FN_CHECK): Fix non-checking version.
388
389         PR c++/40619
390         * cp-tree.h (struct lang_decl_parm): New.
391         (struct lang_decl): Add it.
392         (LANG_DECL_PARM_CHECK): New.
393         (DECL_PARM_INDEX): New.
394         * decl2.c (parm_index): Remove.
395         * lex.c (retrofit_lang_decl): Handle parms.
396         (cxx_dup_lang_specific_decl): Likewise.
397         * mangle.c (write_expression): Adjust.
398         * tree.c (cp_tree_equal): Adjust.
399         (decl_linkage): Only check DECL_COMDAT for functions and variables.
400         * parser.c (cp_parser_parameter_declaration_list): Set
401         DECL_PARM_INDEX.
402         * pt.c (iterative_hash_template_arg): Hash it.
403
404 2009-07-03  Jason Merrill  <jason@redhat.com>
405
406         * cp-tree.h (struct lang_decl): Overhaul.
407         (struct lang_decl_flags): Remove.
408         (struct lang_decl_base): New.
409         (struct lang_decl_min): New.
410         (struct lang_decl_fn): New.
411         (struct lang_decl_ns): New.
412         (CAN_HAVE_FULL_LANG_DECL_P): Replace with LANG_DECL_HAS_MIN.
413         (LANG_DECL_MIN_CHECK): New.
414         (LANG_DECL_FN_CHECK): New.
415         (LANG_DECL_NS_CHECK): New.
416         (STRIP_TEMPLATE): New.
417         (NON_THUNK_FUNCTION_CHECK): Remove.
418         (DECL_DECLARES_FUNCTION_P): New.
419         (lots): Adjust.
420         * lex.c (retrofit_lang_decl, cxx_dup_lang_specific_decl): Adjust.
421         * decl.c (push_local_name, duplicate_decls): Adjust.
422         * decl2.c (start_objects): Don't set u2sel.
423         * semantics.c (finish_omp_threadprivate): Adjust.
424         * class.c (build_clone): Don't do much on TEMPLATE_DECLs.
425         (decl_cloned_function_p): Out-of-line implementation of macros.
426         (clone_function_decl, adjust_clone_args): Use DECL_CLONED_FUNCTION_P.
427         * mangle.c (write_unqualified_name): Don't check function flags
428         on non-functions.
429         * method.c (make_alias_for): Don't set DECL_CLONED_FUNCTION.
430         * pt.c (build_template_decl): Don't set function flags.
431         (check_default_tmpl_args): Check that it's a function.
432         (instantiate_template): Use DECL_ABSTRACT_ORIGIN to find the
433         cloned template.
434
435         * pt.c (tsubst_decl) [FUNCTION_DECL]: Don't tsubst
436         DECL_CLONED_FUNCTION.
437
438         * cp-tree.h (struct lang_type_class): Move sorted_fields here.
439         * class.c (finish_struct_1): Adjust.
440         * ptree.c (cxx_print_decl, cxx_print_type): Adjust.
441         * search.c (lookup_field_1): Adjust.
442
443         * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Remove.
444         * decl.c (finish_method): Don't add to it.
445         * class.c (fixup_pending_inline): Remove.
446         (fixup_inline_methods): Remove.
447         (finish_struct_1): Don't call it.
448
449         * error.c (dump_function_name): Handle null name.
450
451 2009-07-02  Mark Mitchell  <mark@codesourcery.com>
452
453         * typeck.c (cp_build_binary_op): Move warnings about use of NULL
454         in arithmetic earlier and allow comparisions of NULL with
455         pointers-to-members.
456
457 2009-07-02  Jason Merrill  <jason@redhat.com>
458
459         Use hash tables for template specialization lookup.
460         * pt.c (struct spec_entry): New type.
461         (decl_specializations, type_specializations): New hash tables.
462         (register_specialization, retrieve_specialization): Use them.
463         (reregister_specialization, lookup_template_class): Use them.
464         (eq_specializations, hash_tmpl_and_args, hash_specialization): New.
465         (iterative_hash_template_arg): New.
466         (init_template_processing): New
467         (process_partial_specialization): Don't look to see if we already
468         have this partial specialization.
469         (maybe_process_partial_specialization): Handle reassigning
470         full specializations when we get an explicit specialization
471         of the partial instantiation.
472         (tsubst_friend_function): Adjust specialization reassignment code.
473         (instantiate_template): Only do one lookup.
474         (instantiate_decl): Don't do any lookup.
475         * cp-tree.h: Declare init_template_processing.
476         * decl.c (duplicate_decls): Pass args to reregister_specialization.
477
478 2009-07-01  Jason Merrill  <jason@redhat.com>
479
480         * cp-tree.h (DECL_CLASS_TEMPLATE_P): Use DECL_IMPLICIT_TYPEDEF_P.
481
482         * pt.c (register_specialization): Use duplicate_decls to merge
483         the argument with a previous specialization.
484         (check_explicit_specialization): Call register_specialization to
485         merge the TEMPLATE_DECL with a previous version.
486         (determine_specialization): Return the args even if fn is a template.
487
488 2009-07-01  Ian Lance Taylor  <iant@google.com>
489
490         * g++spec.c (lang_specific_driver): Bump num_args by 1.
491
492 2009-06-30  Jason Merrill  <jason@redhat.com>
493
494         PR c++/40595
495         * pt.c (tsubst_pack_expansion): Handle unexpanded packs in an
496         EXPR_PACK_EXPANSION.
497
498 2009-06-29  Jason Merrill  <jason@redhat.com>
499
500         PR c++/40274
501         * error.c (dump_template_parms): Pass all args to
502         count_non_default_template_args.
503         (count_non_default_template_args): Pull out the inner ones.
504
505 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
506
507         * decl.c (duplicate_decls): Re-indent.
508
509 2009-06-25  Ian Lance Taylor  <iant@google.com>
510
511         * call.c (avoid_sign_compare_warnings): New static function.
512         (build_new_op): Call it.
513         * typeck.c (cp_build_binary_op): Don't call warn_sign_compare if
514         TREE_NO_WARNING is set on either operand.
515
516 2009-06-25  Ian Lance Taylor  <iant@google.com>
517
518         * g++spec.c (SKIPOPT): define.
519         (lang_specific_driver): Handle -static-libstdc++.  Only add
520         LIBSTDCXX_STATIC if we add LIBSTDCXX.
521
522 2009-06-25  Ian Lance Taylor  <iant@google.com>
523
524         * cvt.c (convert_to_void): Only warn about COND_EXPR if neither
525         the second nor third operand has side effects.
526
527 2009-06-25  Ian Lance Taylor  <iant@google.com>
528
529         * parser.c (cp_parser_binary_expression): Increment
530         c_inhibit_evaluation_warnings while parsing the right hand side of
531         "true || x" or "false && x".
532         * typeck.c (cp_build_binary_op): Only call warn_for_sign_compare
533         if c_inhibit_evaluation_warnings is zero.
534
535 2009-06-24  Jason Merrill  <jason@redhat.com>
536
537         * error.c (dump_decl): Do say "typedef" for the injected class name.
538
539         * pt.c (lookup_template_class): Use currently_open_class,
540         compare template args later.
541
542         PR c++/40342
543         * decl.c (decls_match): Check DECL_TI_TEMPLATE too.
544         * class.c (resolve_address_of_overloaded_function): Fix typo.
545
546 2009-06-18  Aldy Hernandez  <aldyh@redhat.com>
547
548         * class.c (get_vtable_decl): Replace finish_decl with cp_finish_decl.
549         * decl.c (finish_decl): Remove.
550         (declare_global_var): Replace finish_decl with cp_finish_decl.
551         (start_method): Same.
552         * rtti.c (emit_tinfo_decl): Same.
553         * pt.c (tsubst_expr): Same.
554         (instantiate_decl): Same.
555         * decl2.c (grokbitfield): Same.
556         * name-lookup.c (pushdecl_top_level_1): Same.
557         * cp-tree.h: Remove finish_decl.
558
559 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
560
561         * g++-spec.c (LIBSTDCXX_STATIC): Default to NULL.
562         (lang_specific_driver): Always allocate extra argument.
563         Add LIBSTDCXX_STATIC to arglist if defined and linking
564         statically.
565
566 2009-06-16  Ian Lance Taylor  <iant@google.com>
567
568         * Make-lang.in (cp/class.o): Depend upon gt-cp-class.h.
569         (cp/semantics.o): Depend upon gt-cp-semantics.h.
570
571 2009-06-16  Ian Lance Taylor  <iant@google.com>
572
573         * parser.c (cp_unevaluated_operand): Define global variable.
574         (cp_parser_question_colon_clause): Increment
575         c_inhibit_evaluation_warnings when evaluating an expression which
576         will never be executed.
577         (cp_parser_decltype): Increment cp_unevaluated_operand and
578         c_inhibit_evaluation_warnings, not skip_evaluation.
579         (cp_parser_sizeof_operand): Likewise.
580         (cp_parser_enclosed_template_argument_list): Save
581         cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
582         skip_evaluation.
583         * cp-tree.h (struct saved_scope): Remove skip_evaluation field.
584         Add unevaluated_operand and inhibit_evaluation_warnings fields.
585         (cp_unevaluated_operand): Declare.
586         * name-lookup.c (push_to_top_level): Save cp_unevaluated_operand
587         and c_inhibit_evaluation_warnings rather than skip_evaluation.
588         (pop_from_top_level): Restore cp_unevaluated_operand and
589         c_inhibit_evaluation_warnings rather than skip_evaluation.
590         * class.c (build_base_path): Check cp_unevaluated_operand rather
591         than skip_evaluation.
592         * typeck.c (build_class_member_access_expr): Likewise.
593         (cp_build_binary_op): Don't warn about bad shift counts if
594         c_inhibit_evaluation_warnings is non-zero.
595         * pt.c (coerce_template_parms): Save state of
596         cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
597         skip_evaluation.
598         (tsubst_aggr_type): Likewise.
599         (tsubst_pack_expansion): Check cp_unevaluated_operand rather than
600         skip_evaluation.
601         (tsubst_copy): Likewise.
602         (tsubst): Set cp_unevaluated_operand and
603         c_inhibit_evaluation_warnings, not skip_evaluation.
604         (tsubst_copy_and_build): Likewise.
605         * call.c (convert_arg_to_ellipsis): Check cp_unevaluated_operand
606         rather than skip_evaluation.
607         * decl2.c (mark_used): Likewise.
608         * semantics.c (finish_non_static_data_member): Likewise.
609         * cvt.c (cp_convert_and_check): Check
610         c_inhibit_evaluation_warnings rather than skip_evaluation.
611         * mangle.c (write_type): Set cp_unevaluated_operand rather than
612         skip_evaluation.
613
614 2009-06-15  Ian Lance Taylor  <iant@google.com>
615
616         * parser.c (cp_parser_direct_declarator): Add braces around
617         variables declared before label.
618
619 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
620
621         * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Remove.
622         * cp-tree.h (cxx_comdat_group): Change signature.
623         * decl.c (duplicate_decls): Use DECL_COMDAT_GROUP.
624         (cxx_comdat_group): Change signature.
625         * decl2.c (comdat_linkage, maybe_make_one_only): Update call to
626         make_decl_one_only.
627         (constrain_visibility, get_guard): Use DECL_COMDAT_GROUP.
628         * method.c (use_thunk): Update call to make_decl_one_only.
629         * optimize.c (maybe_clone_body): Use DECL_COMDAT_GROUP
630
631 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
632
633         * typeck.c (cp_build_binary_op): Pass location to overflow_warning.
634         (build_modify_expr): New arg.
635         * semantics.c (finish_unary_op_expr): Pass location to
636         overflow_warning.
637         (handle_omp_for_class_iterator): Pass location to build_modify_expr.
638         * typeck.c (cxx_sizeof_or_alignof_type): Pass location to
639         c_sizeof_or_alignof_type.
640         (build_array_ref): New argument.
641         (build_compound_expr): Same.
642         (build_const_cast): Same.
643         (build_ptrmemfunc): Pass location to build_c_cast.
644         * init.c (avoid_placement_new_aliasing): Pass location to
645         build_stmt.
646         (build_vec_delete_1): Pass location to cp_build_modify_expr,
647         build_compound_expr.
648         * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
649         * decl.c (poplevel): Pass location to c_build_bind_expr.
650         (finish_case_label): Pass location to build_case_label.
651         (finish_constructor_body): Same.
652         (finish_destructor_body): Pass location to build_stmt.
653         (cxx_maybe_build_cleanup): Same, but to build_compound_expr.
654         * call.c (build_new_op): Pass location to build_array_ref.
655         (build_x_va_arg): Pass location to build_va_arg.
656         * except.c (expand_end_catch_block): Pass location to
657         build_stmt.
658         * cp-tree.h (build_array_ref): New argument.
659         (build_compound_expr): Same.
660         (build_c_cast): Same.
661         * cp-gimplify.c (gimplify_if_stmt): Pass location on down.
662         (gimplify_switch_stmt): Same.
663         * typeck2.c (split_nonconstant_init_1): Same.
664         * pt.c (tsubst_copy): Same.
665         * semantics.c (add_decl_expr): Same.
666         (do_poplevel): Same.
667         (push_cleanup): Same.
668         (finish_goto_stmt): Same.
669         (finish_expr_stmt): Same.
670         (begin_if_stmt): Same.
671         (begin_while_stmt): Same.
672         (begin_do_stmt): Same.
673         (finish_return_stmt): Same.
674         (begin_for_stmt): Same.
675         (finish_break_stmt): Same.
676         (finish_continue_stmt): Same.
677         (begin_switch_stmt): Same.
678         (begin_try_block): Same.
679         (begin_handler): Same.
680         (finish_asm_stmt): Same.
681         (finish_label_stmt): Same.
682         (finish_stmt_expr_expr): Same.
683         (finalize_nrv_r): Same.
684         (finish_omp_atomic): Same.
685         * name-lookup.c (do_using_directive): Same.
686         * decl2.c (grok_array_decl): Same.
687         * parser.c (cp_parser_cast_expression): Same.
688         (cp_parser_selection_statement): Same.
689         (cp_parser_implicitly_scoped_statement): Same.
690         (cp_parser_objc_selector_expression): Same.
691         (cp_parser_objc_synchronized_statement): Same.
692         (cp_parser_objc_throw_statement): Same.
693         (cp_parser_omp_critical): Same.
694         (cp_parser_omp_master): Same.
695         * typeck.c (build_function_call): Add location argument.
696         * init.c: Add location argument to all build_decl calls.
697         * class.c: Same.
698         * method.c: Same.
699         * rtti.c: Same.
700         * tree.c: Same.
701         * pt.c: Same.
702         * semantics.c: Same.
703         * lex.c: Same.
704         * decl2.c: Same.
705         * cp-gimplify.c: Same.
706         * decl.c: Same.
707         (cp_make_fname_decl): Add location argument.  Pass location ot
708         build_decl.
709         (finish_case_label): Same.
710         * cp-tree.h (finish_case_label): Add location argument.
711         * parser.c (cp_parser_label_for_labeled_statement): Pass location to
712         finish_case_label.
713         
714 2009-06-09  Jason Merrill  <jason@redhat.com>
715
716         PR c++/40381
717         * decl2.c (mark_used): Return after complaining about deleted fn.
718
719 2009-06-08  Jason Merrill  <jason@redhat.com>
720
721         * parser.c (cp_parser_type_id_1): 'auto' type is ok with a
722         late-specified return type.
723
724 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
725
726         PR c++/40373
727         * call.c (check_dtor_name): Return false even if
728         get_type_value (name) is error_mark_node.
729
730         PR c++/40370
731         PR c++/40372
732         * parser.c (cp_parser_direct_declarator): Don't set TREE_SIDE_EFFECTS
733         on error_mark_node.  Check for VLAs outside of function context
734         before check whether to wrap bounds into a NOP_EXPR with
735         TREE_SIDE_EFFECTS.
736
737 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
738
739         * repo.c (get_base_filename): Use aux_base_name rather than
740         alternate temporary file during second compare debug compilation.
741         (finish_repo): Skip during -fcompare-debug-second.
742
743 2009-06-06  Ian Lance Taylor  <iant@google.com>
744
745         * parser.c (cp_parser_label_for_labeled_statement): Support
746         attribute on labels if immediately followed by semicolon.
747         * semantics.c (finish_label_stmt): Return new label.
748         * pt.c (tsubst_expr): Handle attributes for LABEL_EXPR.
749
750 2009-06-03  Ian Lance Taylor  <iant@google.com>
751
752         * Make-lang.in (cc1plus-checksum.o): Depend upon $(CONFIG_H) and
753         $(SYSTEM_H).
754
755 2009-06-02  Mark Mitchell  <mark@codesourcery.com>
756
757         * decl.c (maybe_deduce_size_from_array_init): Use relayout_decl.
758
759 2009-06-02  Jason Merrill  <jason@redhat.com>
760
761         PR c++/40308
762         PR c++/40311
763         * typeck.c (cp_build_modify_expr): Always pass init-lists to the
764         conversion code.
765         * call.c (implicit_conversion): Allow init-list conversion to scalar
766         during direct-initialization, too.  Mark the conversion bad if it
767         has too many levels of braces.
768         (convert_like_real): And give a helpful error.
769
770         PR c++/40306
771         PR c++/40307
772         * decl.c (cp_finish_decl): Handle auto deduction from ().
773         * typeck.c (build_x_indirect_ref): Handle dereferencing an operand
774         with dependent type that is known to be a pointer.
775
776 2009-06-02  Simon Martin  <simartin@users.sourceforge.net>
777
778         PR c++/38089
779         * pt.c (register_specialization): Properly setup DECL_CONTEXT for
780         specializations in an invalid namespace.
781
782 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
783
784         * error.c (print_instantiation_partial_context): Print column
785         numbers.
786
787 2009-05-29  Ian Lance Taylor  <iant@google.com>
788
789         * error.c (cp_printer): Don't use va_arg with enum type.
790
791 2009-05-28  Dodji Seketeli  <dodji@redhat.com>
792
793         PR c++/39754
794         * cp-tree.h (canonical_type_variant): Remove this function declaration.
795         (strip_typedefs): New function declaration.
796         * tree.c (strip_typedefs): New function definition.
797         (canonical_type_variant): Remove function definition.
798         * cvt.c (convert_from_reference): No need to use
799         canonical_type_variant.
800         * typeck.c (cp_build_indirect_ref): Likewise.
801         * error.c (dump_template_bindings): Use strip_typedefs instead of
802         canonical_type_variant.
803         * pt.c (convert_template_argument, unify): Likewise.
804         * mangle.c (canonicalize_for_substitution): Don't use
805         canonical_type_variant.
806
807 2009-05-27  Jason Merrill  <jason@redhat.com>
808
809         * call.c (implicit_conversion): Handle conversion from
810         initializer-list to scalar.
811         (convert_like_real): Likewise.  Avoid crashing on list
812         initialization with bad conversions.
813         (can_convert): Use LOOKUP_EXPLICIT.
814         (can_convert_arg_bad): Add flags parm.
815         * cp-tree.h: Adjust.
816         * typeck.c (convert_for_assignment): Pass flags.
817
818 2009-05-27  Ian Lance Taylor  <iant@google.com>
819
820         * Make-lang.in (g++$(exeext)): Change $(COMPILER) to $(LINKER).
821         (cc1plus-dummy$(exeext), cc1plus$(exeext)): Likewise.
822
823 2009-05-26  Ian Lance Taylor  <iant@google.com>
824
825         * Make-lang.in (g++spec.o): Use $(COMPILER).
826         (g++$(exeext), cc1plus-dummy$(exeext)): Likewise.
827         (cc1plus$(exeext)): Likewise.
828
829 2009-05-26  Dodji Seketeli  <dodji@redhat.com>
830
831         PR c++/40007
832         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Remove this accessor.
833         (TI_TYPEDEFS_NEEDING_ACCESS_CHECKING): New accessor.
834         (get_types_needing_access_check): Declare new entry point.
835         * pt.c (append_type_to_template_for_access_check_1,
836         get_types_needing_access_check): New functions.
837         (perform_typedefs_access_check): Accept FUNCTION_DECLs and
838         RECORD_TYPEs rather than TEMPLATE_DECLs. Use the new
839         get_types_needing_access_check, no more
840         MEMBER_TYPES_NEEDING_ACCESS_CHECK.
841         (instantiate_class_template): Set input_location to the source
842         location of the most specialized template definition.
843         Perform access check using the RECORD_TYPE of the template, not its
844         associated most generic TEMPLATE_DECL.
845         (append_type_to_template_for_access_check): Augment function
846         comments. Use the new get_types_needing_access_check, not
847         MEMBER_TYPE_NEEDING_ACCESS_CHECK. Use the new
848         append_type_to_template_for_access_check_1 subroutine.
849
850 2009-05-22  Jason Merrill  <jason@redhat.com>
851
852         PR c++/38064
853         * typeck.c (cp_build_binary_op): Allow ENUMERAL_TYPE in
854         arithmetic comparisons.
855         (cp_common_type): Handle scoped enums.
856
857         * call.c (promoted_arithmetic_type_p): Don't use INTEGRAL_TYPE_P.
858         (add_builtin_candidate, add_builtin_candidates): Likewise.
859         (convert_like_real): Likewise.
860         * class.c (check_bitfield_decl): Likewise.
861         * decl.c (check_static_variable_definition): Likewise.
862         (compute_array_index_type): Likewise.
863         * decl2.c (grokbitfield): Likewise.
864         * init.c (build_new_1): Likewise.
865         * pt.c (convert_nontype_argument): Likewise.
866         (current_instantiation): Likewise.
867         * tree.c (pod_type_p): Likewise.
868         * typeck.c (build_static_cast_1): Likewise.
869         (build_reinterpret_cast_1): Likewise.
870
871 2009-05-22  Richard Guenther  <rguenther@suse.de>
872
873         PR middle-end/38964
874         * init.c (avoid_placement_new_aliasing): Remove.
875         (build_new_1): Do not call it.
876
877 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
878
879         * decl2.c (decl_needed_p): Consider dllexport'd functions needed.
880         * semantics.c (expand_or_defer_fn): Similarly.
881
882 2009-05-20  Ian Lance Taylor  <iant@google.com>
883
884         * parser.c (cp_parser_postfix_expression): Change args to a vec.
885         Release it when done.
886         (tree_vector): Define typedef.  Define VEC functions.
887         (cp_parser_parenthesized_expression_list): Change return type to
888         vec.  Change all callers.
889         (cp_parser_new_expression): Change placement and initializer to
890         vecs.  Release them when done.
891         (cp_parser_new_placement): Change return type to vec.  Change all
892         callers.
893         (cp_parser_new_initializer): Likewise.
894         * typeck.c (build_function_call_vec): Just call
895         cp_build_function_call_vec.
896         (cp_build_function_call): Just build a vec and call
897         cp_build_function_call_vec.
898         (cp_build_function_call_vec): New function based on old
899         cp_build_function_call.
900         (convert_arguments): Remove nargs and argarray parameters.  Change
901         values to a vec.  Change caller.
902         (build_x_compound_expr_from_vec): New function.
903         (cp_build_modify_expr): Build vec to pass to
904         build_special_member_call.
905         * call.c (struct z_candidate): Add first_arg field.  Change args
906         field to vec.
907         (convert_class_to_reference): Handle first argument separately.
908         (add_candidate): Add first_arg parameter.  Change args parameter
909         to vec.  Change all callers.
910         (add_function_candidate, add_conv_candidate): Likewise.
911         (add_template_candidate_real, add_template_candidate): Likewise.
912         (add_template_conv_candidate): Likewise.
913         (build_user_type_conversion_1): Handle first argument separately.
914         (resolve_args): Change return type and parameter type to vecs.
915         Change all callers.
916         (perform_overload_resolution): Change args parameter to vec.
917         Change all callers.
918         (build_new_function_call, build_operator_new_call): Likewise.
919         (add_candidates): Likewise.
920         (build_op_call): New globally visible function, built from and
921         replacing static function build_object_call.
922         (build_new_op): Don't handle CALL_EXPR.  Build vec, not tree_list,
923         of arguments.
924         (build_op_delete_call): Build vec to pass to
925         cp_build_function_call_vec.
926         (build_temp): Build vec to pass to build_special_member_call.
927         (convert_like_real): Likewise.
928         (perform_direct_initialization_if_possible): Likewise.
929         (build_over_call): Handle first_arg field.  Use build_call_array
930         rather than build_call_list.
931         (build_special_member_call): Change args parameter to vec.  Change
932         all callers.
933         (build_new_method_call): Likewise.
934         * init.c (expand_default_init): Change parms to vec.
935         (build_raw_new_expr): Change placement and init to vecs.  Change
936         all callers.
937         (build_new_1, build_new): Likewise.
938         * class.c (resolve_address_of_overloaded_function): Build array to
939         pass to fn_type_unification.
940         * pt.c (tsubst_copy_and_build): For NEW_EXPR build vecs to pass to
941         build_new.  For CALL_EXPR create a vec rather than a tree_list;
942         expand a pack if necessary.
943         (fn_type_unification): Change args parameter to const tree *.  Add
944         nargs parameter.  Change all callers.
945         (type_unification_real): Likewise.
946         (unify): Build array to pass to type_unification_real.
947         (get_bindings): Build array to pass to fn_type_unification.
948         (any_type_dependent_arguments_p): Change args parameter to a vec.
949         Change all callers.
950         (make_args_non_dependent): Renamed from build_non_dependent_args.
951         Change return type to void.  Change parameter type to vec.  Change
952         all callers.
953         (do_auto_deduction): Pass an array to type_unification_real.
954         * semantics.c (perform_koenig_lookup): Change args to vec.  Change
955         all callers.
956         (finish_call_expr): Change args to vec.  Change all callers.  Call
957         build_op_call instead of passing CALL_EXPR to build_new_op.
958         (cxx_omp_create_clause_info): Allocate vec to pass to
959         build_special_member_call.
960         * decl2.c (build_offset_ref_call_from_tree): Change args parameter
961         to vec.  Change all callers.
962         * name-lookup.c (lookup_function_nonclass): Likewise.
963         (struct arg_lookup): Change args to vec.
964         (arg_assoc_namespace): Handle args as a vec.
965         (arg_assoc_args_vec): New static function.
966         (lookup_arg_dependent): Change args parameter to vec.  Change all
967         callers.
968         * method.c (do_build_assign_ref): Allocate vec to pass to
969         build_special_member_call.
970         * except.c (build_throw): Likewise.
971         * typeck2.c (build_functional_cast): Likewise.
972         * cvt.c (ocp_convert): Likewise.
973         * tree.c (build_min_non_dep_call_vec): Change last parameter to
974         vec.  Change all callers.
975         * cp-tree.h: Update declarations.
976         * name-lookup.h: Update declarations.
977
978 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
979
980         * typeck.c (default_conversion): Check targetm.promoted_type.
981         * decl.c (grokdeclarator): Check targetm.invalid_return_type.
982         (grokparms): Check targetm.invalid_parameter_type.
983         * cvt.c (ocp_convert): Check targetm.convert_to_type.
984         (build_expr_type_conversion): Check targetm.promoted_type.
985
986 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
987
988         * typeck.c (build_binary_op): Allow % on integal vectors.
989
990 2009-05-18  Jason Merrill  <jason@redhat.com>
991
992         Implement explicit conversions ops as specified in N2437.
993         * decl.c (grokdeclarator): Handle explicit conversion ops.
994         (check_initializer): Pass flags to store_init_value.
995         * decl2.c (maybe_emit_vtables): Likewise.
996         * init.c (expand_aggr_init_1): Likewise.
997         * call.c (convert_class_to_reference): Take flags parm,
998         check DECL_NONCONVERTING_P.
999         (build_user_type_conversion_1): Check DECL_NONCONVERTING_P.
1000         (add_builtin_candidates): Simplify getting type of conversion.
1001         (build_object_call): Likewise.  Check DECL_NONCONVERTING_P.
1002         (implicit_conversion): Pass through LOOKUP_ONLYCONVERTING.
1003         (reference_binding): Take flags parm.  Direct-initialize copy parm.
1004         (add_function_candidate): Direct-initialize the copy parm.
1005         (add_conv_candidate): Use LOOKUP_IMPLICIT, not LOOKUP_NORMAL.
1006         (build_builtin_candidate): Add LOOKUP_ONLYCONVERTING.
1007         (conditional_conversion): Likewise.
1008         (convert_like_real): Only complain about DECL_NONCONVERTING_P
1009         constructors.
1010         (perform_implicit_conversion_flags): Add flags parm to
1011         perform_implicit_conversion.  Improve diagnostics.
1012         * cp-tree.h (LOOKUP_IMPLICIT): New macro.
1013         (LOOKUP_COPY_PARM): New bit macro.
1014         * cvt.c (build_expr_type_conversion): Check DECL_NONCONVERTING_P.
1015         * typeck.c (convert_for_assignment): Take flags parm, pass it to
1016         perform_implicit_conversion_flags.
1017         (cp_build_modify_expr): Pass flags to convert_for_assignment.
1018         (convert_for_initialization): Likewise.
1019         * typeck2.c (store_init_value): Take flags parm, pass to
1020         digest_init_flags.
1021         (digest_init_flags): Add flags parm to digest_init.
1022         (digest_init_r): Take flags parm, pass to convert_for_initialization.
1023         (process_init_constructor_array): Pass it.
1024         (process_init_constructor_record): Likewise.
1025         (process_init_constructor_union): Likewise.
1026
1027 2009-05-16  Jason Merrill  <jason@redhat.com>
1028
1029         PR c++/40139
1030         * pt.c (tsubst_qualified_id): Retain the type if we aren't dealing
1031         with a dependent type.  Actually look up the destructor.
1032         * semantics.c (finish_id_expression): Fix logic.
1033         (finish_qualified_id_expr): Don't try to use 'this' if we aren't in
1034         a function.
1035         * typeck.c (build_x_unary_op): Diagnose taking the address of a
1036         constructor or destructor.
1037         * tree.c (get_first_fn): Handle OFFSET_REF.
1038
1039 2009-05-17  Joseph Myers  <joseph@codesourcery.com>
1040
1041         * tree.c (cxx_printable_name_internal): Allow consecutive
1042         translated and untranslated cached copies of the name of the
1043         current function.
1044
1045 2009-05-15  Ian Lance Taylor  <iant@google.com>
1046
1047         * cp-tree.h (enum cp_lvalue_kind_flags): Rename from
1048         cp_lvalue_kind.  Change all uses.
1049         (enum base_access_flags): Rename from enum base_access.  Change
1050         all uses.
1051         * parser.c (enum cp_parser_flags): Remove enum tag.
1052
1053 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1054
1055         PR 16302
1056         * call.c (build_new_op): Update calls to warn_logical_operator.
1057
1058 2009-05-14  Ian Lance Taylor  <iant@google.com>
1059
1060         * class.c (layout_class_type): Change itk to unsigned int.
1061         * decl.c (finish_enum): Change itk to unsigned int.
1062         * parser.c (cp_parser_check_decl_spec): Change ds to int.  Remove
1063         casts.
1064
1065 2009-05-13  David Mandelin <dmandelin@mozilla.com>:
1066
1067         * decl.c (duplicate_decls): Preserve parameter attributes.
1068
1069 2009-05-10  Jan Hubicka  <jh@suse.cz>
1070
1071         * decl2.c (cxx_callgraph_analyze_expr): Use
1072         cgraph_mark_address_taken.
1073
1074 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
1075
1076         * call.c (name_as_c_string): Call type_as_string_translate.
1077         Translate identifiers to locale character set.
1078         * cp-tree.h (lang_decl_name): Update prototype.
1079         (type_as_string_translate, decl_as_string_translate,
1080         cxx_printable_name_translate): Declare.
1081         * cxx-pretty-print.c (M_): Define.
1082         (pp_cxx_unqualified_id, pp_cxx_canonical_template_parameter): Mark
1083         English fragments for conditional translation with M_.
1084         * decl.c (grokdeclarator): Translate identifiers to locale
1085         character set for diagnostics.
1086         * error.c (M_): Define.
1087         (dump_template_bindings, dump_type, dump_aggr_type,
1088         dump_type_prefix, dump_global_iord, dump_simple_decl, dump_decl,
1089         dump_function_decl, dump_template_parms, dump_expr,
1090         dump_binary_op, op_to_string, assop_to_string): Mark English
1091         fragments for conditional translation with M_.
1092         (type_as_string): Disable translation of identifiers.
1093         (type_as_string_translate): New.
1094         (expr_as_string): Disable translation of identifiers.
1095         (decl_as_string): Disable translation of identifiers.
1096         (decl_as_string_translate): New.
1097         (lang_decl_name): Add parameter translate.
1098         (args_to_string): Call type_as_string_translate.
1099         (cp_print_error_function): Call cxx_printable_name_translate.
1100         (print_instantiation_full_context,
1101         print_instantiation_partial_context): Call
1102         decl_as_string_translate.
1103         * parser.c (cp_lexer_get_preprocessor_token): Use %qE for
1104         identifier in diagnostic.
1105         * tree.c (cxx_printable_name): Change to
1106         cxx_printable_name_internal.  Add parameter translate.
1107         (cxx_printable_name, cxx_printable_name_translate): New wrappers
1108         round cxx_printable_name_internal.
1109
1110 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
1111
1112         PR c/36892
1113         * call.c (build_call_a): Updated warn_deprecated_use call.
1114         (build_over_call): Likewise.
1115         * decl.c (grokdeclarator): Likewise.
1116         (grokparms): Likewise.
1117         * semantics.c (finish_id_expression): Likewise.
1118         * typeck.c (build_class_member_access_expr): Likewise.
1119         (finish_class_member_access_expr): Likewise.
1120
1121 2009-05-06  Dodji Seketeli  <dodji@redhat.com>
1122
1123         PR c++/17395
1124         * pt.c (tsubst_copy) <case PARM_DECL>: We don't want to tsubst the
1125         whole list of PARM_DECLs, just the current one.
1126
1127 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
1128
1129         * cp-tree.h:
1130         (opname_tab, assignop_tab, update_member_visibility, yyerror, yyhook,
1131         mangle_compound_literal): Remove unused declarations.
1132         (build_vfield_ref, cxx_print_statistics, clone_function_decl,
1133         adjust_clone_args, maybe_push_cleanup_level, pushtag, make_anon_name,
1134         pushdecl_top_level_maybe_friend, pushdecl_top_level_and_finish,
1135         check_for_out_of_scope_variable, print_other_binding_stack,
1136         maybe_push_decl, cxx_mark_addressable, force_target_expr,
1137         build_target_expr_with_type, finish_case_label,
1138         cxx_maybe_build_cleanup, begin_eh_spec_block, finish_eh_spec_block,
1139         check_template_keyword, cxx_omp_predetermined_sharing,
1140         cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
1141         cxx_omp_clause_assign_op, cxx_omp_clause_dtor, cxx_omp_finish_clause,
1142         cxx_omp_privatize_by_reference): Rearrange the declarations line to
1143         match the comment that indicates the .c file which the functions are
1144         defined.
1145         (cxx_print_xnode, cxx_print_decl, cxx_print_type,
1146         cxx_print_identifier, cxx_print_error_function, pushdecl): Add comment.
1147
1148 2009-05-05  Nathan Sidwell  <nathan@codesourcery.com>
1149
1150         * typeck.c (cp_build_compound_expr): Require RHS to have a known
1151         type.
1152         * class.c (resolve_address_of_overloaded_function): Use
1153         OVL_CURRENT for error message.
1154         (instantiate_type): Forbid COMPOUND_EXPRs and remove code dealing
1155         with them.  Do not copy the node.
1156
1157 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
1158
1159         PR c++/40013
1160         * pt.c (tsubst): If magic NOP_EXPR with side-effects has no type,
1161         set it from its operand's type after tsubst_expr.
1162
1163 2009-05-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1164
1165         PR c++/28152
1166         * parser.c (cp_lexer_get_preprocessor_token):  Do not store the
1167         canonical spelling for keywords.
1168         (cp_parser_attribute_list): Use the canonical spelling for
1169         keywords in attributes.
1170
1171 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
1172
1173         * cxx-pretty-print.c (is_destructor_name, pp_cxx_unqualified_id,
1174         pp_cxx_template_keyword_if_needed, pp_cxx_postfix_expression,
1175         pp_cxx_new_expression, pp_cxx_delete_expression,
1176         pp_cxx_unary_expression, pp_cxx_assignment_operator,
1177         pp_cxx_assignment_expression, pp_cxx_expression,
1178         pp_cxx_function_specifier, pp_cxx_decl_specifier_seq,
1179         pp_cxx_simple_type_specifier, pp_cxx_type_specifier_seq,
1180         pp_cxx_exception_specification, pp_cxx_direct_declarator,
1181         pp_cxx_ctor_initializer, pp_cxx_type_id, pp_cxx_statement,
1182         pp_cxx_namespace_alias_definition, pp_cxx_template_parameter,
1183         pp_cxx_canonical_template_parameter, pp_cxx_template_declaration,
1184         pp_cxx_declaration, pp_cxx_typeid_expression,
1185         pp_cxx_va_arg_expression, pp_cxx_offsetof_expression,
1186         pp_cxx_trait_expression): Mostly use pp_string and
1187         pp_cxx_ws_string in place of pp_identifier and pp_cxx_identifier
1188         for non-identifiers.  Mark English strings for translation.
1189         * cxx-pretty-print.h (pp_cxx_ws_string): Define.
1190         * error.c (dump_template_parameter, dump_template_bindings,
1191         dump_type, dump_aggr_type, dump_type_prefix, dump_simple_decl,
1192         dump_decl, dump_template_decl, dump_function_decl,
1193         dump_parameters, dump_exception_spec, dump_template_parms,
1194         dump_expr, dump_binary_op, dump_unary_op, op_to_string,
1195         assop_to_string, args_to_string, cp_print_error_function,
1196         print_instantiation_full_context,
1197         print_instantiation_partial_context): Mostly use pp_string and
1198         pp_cxx_ws_string in place of pp_identifier and pp_cxx_identifier
1199         for non-identifiers.  Mark English strings for translation.
1200         (dump_global_iord): Mark strings for translation; use longer
1201         strings instead of substituting single words.
1202         (function_category): Return a format string marked for
1203         translation, not a single word or phrase to substitute in a longer
1204         phrase.
1205
1206 2009-04-28  Ben Elliston  <bje@au.ibm.com>
1207
1208         PR c++/35652
1209         Revert:
1210
1211         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1212
1213         * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.
1214
1215 2009-04-27  Ian Lance Taylor  <iant@google.com>
1216
1217         * semantics.c (finish_omp_clauses): Change type of c_kind to enum
1218         omp_clause_code.
1219
1220 2009-04-27  Jakub Jelinek  <jakub@redhat.com>
1221
1222         PR c++/39875
1223         * cvt.c (convert_to_void) <case INDIRECT_REF>: Only warn about
1224         -Wunused-value if implicit.
1225
1226 2009-04-24  Ian Lance Taylor  <iant@google.com>
1227
1228         * call.c (build_temp): Change 0 to enum constant.
1229         * cp-tree.h (cp_lvalue_kind): Typedef to int rather than enum
1230         type.
1231         * cp-gimplify.c (cp_gimplify_expr): Add cast to enum type.
1232         * decl2.c (constrain_visibility): Likewise.
1233         * parser.c (cp_lexer_get_preprocessor_token): Likewise.
1234         (cp_parser_flags): Typedef to int rather than enum type.
1235         (cp_parser_expression_stack_entry): Change prec field to enum
1236         cp_parser_prec.
1237
1238         * typeck.c (build_modify_expr): Add lhs_origtype parameter.
1239         Change all callers.
1240
1241 2009-04-22  Dodji Seketeli  <dodji@redhat.com>
1242
1243         PR c++/39639
1244         * parser.c (cp_parser_template_argument_list): Display an error
1245         when an ellipsis is not preceded by a parameter pack. Also, warn
1246         about variadic templates usage without -std=c++0x.
1247
1248 2009-04-21  Taras Glek <tglek@mozilla.com>
1249
1250         * cp-tree.h: Update GTY annotations to new syntax.
1251         * decl.c: Likewise.
1252         * mangle.c: Likewise.
1253         * name-lookup.c: Likewise.
1254         * name-lookup.h: Likewise.
1255         * parser.c: Likewise.
1256         * pt.c: Likewise.
1257         * rtti.c: Likewise.
1258         * semantics.c: Likewise.
1259         * typeck2.c: Likewise.
1260
1261 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1262
1263         PR c++/14875
1264         * parser.c (cp_parser_error): Pass token->flags to c_parse_error.
1265
1266 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1267
1268         PR c++/35711
1269         * typeck.c (check_for_casting_away_constness): We diagnose casting
1270         away any qualifiers not just constness.
1271         (casts_away_constness): Mention that it handles more than just
1272         constness.
1273         
1274 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
1275
1276         * ChangeLog, ChangeLog-1993, ChangeLog-1994, ChangeLog-1995,
1277         ChangeLog-1996, ChangeLog-1997, ChangeLog-1998, ChangeLog-1999,
1278         ChangeLog-2000, ChangeLog-2001, ChangeLog-2002, ChangeLog-2003,
1279         ChangeLog-2004, ChangeLog-2005, ChangeLog-2006, ChangeLog-2007,
1280         ChangeLog-2008, ChangeLog.ptr, ChangeLog.tree-ssa, NEWS,
1281         cfns.gperf: Add copyright and license notices.
1282         * cfns.h: Regenerate.
1283         * ChangeLog, ChangeLog-2004: Correct dates.
1284
1285 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1286
1287         PR 16202
1288         * tree.c (lvalue_p_1): Use const_tree.
1289         Use CONST_CAST_TREE to avoid warning.
1290         (lvalue_p): Returns bool, receives const_tree.
1291
1292 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1293
1294         PR c++/13358
1295         * parser.c (cp_parser_check_decl_spec): Drop redundant flags.
1296         * error.c (pedwarn_cxx98): New.
1297         * cp-tree.h (pedwarn_cxx98): Declare.
1298
1299 2009-04-20  Le-Chun Wu  <lcwu@google.com>
1300
1301         PR c++/39803
1302         * init.c (build_vec_init): Set TREE_NO_WARNING on the
1303         compiler-generated INDIRECT_REF expression.
1304
1305 2009-04-20  Ian Lance Taylor  <iant@google.com>
1306
1307         * typeck.c (build_function_call_vec): New function.
1308         (cp_build_function_call): Only pass first parameter to
1309         objc_rewrite_function_call.
1310         (build_modify_expr): Add rhs_origtype parameter.  Change all
1311         callers.
1312         * decl.c (finish_decl): Add origtype parameter.  Change all
1313         callers.
1314         * semantics.c (finish_call_expr): Pass VEC to
1315         resolve_overloaded_builtin.
1316
1317 2009-04-20  Ian Lance Taylor  <iant@google.com>
1318
1319         * cp-tree.h (base_access): Change typedef to int.
1320         * parser.c (cp_parser_omp_flush): Change 0 to OMP_CLAUSE_ERROR.
1321         (cp_parser_omp_threadprivate): Likewise.
1322         * pt.c (unify_pack_expansion): Add casts to enum type.
1323
1324 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1325
1326         PR c/32061
1327         PR c++/36954
1328         * call.c (build_new_op): Save the original codes of operands
1329         before folding.
1330
1331 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
1332
1333         * cp-tree.h: Remove the prototype for insert_block.
1334         * decl.c (insert_block): Remove.
1335
1336 2009-04-16  Ian Lance Taylor  <iant@google.com>
1337
1338         * cp-tree.h (enum tsubst_flags): Rename from enum tsubst_flags_t.
1339         (tsubst_flags_t): Change typedef from enum type to int.
1340
1341 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
1342
1343         * decl.c (check_initializer): Use TYPE_VECTOR_OPAQUE
1344         instead of targetm.vector_opaque_p.
1345
1346 2009-04-15  Le-Chun Wu  <lcwu@google.com>
1347
1348         PR c++/39551
1349         * call.c (build_over_call): Set TREE_NO_WARNING on the
1350         compiler-generated INDIRECT_REF expression.
1351         * cvt.c (convert_to_void): Emit warning when stripping off
1352         INDIRECT_REF.
1353
1354 2009-04-14  Diego Novillo  <dnovillo@google.com>
1355
1356         * parser.c (cp_parser_type_specifier_seq): Move call to
1357         invoke_plugin_callbacks ...
1358         (cp_parser_type_specifier_seq): ... here.
1359
1360 2009-04-14  Le-Chun Wu  <lcwu@google.com>
1361
1362         * Make-lang.in: Modify dependencies of files including plugin.h.
1363         * decl.c (finish_function): Call invoke_plugin_callbacks.
1364         * parser.c (cp_parser_type_specifier): Call invoke_plugin_callbacks.
1365
1366 2009-04-14  Jason Merrill  <jason@redhat.com>
1367
1368         PR c++/39763
1369         * name-lookup.c (pushdecl_maybe_friend): Avoid all warnings
1370         about shadowing by tentative parms.
1371
1372 2009-04-13  Jason Merrill  <jason@redhat.com>
1373
1374         PR c++/39480
1375         * call.c (build_over_call): Don't call memcpy if the target is
1376         the same as the source.
1377
1378 2009-04-13  Jason Merrill  <jason@redhat.com>
1379
1380         PR c++/39750
1381         * pt.c (uses_template_parms): Handle CONSTRUCTOR.
1382
1383 2009-04-12  Jason Merrill  <jason@redhat.com>
1384
1385         PR c++/39742
1386         * call.c (joust): Don't crash on variadic fn.
1387
1388 2009-04-10  Jason Merrill  <jason@redhat.com>
1389
1390         PR c++/28301
1391         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Return
1392         if we see a close brace without an open brace.
1393
1394 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
1395
1396         * parser.c (cp_parser_class_specifier): Remove the unused
1397         has_trailing_semicolon.
1398
1399 2009-04-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1400
1401         PR  c++/20118
1402         * parser.c (cp_parser_check_template_parameters): Take a
1403         cp_declarator parameter.
1404         (cp_parser_elaborated_type_specifier): Update to
1405         cp_parser_check_template_parameters.
1406         (cp_parser_class_head): Likewise.
1407         (cp_parser_check_declarator_template_parameters): Likewise.
1408         (cp_parser_check_template_parameters): Handle first the non-error
1409         conditions. Give more accurate diagnostics if a declarator is
1410         given. 
1411
1412 2009-04-08  Jason Merrill  <jason@redhat.com>
1413
1414         PR c++/25185
1415         * error.c (dump_aggr_type): Chase template typedefs if
1416         -fno-pretty-templates.
1417
1418 2009-04-08  Dodji Seketeli  <dodji@redhat.com>
1419
1420         PR c++/39637
1421         * parser.c (cp_parser_enumerator_definition): Make sure the
1422         initializer of the enumerator doesn't contain any bare parameter pack.
1423
1424 2009-04-07  Jason Merrill  <jason@redhat.com>
1425
1426         PR c++/34691
1427         * name-lookup.c (merge_functions): Keep multiple extern "C" functions.
1428         * call.c (joust): Complain about mismatched default arguments
1429         in extern "C" functions.
1430         * class.c (resolve_address_of_overloaded_function): Handle multiple
1431         extern "C" functions.
1432         * pt.c (resolve_overloaded_unification): Likewise.
1433
1434 2009-04-07  Jason Merrill  <jason@redhat.com>
1435
1436         PR c++/25185
1437         * error.c (dump_function_decl): Don't pretty-print templates
1438         if -fno-pretty-templates.
1439         (count_non_default_template_args): Print all args if
1440         -fno-pretty-templates.
1441
1442 2009-04-06  Jason Merrill  <jason@redhat.com>
1443
1444         PR c++/35146
1445         * pt.c (fn_type_unification): For DEDUCE_EXACT check that
1446         the deduced template arguments give us the parameter types
1447         we're looking for.
1448
1449 2009-04-05  Giovanni Bajo <giovannibajo@libero.it>
1450             Jason Merrill  <jason@redhat.com>
1451
1452         PR c++/14912
1453         * error.c (count_non_default_template_args): New fn.
1454         (dump_template_parms): Call it.
1455         (dump_template_argument_list): Call it.  Add parms parm.
1456         (dump_template_argument): Adjust call to dump_template_argument_list.
1457         (dump_type, dump_decl): Likewise.
1458         (dump_template_bindings): Refactor logic.
1459
1460 2009-04-03  Jason Merrill  <jason@redhat.com>
1461
1462         PR c++/25185
1463         * error.c (dump_template_bindings): Look through typedefs in
1464         typename results.
1465         (dump_type) [TYPENAME_TYPE]: Print the typedef name if any.
1466         (find_typenames_r): Also collect typedefs.
1467         * pt.c (unify): Strip typedefs.
1468
1469         PR c++/39608
1470         * semantics.c (finish_id_expression): Don't assume a dependent
1471         member of the current instantiation isn't a valid integral
1472         constant expression.  Check dependent_scope_p.
1473         * pt.c (dependent_scope_p): Check TYPE_P.
1474         (tsubst_copy): If args is null, just return.
1475
1476 2009-04-02  Jason Merrill  <jason@redhat.com>
1477
1478         PR c++/25185
1479         * error.c (find_typenames, find_typenames_r): New fns.
1480         (dump_function_decl): Call find_typenames.
1481         (dump_template_bindings): Print typenames as well.
1482         * pt.c (tsubst): Non-static.
1483         * cp-tree.h: Declare it.
1484
1485 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
1486
1487         PR c++/26693
1488         * decl2.c (grokfield): when a typedef appears in a
1489         class, create the typedef variant type node for it.
1490         (save_template_attributes): Creating typedef variant type node
1491          here is now useless.
1492         * decl.c (grokdeclarator): If the typedef'ed struct/class was
1493         anonymous, set the proper type name to all its type variants.
1494         (xref_basetypes) : Fixup the variant types after setting
1495         TYPE_BINFO on REF.
1496         * name-lookup.c (pushdecl_maybe_friend): Reuse the
1497         set_underlying_type function to install typedef variant types.
1498         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
1499         macro.
1500         (append_type_to_template_for_access_check): New entry points.
1501         * semantics.c (check_accessibility_of_qualified_id):
1502         When a typedef that is a member of a class appears in a template,
1503         add it to the template. It will be ...
1504         * class.c (finish_struct_bits): Split type variant fixup into ...
1505         (fixup_type_variants): A new entry point.
1506         * pt.c (instantiate_class_template, instantiate_template ): ... access
1507         checked at template instantiation time.
1508         (resolve_type_name_type): The type name should be the name of the
1509         main type variant.
1510         (retrieve_specialization): Specializations of template typedefs aren't
1511         to looked up in DECL_TEMPLATE_INSTANTIATIONS (tmpl).
1512         (append_type_to_template_for_access_check): New entry point.
1513         (tsubst_decl): For typedefs, build the variant type from the correct
1514         original type.
1515         (get_class_bindings): Fix function comment.
1516         (perform_typedefs_access_check): New entry point.
1517
1518 2009-03-31  Jason Merrill  <jason@redhat.com>
1519
1520         PR c++/34691
1521         * name-lookup.c (pushdecl_maybe_friend): Diagnose mismatched
1522         extern "C" declarations.
1523
1524         C++ DR 613
1525         * semantics.c (finish_non_static_data_member): Allow such references
1526         without an associated object in sizeof/decltype/alignof.
1527
1528         * ptree.c (cxx_print_decl): Pretty-print full name of
1529         function/template.
1530         (cxx_print_type): Pretty-print full name of class.
1531
1532         * decl.c (grokdeclarator): Reject pointer to qualified function
1533         type.
1534
1535         PR c++/37806, core issue 547
1536         * typeck.c (cp_apply_type_quals_to_decl): Don't apply any quals
1537         to a typedef.
1538         * tree.c (cp_build_qualified_type_real): Don't apply restrict to a 
1539         function type.
1540         * decl.h (enum decl_context): Add TEMPLATE_TYPE_ARG.
1541         * decl.c (groktypename): Add is_template_arg parameter.
1542         (grokdeclarator): Allow function cv-quals on a template type arg.
1543         * parser.c (cp_parser_new_type_id, cp_parser_type_id): Add
1544         is_template_arg argument in calls to groktypename.
1545         * cp-tree.h: Adjust prototype.
1546         * error.c (dump_type_prefix, dump_type_suffix): Fix plain 
1547         FUNCTION_TYPE printing.
1548         
1549         * mangle.c (write_expression): Mangle dependent name as
1550         source-name.
1551
1552         PR c++/38030, 38850, 39070
1553         * pt.c (type_dependent_expression_p_push): New fn.
1554         (tsubst_copy_and_build) [CALL_EXPR]: Only do arg-dep lookup when the
1555         substitution makes the call non-dependent.  Preserve koenig_p.
1556         * parser.c (cp_parser_postfix_expression): Only do arg-dep lookup
1557         for non-dependent calls.
1558         * semantics.c (finish_call_expr): Revert earlier changes.
1559         * cp-tree.h: Revert change to finish_call_expr prototype.
1560
1561 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
1562
1563         PR preprocessor/34695
1564         * cp-tree.h (cp_cpp_error): Remove.
1565         * error.c (cp_cpp_error): Remove.
1566         * parser.c (cp_lexer_new_main): Set done_lexing instead of
1567         client_diagnostic and error callback.
1568
1569 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
1570
1571         * cp/cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
1572         * cp/cp-objcp-common.c (cxx_staticp): Remove.
1573         * cp/cp-tree.h (cxx_staticp): Remove.
1574
1575 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
1576
1577         PR c++/39554
1578         * parser.c (cp_parser_postfix_expression): Don't call
1579         warning_if_disallowed_function_p.
1580
1581 2009-03-27  Jan Hubicka  <jh@suse.cz>
1582
1583         * except.c (choose_personality_routine): Set terminate_node to abort
1584         for java exceptions.
1585
1586 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
1587             Jakub Jelinek  <jakub@redhat.com>
1588
1589         PR debug/37959
1590         * cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
1591         (cp_function_decl_explicit_p): New prototype.
1592         * cp-objcp-common.c (cp_function_decl_explicit_p): New function.
1593
1594 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1595
1596         PR c++/38638
1597         * parser.c (cp_parser_elaborated_type_specifier): If we have a
1598         typename tag and don't have either a TYPE_DECL or a
1599         TEMPLATE_ID_EXPR, set the type to NULL.
1600
1601 2009-03-27  Simon Martin  <simartin@users.sourceforge.net>
1602
1603         PR c++/37647
1604         * decl.c (grokdeclarator): Reject [con|de]stuctors in a non-class
1605         scope.
1606
1607 2009-03-27  Simon Martin  <simartin@users.sourceforge.net>
1608
1609         PR c++/29727
1610         * decl.c (check_array_designated_initializer): Handle error_mark_node.
1611
1612 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1613
1614         PR c++/35652
1615         * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.
1616
1617 2009-03-26  Andrew Haley  <aph@redhat.com>
1618
1619         PR C++/39380
1620         * decl2.c (possibly_inlined_p): If java exceptions are in use
1621         don't inline a decl unless it is explicitly marked inline.
1622         * lex.c: (pragma_java_exceptions): New variable.
1623         (handle_pragma_java_exceptions): Set pragma_java_exceptions.
1624         * cp-tree.h (pragma_java_exceptions): Declare new variable.
1625
1626 2009-03-24  Jason Merrill  <jason@redhat.com>
1627
1628         PR c++/28274
1629         * name-lookup.c (pushdecl_maybe_friend): Check default args later.
1630
1631 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
1632
1633         PR c/39495
1634         * semantics.c (handle_omp_for_class_iterator): Swap cond operands and
1635         code if iter is the second operand.
1636         * parser.c (cp_parser_binary_expression): Add no_toplevel_fold_p
1637         argument.  If it is set, don't build the toplevel expression with
1638         build_x_binary_op, but build2.
1639         (cp_parser_assignment_expression,  cp_parser_omp_for_incr): Adjust
1640         callers.
1641         (cp_parser_omp_for_cond): Don't assume the first operand of the
1642         comparison must be decl.
1643
1644 2009-03-23  Jason Merrill  <jason@redhat.com>
1645
1646         PR c++/37729
1647         * pt.c (make_fnparm_pack): Split out from...
1648         (instantiate_decl): ...here.
1649         (tsubst_pack_expansion): Handle being called in a late-specified
1650         return type.
1651
1652         PR c++/39526
1653         * name-lookup.c (pushdecl_maybe_friend): Don't warn about shadowing
1654         a parm with a parm.
1655
1656 2009-03-20  Jason Merrill  <jason@redhat.com>
1657
1658         PR c++/28879
1659         * parser.c (cp_parser_direct_declarator): In a template, wrap 
1660         non-constant expression in NOP_EXPR with TREE_SIDE_EFFECTS set.
1661         * pt.c (tsubst): Preserve it in a partial instantiation.
1662         (dependent_type_p_r): Don't check value_dependent_expression_p.
1663         * decl.c (compute_array_index_type): Don't check
1664         value_dependent_expression_p if TREE_SIDE_EFFECTS.
1665
1666         C++ core issue 703
1667         * typeck2.c (check_narrowing): Don't complain about loss of 
1668         precision when converting a floating-point constant.
1669
1670 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
1671
1672         PR c/39495
1673         * parser.c (cp_parser_omp_for_cond): Don't check lhs if decl is NULL.
1674         (cp_parser_omp_for_loop): Always use cp_parser_omp_for_cond.
1675
1676 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
1677
1678         * parser.c (struct cp_token): Reorder fields for 64-bit hosts.
1679         (eof_token): Adjust.
1680
1681 2009-03-18  H.J. Lu  <hongjiu.lu@intel.com>
1682
1683         PR c++/39425
1684         * parser.c (cp_parser_explicit_specialization): Don't skip the
1685         rest of the specialization when begin_specialization returns
1686         false.
1687
1688 2009-03-17  Jason Merrill  <jason@redhat.com>
1689
1690         * decl.c (grokfndecl): Set DECL_CONTEXT on parms.
1691         (duplicate_decls): Adjust DECL_CONTEXT of newdecl's parms.
1692         * pt.c (check_explicit_specialization): Likewise.
1693         (tsubst_copy) [PARM_DECL]: Return a dummy parm if we don't have a
1694         local specialization.
1695         * tree.c (cp_tree_equal) [PARM_DECL]: Check type and index, not name.
1696         * decl2.c (parm_index): New fn.
1697         * semantics.c (finish_decltype_type): Don't use describable_type.
1698         * mangle.c (write_expression): Likewise.  Mangle ALIGNOF_EXPR.
1699         Give a sorry for unsupported codes rather than crash.  Mangle
1700         conversions with other than 1 operand.  New mangling for PARM_DECL.
1701         * operators.def (ALIGNOF_EXPR): Mangle as "az".
1702
1703 2009-03-17  Jing Yu  <jingyu@google.com>
1704
1705         PR middle-end/39378
1706         * method.c (use_thunk): Change is_thunk from crtl to cfun.
1707
1708 2009-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
1709
1710         PR c++/39475
1711         * semantics.c (check_trait_type): New.
1712         (finish_trait_expr): Use it.
1713
1714 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
1715
1716         * name-lookup.c (cp_emit_debug_info_for_using): Emit USING_STMTs
1717         instead of calling imported_module_or_decl debug hook if
1718         building_stmt_tree ().
1719         * cp-gimplify.c (cp_gimplify_expr): Don't assert the first operand
1720         is a NAMESPACE_DECL.
1721
1722         PR debug/37890
1723         * name-lookup.c (do_namespace_alias): Don't call global_decl debug
1724         hook at function scope.
1725
1726         PR debug/39471
1727         * cp-gimplify.c (cp_gimplify_expr): Don't set DECL_NAME
1728         on IMPORTED_DECL.
1729
1730 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
1731
1732         PR c++/39371
1733         * semantics.c (finish_switch_cond): Don't call get_unwidened.
1734         * decl.c (finish_case_label): Pass SWITCH_STMT_TYPE as 3rd argument
1735         instead of TREE_TYPE (cond).
1736
1737 2009-03-08  H.J. Lu  <hongjiu.lu@intel.com>
1738
1739         PR c++/39060
1740         * parser.c (cp_parser_late_parsing_default_args): Continue
1741         the loop when cp_parser_assignment_expression returns
1742         error_mark_node.
1743
1744 2009-03-07  Jason Merrill  <jason@redhat.com>
1745
1746         PR c++/39367
1747         * init.c (build_new_1): Don't use a VLA type.
1748         (build_vec_init): Handle getting a pointer for BASE.
1749
1750 2009-03-06  H.J. Lu  <hongjiu.lu@intel.com>
1751
1752         PR c++/37520
1753         * cp-tree.h: Check NO_DOT_IN_LABEL before NO_DOLLAR_IN_LABEL
1754         when mangling symbols.
1755
1756 2009-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
1757
1758         PR c++/33492
1759         * error.c (dump_expr): Don't try to print THROW_EXPRs in full.
1760
1761 2009-03-06  Alexandre Oliva  <aoliva@redhat.com>
1762
1763         * decl.c (record_builtin_java_type): Use canonicalized integer
1764         types.
1765
1766 2009-03-04  Jason Merrill  <jason@redhat.com>
1767
1768         PR c++/38908
1769         * class.c (is_really_empty_class): New fn.
1770         * cp-tree.h: Declare it.
1771         * cp-objcp-common.c (cp_expr_size): Use it.
1772
1773         PR c++/13549
1774         * semantics.c (perform_koenig_lookup): Handle TEMPLATE_ID_EXPR.
1775         * parser.c (cp_parser_postfix_expression): Call it for 
1776         TEMPLATE_ID_EXPR.
1777         * tree.c (is_overloaded_fn): Look through TEMPLATE_ID_EXPR.
1778         (get_first_fn): Likewise.
1779
1780         PR c++/9634
1781         PR c++/29469
1782         PR c++/29607
1783         Implement DR 224.
1784         * decl.c (make_typename_type): Do look inside currently open classes.
1785         * parser.c (cp_parser_lookup_name): Likewise.
1786         (cp_parser_template_name): Likewise.
1787         * pt.c (dependent_scope_p): New function.
1788         * cp-tree.h: Declare it.
1789         * class.c (currently_open_class): Return fast if T isn't a class.
1790
1791 2009-02-26  H.J. Lu  <hongjiu.lu@intel.com>
1792
1793         PR c++/37789
1794         * parser.c (cp_parser_mem_initializer): Return error_mark_node
1795         if cp_parser_mem_initializer_id returns error_mark_node.
1796
1797 2009-02-24  Richard Guenther  <rguenther@suse.de>
1798
1799         PR c++/39242
1800         * pt.c (instantiate_decl): Do not instantiate extern, non-inline
1801         declared functions.
1802
1803 2009-02-23  H.J. Lu  <hongjiu.lu@intel.com>
1804
1805         PR c++/36411
1806         * pt.c (coerce_template_template_parms): Return 0 if parameter
1807         is error_mark_node.
1808
1809 2009-02-23  Jason Merrill  <jason@redhat.com>
1810
1811         * pt.c (unify): Call maybe_adjust_types_for_deduction when
1812         deducing from an initializer list.
1813
1814 2009-02-20  Jason Merrill  <jason@redhat.com>
1815
1816         PR c++/39225
1817         * decl.c (grokdeclarator): Handle ~identifier.
1818
1819 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
1820
1821         PR target/39175
1822         * decl2.c (determine_visibility): If visibility changed and
1823         DECL_RTL has been already set, call make_decl_rtl to update symbol
1824         flags.
1825
1826 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
1827
1828         PR c++/39188
1829         * cp-tree.h (maybe_commonize_var): New.
1830
1831         * decl.c (maybe_commonize_var): Make it extern.
1832
1833         * decl2.c (finish_anon_union): Call maybe_commonize_var.
1834
1835 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
1836
1837         PR c++/39219
1838         * parser.c (cp_parser_enum_specifier): Apply all attributes.
1839
1840 2009-02-18  Jason Merrill  <jason@redhat.com>
1841
1842         * cfns.h: Tweak pathname for cfns.gperf.
1843
1844 2009-02-13  Jason Merrill  <jason@redhat.com>
1845
1846         PR c++/39070
1847         * semantics.c (finish_call_expr): Change koenig_p parm to int.
1848         If -1, don't set KOENIG_LOOKUP_P but do keep hidden candidates.
1849         * cp-tree.h: Adjust prototype.
1850         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Pass -1.
1851
1852 2009-02-12  Jason Merrill  <jason@redhat.com>
1853
1854         PR c++/38950
1855         * pt.c (unify)[TEMPLATE_PARM_INDEX]: Convert to the tsubsted type.
1856
1857 2009-02-11  Jason Merrill  <jason@redhat.com>
1858
1859         PR c++/39153
1860         * decl2.c (cp_write_global_declarations): 
1861         Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL.
1862
1863         PR c++/30111
1864         * init.c (build_value_init_noctor): Split out from...
1865         (build_value_init): ...here.
1866         (expand_aggr_init_1): Handle value-initialization.
1867         * cp-tree.h: Add declaration.
1868         * class.c (type_has_user_provided_constructor): 
1869         Handle non-class arguments.
1870
1871 2009-02-10  Jason Merrill  <jason@redhat.com>
1872
1873         PR c++/38649
1874         * class.c (defaultable_fn_p): Handle ... properly.
1875
1876         PR c++/36744
1877         * tree.c (lvalue_p_1): Condition rvalue ref handling on
1878         treat_class_rvalues_as_lvalues, too.
1879
1880 2009-02-10  Paolo Carlini  <paolo.carlini@oracle.com>
1881
1882         PR c++/34397
1883         * typeck.c (build_x_array_ref): New.
1884         * cp-tree.h: Declare it.
1885         * pt.c (tsubst_copy_and_build): Use it for case ARRAY_REF.
1886
1887 2009-02-09  Jason Merrill  <jason@redhat.com>
1888
1889         PR c++/39109
1890         * semantics.c (simplify_aggr_init_expr): Do zero-initialization here.
1891         * init.c (build_value_init): Not here. Don't build a TARGET_EXPR.
1892         * tree.c (get_target_expr): Handle AGGR_INIT_EXPR.
1893         * cp-gimplify.c (cp_gimplify_init_expr): Remove special handling
1894         for build_value_init TARGET_EXPR.
1895         * cp-tree.h (AGGR_INIT_ZERO_FIRST): New macro.
1896
1897 2009-02-06  Paolo Carlini  <paolo.carlini@oracle.com>
1898
1899         PR c++/35147
1900         PR c++/37737
1901         * cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Check TREE_VEC_LENGTH.
1902
1903 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
1904
1905         PR c++/39095
1906         * operators.def: Use COMPONENT_REF code for ->/pt operator again,
1907         remove ./dt operator.
1908         * mangle.c (write_expression): Handle COMPONENT_REF after handling
1909         ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it
1910         write_string ("dt") instead of using operators.def.
1911
1912 2009-02-03  Jason Merrill  <jason@redhat.com>
1913
1914         * typeck.c (cp_build_unary_op): Only complain about taking address
1915         of main if pedantic.
1916
1917 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
1918
1919         PR inline-asm/39059
1920         * parser.c (cp_parser_primary_expression): Reject FIXED_CSTs.
1921
1922         PR c++/39056
1923         * typeck2.c (digest_init_r): Don't call process_init_constructor
1924         for COMPLEX_TYPE.
1925
1926 2009-02-03  Paolo Bonzini  <bonzini@gnu.org>
1927
1928         PR c++/36897
1929         * pt.c (convert_nontype_argument_function): Expect expr to be an
1930         ADDR_EXPR.
1931
1932         PR c++/37314
1933         * typeck.c (merge_types): Call resolve_typename_type if only
1934         one type is a typename.
1935
1936 2009-02-02  Jason Merrill  <jason@redhat.com>
1937
1938         PR c++/39054
1939         * parser.c (cp_parser_unqualified_id): Don't wrap error_mark_node 
1940         in BIT_NOT_EXPR.
1941
1942 2009-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
1943
1944         PR c++/39053
1945         * parser.c (cp_parser_pure_specifier): If there are no tokens left
1946         do not call cp_lexer_consume_token.
1947
1948 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
1949
1950         PR c++/39028
1951         * parser.c (cp_parser_already_scoped_statement): Handle __label__
1952         declarations.
1953
1954 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1955
1956         PR c++/33465
1957         * error.c (dump_expr): Handle FIX_TRUNC_EXPR and FLOAT_EXPR.
1958
1959 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
1960
1961         PR c++/38655
1962         * error.c (dump_type_prefix, dump_type_suffix): Handle FIXED_POINT_TYPE.
1963
1964 2009-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
1965
1966         * typeck.c (invalid_nonstatic_memfn_p): Use
1967         DECL_NONSTATIC_MEMBER_FUNCTION_P.
1968
1969 2009-01-27  Paolo Carlini  <paolo.carlini@oracle.com>
1970
1971         PR c++/37554
1972         * call.c (build_over_call): If convert_for_arg_passing returns
1973         error_mark_node unconditionally return it.
1974
1975 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
1976
1977         * class.c (check_field_decls): Also inherit packed for bitfields
1978         regardless of their type.
1979
1980 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
1981
1982         PR c++/38930
1983         * decl2.c (grokfield): Reverting changes of PR c++/26693
1984         (save_template_attributes): Likewise.
1985         * decl.c (grokdeclarator): Likewise.
1986         * name-lookup.c (pushdecl_maybe_friend): Likewise.
1987         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Likewise.
1988         (append_type_to_template_for_access_check): Likewise.
1989         * semantics.c (check_accessibility_of_qualified_id): Likewise.
1990         * pt.c (instantiate_class_template, instantiate_template ): Likewise.
1991         (tsubst): Likewise.
1992         (resolve_type_name_type): Likewise.
1993         (append_type_to_template_for_access_check): Likewise.
1994
1995 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
1996
1997         PR c++/26693
1998         * decl2.c (grokfield): when a typedef appears in a
1999         class, create the typedef variant type node for it.
2000         (save_template_attributes): Creating typedef variant type node
2001          here is now useless.
2002         * decl.c (grokdeclarator): If the typedef'ed struct/class was
2003         anonymous, set the proper type name to all its type variants.
2004         * name-lookup.c (pushdecl_maybe_friend): Reuse the
2005         set_underlying_type function to install typedef variant types.
2006         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
2007         macro.
2008         (append_type_to_template_for_access_check): New entry points.
2009         * semantics.c (check_accessibility_of_qualified_id):
2010         When a typedef that is a member of a class appears in a template,
2011         add it to the template. It will be ...
2012         * pt.c (instantiate_class_template, instantiate_template ): ... access
2013         checked at template instantiation time.
2014         (tsubst): Handle the case of being called with NULL args.
2015         (resolve_type_name_type): The type name should be the name of the
2016         main type variant.
2017         (append_type_to_template_for_access_check): New entry point.
2018
2019 2009-01-19  Jason Merrill  <jason@redhat.com>
2020
2021         PR c++/23287
2022         * parser.c (cp_parser_unqualified_id): In a template,
2023         accept ~identifier.
2024         * typeck.c (lookup_destructor): Handle IDENTIFIER_NODE.
2025
2026 2009-01-16  Jason Merrill  <jason@redhat.com>
2027
2028         PR c++/38877
2029         * tree.c (lvalue_p_1): Allow non-fields in COMPONENT_REF.
2030         * init.c (build_new): Don't call describable_type unless we
2031         have an auto.
2032
2033         PR c++/29470
2034         * pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.
2035
2036         PR c++/38579
2037         * search.c (protected_accessible_p): N doesn't vary.
2038
2039 2009-01-15  Jason Merrill  <jason@redhat.com>
2040
2041         PR c++/38850
2042         * pt.c (tsubst_copy_and_build): Tell finish_call_expr to
2043         accept hidden friends.
2044
2045 2009-01-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2046
2047         PR C++/29388
2048         * decl.c (grokdeclarator): Check for a non namespace/class context.
2049
2050 2009-01-15  Jason Merrill  <jason@redhat.com>
2051
2052         PR c++/36334
2053         PR c++/37646
2054         * tree.c (lvalue_p_1): Handle BASELINK.  A COMPONENT_REF to
2055         a function isn't necessarily an lvalue. Take tree, not const_tree.
2056         (lvalue_p, real_lvalue_p): Take tree, not const_tree.
2057         * typeck.c (lvalue_or_else): Likewise.
2058         * cp-tree.h: Adjust prototypes.
2059
2060 2009-01-15  Steve Ellcey  <sje@cup.hp.com>
2061
2062         PR c++/38357
2063         * pt.c (tsubst): Check for NULL args.
2064
2065 2009-01-15  Dodji Seketeli  <dodji@redhat.com>
2066
2067         PR c++/38636
2068         * name-lookup.c (pushtag): Don't create members to types that are not
2069         being created.
2070
2071 2009-01-14  Nick Clifton  <nickc@redhat.com>
2072
2073         PR c++/37862
2074         * parser.c: Pass cp_id_kind computed in
2075         cp_parser_postfix_dot_deref_expression to
2076         cp_parser_primary_expression.
2077
2078 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
2079
2080         PR c++/38795
2081         * tree.c (cp_walk_subtrees): Handle REINTERPRET_CAST_EXPR,
2082         STATIC_CAST_EXPR, CONST_CAST_EXPR and DYNAMIC_CAST_EXPR the same
2083         as CAST_EXPR.
2084
2085 2009-01-12  Jason Merrill  <jason@redhat.com>
2086             Steve Ellcey  <sje@cup.hp.com>
2087
2088         PR c++/35109
2089         * name-lookup.c (lookup_name_real): Keep looking past a hidden 
2090         binding.
2091
2092 2009-01-12  Dodji Seketeli  <dodji@redhat.com>
2093
2094         PR c++/36019
2095         * pt.c (parameter_of_template_p): New function.
2096         * cp-tree.h: Declare it.
2097         * name-lookup.c (binding_to_template_parms_of_scope_p): New
2098         function.
2099         (outer_binding): Take template parameters in account when looking for
2100         a name binding.
2101
2102 2009-01-12  Jason Merrill  <jason@redhat.com>
2103
2104         PR c++/31488
2105         * tree.c (pod_type_p): Return 1 for structs created by the back end.
2106
2107 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
2108
2109         PR c/32041
2110         * parser.c (cp_parser_builtin_offsetof): Allow `->' in
2111         offsetof member-designator, handle it as `[0].'.
2112
2113         PR c++/38794
2114         * decl.c (start_function): If grokdeclarator hasn't returned
2115         FUNCTION_DECL nor error_mark_node, issue diagnostics.
2116
2117 2009-01-11  Jakub Jelinek  <jakub@redhat.com>
2118
2119         PR c++/36254
2120         * cp-gimplify.c (genericize_if_stmt): Renamed from ...
2121         (gimplify_if_stmt): ... this.
2122         (cp_gimplify_expr): Don't handle IF_STMT here.
2123         (cp_genericize_r): Call genericize_if_stmt for IF_STMT.
2124
2125 2009-01-10  Andrew Pinski  <pinskia@gmail.com>
2126
2127         PR c++/38648
2128         * typeck.c (cp_build_modify_expr): Check for NULL current_function_decl.
2129
2130         PR c++/36695
2131         * typeck2.c (build_functional_cast): Check for reference type and NULL
2132         PARMS.
2133
2134 2009-01-09  Steve Ellcey  <sje@cup.hp.com>
2135
2136         * typeck.c (cp_build_unary_op): Check for ERROR_MARK.
2137
2138 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
2139
2140         PR c++/35335
2141         * error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR.
2142
2143 2009-01-09  John F. Carr  <jfc@mit.edu>
2144
2145         PR c++/37877
2146         * parser.c (cp_parser_class_specifier): Clear
2147         parser->in_unbraced_linkage_specification_p while parsing class
2148         specifiers.
2149
2150 2009-01-07  Jakub Jelinek  <jakub@redhat.com>
2151
2152         PR c++/38725
2153         * semantics.c (finish_goto_stmt): Convert destination to
2154         void *.
2155
2156 2009-01-06  Jason Merrill  <jason@redhat.com>
2157
2158         PR c++/35297
2159         PR c++/35477
2160         PR c++/35784
2161         PR c++/36846
2162         PR c++/38276
2163         * pt.c (check_default_tmpl_args): Don't complain about
2164         out-of-order parameter packs in the enclosing class
2165         or parameter packs after default args.
2166         (coerce_template_parms): If we have more than one
2167         parameter pack, don't flatten argument packs.
2168         (template_args_equal): Handle argument packs.
2169         (comp_template_args): Don't flatten argument packs.
2170         (check_instantiated_arg): Split out from...
2171         (check_instantiated_args): Here.  Handle arg packs.
2172         (convert_template_argument): Just check that nontype argument
2173         packs have the right type.
2174
2175 2009-01-05  Dodji Seketeli  <dodji@redhat.com>
2176
2177         PR c++/38472
2178         * typeck.c (type_after_usual_arithmetic_conversions): Fix a typo.
2179
2180 2009-01-05  Jason Merrill  <jason@redhat.com>
2181
2182         PR c++/38698
2183         * typeck2.c (process_init_constructor_union): Handle union with
2184         no fields.
2185
2186         * mangle.c (write_expression): Remove mangling for zero-operand
2187         casts.
2188
2189         PR c++/38701
2190         * decl.c (cp_finish_decl): Clear DECL_INITIAL for invalid
2191         defaulting.
2192
2193         PR c++/38702
2194         * class.c (defaultable_fn_p): Only operator== can be a copy
2195         assignment operator.
2196
2197 2009-01-02  Jason Merrill  <jason@redhat.com>
2198
2199         PR c++/38698
2200         * typeck2.c (process_init_constructor_union): Handle excess
2201         initializers.
2202         (process_init_constructor_record): Likewise.
2203
2204         PR c++/38684
2205         * typeck2.c (digest_init_r): Don't use process_init_constructor
2206         for non-aggregate classes.
2207
2208 \f
2209 Copyright (C) 2009 Free Software Foundation, Inc.
2210
2211 Copying and distribution of this file, with or without modification,
2212 are permitted in any medium without royalty provided the copyright
2213 notice and this notice are preserved.