OSDN Git Service

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