OSDN Git Service

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