OSDN Git Service

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