OSDN Git Service

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