OSDN Git Service

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