OSDN Git Service

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