OSDN Git Service

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