OSDN Git Service

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