[multiple changes]
[official-gcc.git] / gcc / cp / ChangeLog
blob23d135b47496a6e4102d7343006e8cf2bb4ca750
1 2009-04-14  Le-Chun Wu  <lcwu@google.com>
3         * Make-lang.in: Modify dependencies of files including plugin.h.
4         * decl.c (finish_function): Call invoke_plugin_callbacks.
5         * parser.c (cp_parser_type_specifier): Call invoke_plugin_callbacks.
7 2009-04-14  Jason Merrill  <jason@redhat.com>
9         PR c++/39763
10         * name-lookup.c (pushdecl_maybe_friend): Avoid all warnings
11         about shadowing by tentative parms.
13 2009-04-13  Jason Merrill  <jason@redhat.com>
15         PR c++/39480
16         * call.c (build_over_call): Don't call memcpy if the target is
17         the same as the source.
19 2009-04-13  Jason Merrill  <jason@redhat.com>
21         PR c++/39750
22         * pt.c (uses_template_parms): Handle CONSTRUCTOR.
24 2009-04-12  Jason Merrill  <jason@redhat.com>
26         PR c++/39742
27         * call.c (joust): Don't crash on variadic fn.
29 2009-04-10  Jason Merrill  <jason@redhat.com>
31         PR c++/28301
32         * parser.c (cp_parser_skip_to_end_of_block_or_statement): Return
33         if we see a close brace without an open brace.
35 2008-04-10  H.J. Lu  <hongjiu.lu@intel.com>
37         * parser.c (cp_parser_class_specifier): Remove the unused
38         has_trailing_semicolon.
40 2009-04-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
42         PR  c++/20118
43         * parser.c (cp_parser_check_template_parameters): Take a
44         cp_declarator parameter.
45         (cp_parser_elaborated_type_specifier): Update to
46         cp_parser_check_template_parameters.
47         (cp_parser_class_head): Likewise.
48         (cp_parser_check_declarator_template_parameters): Likewise.
49         (cp_parser_check_template_parameters): Handle first the non-error
50         conditions. Give more accurate diagnostics if a declarator is
51         given. 
53 2009-04-08  Jason Merrill  <jason@redhat.com>
55         PR c++/25185
56         * error.c (dump_aggr_type): Chase template typedefs if
57         -fno-pretty-templates.
59 2009-04-08  Dodji Seketeli  <dodji@redhat.com>
61         PR c++/39637
62         * parser.c (cp_parser_enumerator_definition): Make sure the
63         initializer of the enumerator doesn't contain any bare parameter pack.
65 2009-04-07  Jason Merrill  <jason@redhat.com>
67         PR c++/34691
68         * name-lookup.c (merge_functions): Keep multiple extern "C" functions.
69         * call.c (joust): Complain about mismatched default arguments
70         in extern "C" functions.
71         * class.c (resolve_address_of_overloaded_function): Handle multiple
72         extern "C" functions.
73         * pt.c (resolve_overloaded_unification): Likewise.
75 2009-04-07  Jason Merrill  <jason@redhat.com>
77         PR c++/25185
78         * error.c (dump_function_decl): Don't pretty-print templates
79         if -fno-pretty-templates.
80         (count_non_default_template_args): Print all args if
81         -fno-pretty-templates.
83 2009-04-06  Jason Merrill  <jason@redhat.com>
85         PR c++/35146
86         * pt.c (fn_type_unification): For DEDUCE_EXACT check that
87         the deduced template arguments give us the parameter types
88         we're looking for.
90 2009-04-05  Giovanni Bajo <giovannibajo@libero.it>
91             Jason Merrill  <jason@redhat.com>
93         PR c++/14912
94         * error.c (count_non_default_template_args): New fn.
95         (dump_template_parms): Call it.
96         (dump_template_argument_list): Call it.  Add parms parm.
97         (dump_template_argument): Adjust call to dump_template_argument_list.
98         (dump_type, dump_decl): Likewise.
99         (dump_template_bindings): Refactor logic.
101 2009-04-03  Jason Merrill  <jason@redhat.com>
103         PR c++/25185
104         * error.c (dump_template_bindings): Look through typedefs in
105         typename results.
106         (dump_type) [TYPENAME_TYPE]: Print the typedef name if any.
107         (find_typenames_r): Also collect typedefs.
108         * pt.c (unify): Strip typedefs.
110         PR c++/39608
111         * semantics.c (finish_id_expression): Don't assume a dependent
112         member of the current instantiation isn't a valid integral
113         constant expression.  Check dependent_scope_p.
114         * pt.c (dependent_scope_p): Check TYPE_P.
115         (tsubst_copy): If args is null, just return.
117 2009-04-02  Jason Merrill  <jason@redhat.com>
119         PR c++/25185
120         * error.c (find_typenames, find_typenames_r): New fns.
121         (dump_function_decl): Call find_typenames.
122         (dump_template_bindings): Print typenames as well.
123         * pt.c (tsubst): Non-static.
124         * cp-tree.h: Declare it.
126 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
128         PR c++/26693
129         * decl2.c (grokfield): when a typedef appears in a
130         class, create the typedef variant type node for it.
131         (save_template_attributes): Creating typedef variant type node
132          here is now useless.
133         * decl.c (grokdeclarator): If the typedef'ed struct/class was
134         anonymous, set the proper type name to all its type variants.
135         (xref_basetypes) : Fixup the variant types after setting
136         TYPE_BINFO on REF.
137         * name-lookup.c (pushdecl_maybe_friend): Reuse the
138         set_underlying_type function to install typedef variant types.
139         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
140         macro.
141         (append_type_to_template_for_access_check): New entry points.
142         * semantics.c (check_accessibility_of_qualified_id):
143         When a typedef that is a member of a class appears in a template,
144         add it to the template. It will be ...
145         * class.c (finish_struct_bits): Split type variant fixup into ...
146         (fixup_type_variants): A new entry point.
147         * pt.c (instantiate_class_template, instantiate_template ): ... access
148         checked at template instantiation time.
149         (resolve_type_name_type): The type name should be the name of the
150         main type variant.
151         (retrieve_specialization): Specializations of template typedefs aren't
152         to looked up in DECL_TEMPLATE_INSTANTIATIONS (tmpl).
153         (append_type_to_template_for_access_check): New entry point.
154         (tsubst_decl): For typedefs, build the variant type from the correct
155         original type.
156         (get_class_bindings): Fix function comment.
157         (perform_typedefs_access_check): New entry point.
159 2009-03-31  Jason Merrill  <jason@redhat.com>
161         PR c++/34691
162         * name-lookup.c (pushdecl_maybe_friend): Diagnose mismatched
163         extern "C" declarations.
165         C++ DR 613
166         * semantics.c (finish_non_static_data_member): Allow such references
167         without an associated object in sizeof/decltype/alignof.
169         * ptree.c (cxx_print_decl): Pretty-print full name of
170         function/template.
171         (cxx_print_type): Pretty-print full name of class.
173         * decl.c (grokdeclarator): Reject pointer to qualified function
174         type.
176         PR c++/37806, core issue 547
177         * typeck.c (cp_apply_type_quals_to_decl): Don't apply any quals
178         to a typedef.
179         * tree.c (cp_build_qualified_type_real): Don't apply restrict to a 
180         function type.
181         * decl.h (enum decl_context): Add TEMPLATE_TYPE_ARG.
182         * decl.c (groktypename): Add is_template_arg parameter.
183         (grokdeclarator): Allow function cv-quals on a template type arg.
184         * parser.c (cp_parser_new_type_id, cp_parser_type_id): Add
185         is_template_arg argument in calls to groktypename.
186         * cp-tree.h: Adjust prototype.
187         * error.c (dump_type_prefix, dump_type_suffix): Fix plain 
188         FUNCTION_TYPE printing.
189         
190         * mangle.c (write_expression): Mangle dependent name as
191         source-name.
193         PR c++/38030, 38850, 39070
194         * pt.c (type_dependent_expression_p_push): New fn.
195         (tsubst_copy_and_build) [CALL_EXPR]: Only do arg-dep lookup when the
196         substitution makes the call non-dependent.  Preserve koenig_p.
197         * parser.c (cp_parser_postfix_expression): Only do arg-dep lookup
198         for non-dependent calls.
199         * semantics.c (finish_call_expr): Revert earlier changes.
200         * cp-tree.h: Revert change to finish_call_expr prototype.
202 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
204         PR preprocessor/34695
205         * cp-tree.h (cp_cpp_error): Remove.
206         * error.c (cp_cpp_error): Remove.
207         * parser.c (cp_lexer_new_main): Set done_lexing instead of
208         client_diagnostic and error callback.
210 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
212         * cp/cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
213         * cp/cp-objcp-common.c (cxx_staticp): Remove.
214         * cp/cp-tree.h (cxx_staticp): Remove.
216 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
218         PR c++/39554
219         * parser.c (cp_parser_postfix_expression): Don't call
220         warning_if_disallowed_function_p.
222 2009-03-27  Jan Hubicka  <jh@suse.cz>
224         * except.c (choose_personality_routine): Set terminate_node to abort
225         for java exceptions.
227 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
228             Jakub Jelinek  <jakub@redhat.com>
230         PR debug/37959
231         * cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
232         (cp_function_decl_explicit_p): New prototype.
233         * cp-objcp-common.c (cp_function_decl_explicit_p): New function.
235 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
237         PR c++/38638
238         * parser.c (cp_parser_elaborated_type_specifier): If we have a
239         typename tag and don't have either a TYPE_DECL or a
240         TEMPLATE_ID_EXPR, set the type to NULL.
242 2009-03-27  Simon Martin  <simartin@users.sourceforge.net>
244         PR c++/37647
245         * decl.c (grokdeclarator): Reject [con|de]stuctors in a non-class
246         scope.
248 2009-03-27  Simon Martin  <simartin@users.sourceforge.net>
250         PR c++/29727
251         * decl.c (check_array_designated_initializer): Handle error_mark_node.
253 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
255         PR c++/35652
256         * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.
258 2009-03-26  Andrew Haley  <aph@redhat.com>
260         PR C++/39380
261         * decl2.c (possibly_inlined_p): If java exceptions are in use
262         don't inline a decl unless it is explicitly marked inline.
263         * lex.c: (pragma_java_exceptions): New variable.
264         (handle_pragma_java_exceptions): Set pragma_java_exceptions.
265         * cp-tree.h (pragma_java_exceptions): Declare new variable.
267 2009-03-24  Jason Merrill  <jason@redhat.com>
269         PR c++/28274
270         * name-lookup.c (pushdecl_maybe_friend): Check default args later.
272 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
274         PR c/39495
275         * semantics.c (handle_omp_for_class_iterator): Swap cond operands and
276         code if iter is the second operand.
277         * parser.c (cp_parser_binary_expression): Add no_toplevel_fold_p
278         argument.  If it is set, don't build the toplevel expression with
279         build_x_binary_op, but build2.
280         (cp_parser_assignment_expression,  cp_parser_omp_for_incr): Adjust
281         callers.
282         (cp_parser_omp_for_cond): Don't assume the first operand of the
283         comparison must be decl.
285 2009-03-23  Jason Merrill  <jason@redhat.com>
287         PR c++/37729
288         * pt.c (make_fnparm_pack): Split out from...
289         (instantiate_decl): ...here.
290         (tsubst_pack_expansion): Handle being called in a late-specified
291         return type.
293         PR c++/39526
294         * name-lookup.c (pushdecl_maybe_friend): Don't warn about shadowing
295         a parm with a parm.
297 2009-03-20  Jason Merrill  <jason@redhat.com>
299         PR c++/28879
300         * parser.c (cp_parser_direct_declarator): In a template, wrap 
301         non-constant expression in NOP_EXPR with TREE_SIDE_EFFECTS set.
302         * pt.c (tsubst): Preserve it in a partial instantiation.
303         (dependent_type_p_r): Don't check value_dependent_expression_p.
304         * decl.c (compute_array_index_type): Don't check
305         value_dependent_expression_p if TREE_SIDE_EFFECTS.
307         C++ core issue 703
308         * typeck2.c (check_narrowing): Don't complain about loss of 
309         precision when converting a floating-point constant.
311 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
313         PR c/39495
314         * parser.c (cp_parser_omp_for_cond): Don't check lhs if decl is NULL.
315         (cp_parser_omp_for_loop): Always use cp_parser_omp_for_cond.
317 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
319         * parser.c (struct cp_token): Reorder fields for 64-bit hosts.
320         (eof_token): Adjust.
322 2009-03-18  H.J. Lu  <hongjiu.lu@intel.com>
324         PR c++/39425
325         * parser.c (cp_parser_explicit_specialization): Don't skip the
326         rest of the specialization when begin_specialization returns
327         false.
329 2009-03-17  Jason Merrill  <jason@redhat.com>
331         * decl.c (grokfndecl): Set DECL_CONTEXT on parms.
332         (duplicate_decls): Adjust DECL_CONTEXT of newdecl's parms.
333         * pt.c (check_explicit_specialization): Likewise.
334         (tsubst_copy) [PARM_DECL]: Return a dummy parm if we don't have a
335         local specialization.
336         * tree.c (cp_tree_equal) [PARM_DECL]: Check type and index, not name.
337         * decl2.c (parm_index): New fn.
338         * semantics.c (finish_decltype_type): Don't use describable_type.
339         * mangle.c (write_expression): Likewise.  Mangle ALIGNOF_EXPR.
340         Give a sorry for unsupported codes rather than crash.  Mangle
341         conversions with other than 1 operand.  New mangling for PARM_DECL.
342         * operators.def (ALIGNOF_EXPR): Mangle as "az".
344 2009-03-17  Jing Yu  <jingyu@google.com>
346         PR middle-end/39378
347         * method.c (use_thunk): Change is_thunk from crtl to cfun.
349 2009-03-17  Paolo Carlini  <paolo.carlini@oracle.com>
351         PR c++/39475
352         * semantics.c (check_trait_type): New.
353         (finish_trait_expr): Use it.
355 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
357         * name-lookup.c (cp_emit_debug_info_for_using): Emit USING_STMTs
358         instead of calling imported_module_or_decl debug hook if
359         building_stmt_tree ().
360         * cp-gimplify.c (cp_gimplify_expr): Don't assert the first operand
361         is a NAMESPACE_DECL.
363         PR debug/37890
364         * name-lookup.c (do_namespace_alias): Don't call global_decl debug
365         hook at function scope.
367         PR debug/39471
368         * cp-gimplify.c (cp_gimplify_expr): Don't set DECL_NAME
369         on IMPORTED_DECL.
371 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
373         PR c++/39371
374         * semantics.c (finish_switch_cond): Don't call get_unwidened.
375         * decl.c (finish_case_label): Pass SWITCH_STMT_TYPE as 3rd argument
376         instead of TREE_TYPE (cond).
378 2009-03-08  H.J. Lu  <hongjiu.lu@intel.com>
380         PR c++/39060
381         * parser.c (cp_parser_late_parsing_default_args): Continue
382         the loop when cp_parser_assignment_expression returns
383         error_mark_node.
385 2009-03-07  Jason Merrill  <jason@redhat.com>
387         PR c++/39367
388         * init.c (build_new_1): Don't use a VLA type.
389         (build_vec_init): Handle getting a pointer for BASE.
391 2009-03-06  H.J. Lu  <hongjiu.lu@intel.com>
393         PR c++/37520
394         * cp-tree.h: Check NO_DOT_IN_LABEL before NO_DOLLAR_IN_LABEL
395         when mangling symbols.
397 2009-03-06  Paolo Carlini  <paolo.carlini@oracle.com>
399         PR c++/33492
400         * error.c (dump_expr): Don't try to print THROW_EXPRs in full.
402 2009-03-06  Alexandre Oliva  <aoliva@redhat.com>
404         * decl.c (record_builtin_java_type): Use canonicalized integer
405         types.
407 2009-03-04  Jason Merrill  <jason@redhat.com>
409         PR c++/38908
410         * class.c (is_really_empty_class): New fn.
411         * cp-tree.h: Declare it.
412         * cp-objcp-common.c (cp_expr_size): Use it.
414         PR c++/13549
415         * semantics.c (perform_koenig_lookup): Handle TEMPLATE_ID_EXPR.
416         * parser.c (cp_parser_postfix_expression): Call it for 
417         TEMPLATE_ID_EXPR.
418         * tree.c (is_overloaded_fn): Look through TEMPLATE_ID_EXPR.
419         (get_first_fn): Likewise.
421         PR c++/9634
422         PR c++/29469
423         PR c++/29607
424         Implement DR 224.
425         * decl.c (make_typename_type): Do look inside currently open classes.
426         * parser.c (cp_parser_lookup_name): Likewise.
427         (cp_parser_template_name): Likewise.
428         * pt.c (dependent_scope_p): New function.
429         * cp-tree.h: Declare it.
430         * class.c (currently_open_class): Return fast if T isn't a class.
432 2009-02-26  H.J. Lu  <hongjiu.lu@intel.com>
434         PR c++/37789
435         * parser.c (cp_parser_mem_initializer): Return error_mark_node
436         if cp_parser_mem_initializer_id returns error_mark_node.
438 2009-02-24  Richard Guenther  <rguenther@suse.de>
440         PR c++/39242
441         * pt.c (instantiate_decl): Do not instantiate extern, non-inline
442         declared functions.
444 2009-02-23  H.J. Lu  <hongjiu.lu@intel.com>
446         PR c++/36411
447         * pt.c (coerce_template_template_parms): Return 0 if parameter
448         is error_mark_node.
450 2009-02-23  Jason Merrill  <jason@redhat.com>
452         * pt.c (unify): Call maybe_adjust_types_for_deduction when
453         deducing from an initializer list.
455 2009-02-20  Jason Merrill  <jason@redhat.com>
457         PR c++/39225
458         * decl.c (grokdeclarator): Handle ~identifier.
460 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
462         PR target/39175
463         * decl2.c (determine_visibility): If visibility changed and
464         DECL_RTL has been already set, call make_decl_rtl to update symbol
465         flags.
467 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
469         PR c++/39188
470         * cp-tree.h (maybe_commonize_var): New.
472         * decl.c (maybe_commonize_var): Make it extern.
474         * decl2.c (finish_anon_union): Call maybe_commonize_var.
476 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
478         PR c++/39219
479         * parser.c (cp_parser_enum_specifier): Apply all attributes.
481 2009-02-18  Jason Merrill  <jason@redhat.com>
483         * cfns.h: Tweak pathname for cfns.gperf.
485 2009-02-13  Jason Merrill  <jason@redhat.com>
487         PR c++/39070
488         * semantics.c (finish_call_expr): Change koenig_p parm to int.
489         If -1, don't set KOENIG_LOOKUP_P but do keep hidden candidates.
490         * cp-tree.h: Adjust prototype.
491         * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Pass -1.
493 2009-02-12  Jason Merrill  <jason@redhat.com>
495         PR c++/38950
496         * pt.c (unify)[TEMPLATE_PARM_INDEX]: Convert to the tsubsted type.
498 2009-02-11  Jason Merrill  <jason@redhat.com>
500         PR c++/39153
501         * decl2.c (cp_write_global_declarations): 
502         Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL.
504         PR c++/30111
505         * init.c (build_value_init_noctor): Split out from...
506         (build_value_init): ...here.
507         (expand_aggr_init_1): Handle value-initialization.
508         * cp-tree.h: Add declaration.
509         * class.c (type_has_user_provided_constructor): 
510         Handle non-class arguments.
512 2009-02-10  Jason Merrill  <jason@redhat.com>
514         PR c++/38649
515         * class.c (defaultable_fn_p): Handle ... properly.
517         PR c++/36744
518         * tree.c (lvalue_p_1): Condition rvalue ref handling on
519         treat_class_rvalues_as_lvalues, too.
521 2009-02-10  Paolo Carlini  <paolo.carlini@oracle.com>
523         PR c++/34397
524         * typeck.c (build_x_array_ref): New.
525         * cp-tree.h: Declare it.
526         * pt.c (tsubst_copy_and_build): Use it for case ARRAY_REF.
528 2009-02-09  Jason Merrill  <jason@redhat.com>
530         PR c++/39109
531         * semantics.c (simplify_aggr_init_expr): Do zero-initialization here.
532         * init.c (build_value_init): Not here. Don't build a TARGET_EXPR.
533         * tree.c (get_target_expr): Handle AGGR_INIT_EXPR.
534         * cp-gimplify.c (cp_gimplify_init_expr): Remove special handling
535         for build_value_init TARGET_EXPR.
536         * cp-tree.h (AGGR_INIT_ZERO_FIRST): New macro.
538 2009-02-06  Paolo Carlini  <paolo.carlini@oracle.com>
540         PR c++/35147
541         PR c++/37737
542         * cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Check TREE_VEC_LENGTH.
544 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
546         PR c++/39095
547         * operators.def: Use COMPONENT_REF code for ->/pt operator again,
548         remove ./dt operator.
549         * mangle.c (write_expression): Handle COMPONENT_REF after handling
550         ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it
551         write_string ("dt") instead of using operators.def.
553 2009-02-03  Jason Merrill  <jason@redhat.com>
555         * typeck.c (cp_build_unary_op): Only complain about taking address
556         of main if pedantic.
558 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
560         PR inline-asm/39059
561         * parser.c (cp_parser_primary_expression): Reject FIXED_CSTs.
563         PR c++/39056
564         * typeck2.c (digest_init_r): Don't call process_init_constructor
565         for COMPLEX_TYPE.
567 2009-02-03  Paolo Bonzini  <bonzini@gnu.org>
569         PR c++/36897
570         * pt.c (convert_nontype_argument_function): Expect expr to be an
571         ADDR_EXPR.
573         PR c++/37314
574         * typeck.c (merge_types): Call resolve_typename_type if only
575         one type is a typename.
577 2009-02-02  Jason Merrill  <jason@redhat.com>
579         PR c++/39054
580         * parser.c (cp_parser_unqualified_id): Don't wrap error_mark_node 
581         in BIT_NOT_EXPR.
583 2009-02-01  Paolo Carlini  <paolo.carlini@oracle.com>
585         PR c++/39053
586         * parser.c (cp_parser_pure_specifier): If there are no tokens left
587         do not call cp_lexer_consume_token.
589 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
591         PR c++/39028
592         * parser.c (cp_parser_already_scoped_statement): Handle __label__
593         declarations.
595 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
597         PR c++/33465
598         * error.c (dump_expr): Handle FIX_TRUNC_EXPR and FLOAT_EXPR.
600 2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>
602         PR c++/38655
603         * error.c (dump_type_prefix, dump_type_suffix): Handle FIXED_POINT_TYPE.
605 2009-01-29  Paolo Carlini  <paolo.carlini@oracle.com>
607         * typeck.c (invalid_nonstatic_memfn_p): Use
608         DECL_NONSTATIC_MEMBER_FUNCTION_P.
610 2009-01-27  Paolo Carlini  <paolo.carlini@oracle.com>
612         PR c++/37554
613         * call.c (build_over_call): If convert_for_arg_passing returns
614         error_mark_node unconditionally return it.
616 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
618         * class.c (check_field_decls): Also inherit packed for bitfields
619         regardless of their type.
621 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
623         PR c++/38930
624         * decl2.c (grokfield): Reverting changes of PR c++/26693
625         (save_template_attributes): Likewise.
626         * decl.c (grokdeclarator): Likewise.
627         * name-lookup.c (pushdecl_maybe_friend): Likewise.
628         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Likewise.
629         (append_type_to_template_for_access_check): Likewise.
630         * semantics.c (check_accessibility_of_qualified_id): Likewise.
631         * pt.c (instantiate_class_template, instantiate_template ): Likewise.
632         (tsubst): Likewise.
633         (resolve_type_name_type): Likewise.
634         (append_type_to_template_for_access_check): Likewise.
636 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
638         PR c++/26693
639         * decl2.c (grokfield): when a typedef appears in a
640         class, create the typedef variant type node for it.
641         (save_template_attributes): Creating typedef variant type node
642          here is now useless.
643         * decl.c (grokdeclarator): If the typedef'ed struct/class was
644         anonymous, set the proper type name to all its type variants.
645         * name-lookup.c (pushdecl_maybe_friend): Reuse the
646         set_underlying_type function to install typedef variant types.
647         * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
648         macro.
649         (append_type_to_template_for_access_check): New entry points.
650         * semantics.c (check_accessibility_of_qualified_id):
651         When a typedef that is a member of a class appears in a template,
652         add it to the template. It will be ...
653         * pt.c (instantiate_class_template, instantiate_template ): ... access
654         checked at template instantiation time.
655         (tsubst): Handle the case of being called with NULL args.
656         (resolve_type_name_type): The type name should be the name of the
657         main type variant.
658         (append_type_to_template_for_access_check): New entry point.
660 2009-01-19  Jason Merrill  <jason@redhat.com>
662         PR c++/23287
663         * parser.c (cp_parser_unqualified_id): In a template,
664         accept ~identifier.
665         * typeck.c (lookup_destructor): Handle IDENTIFIER_NODE.
667 2009-01-16  Jason Merrill  <jason@redhat.com>
669         PR c++/38877
670         * tree.c (lvalue_p_1): Allow non-fields in COMPONENT_REF.
671         * init.c (build_new): Don't call describable_type unless we
672         have an auto.
674         PR c++/29470
675         * pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.
677         PR c++/38579
678         * search.c (protected_accessible_p): N doesn't vary.
680 2009-01-15  Jason Merrill  <jason@redhat.com>
682         PR c++/38850
683         * pt.c (tsubst_copy_and_build): Tell finish_call_expr to
684         accept hidden friends.
686 2009-01-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
688         PR C++/29388
689         * decl.c (grokdeclarator): Check for a non namespace/class context.
691 2009-01-15  Jason Merrill  <jason@redhat.com>
693         PR c++/36334
694         PR c++/37646
695         * tree.c (lvalue_p_1): Handle BASELINK.  A COMPONENT_REF to
696         a function isn't necessarily an lvalue. Take tree, not const_tree.
697         (lvalue_p, real_lvalue_p): Take tree, not const_tree.
698         * typeck.c (lvalue_or_else): Likewise.
699         * cp-tree.h: Adjust prototypes.
701 2009-01-15  Steve Ellcey  <sje@cup.hp.com>
703         PR c++/38357
704         * pt.c (tsubst): Check for NULL args.
706 2009-01-15  Dodji Seketeli  <dodji@redhat.com>
708         PR c++/38636
709         * name-lookup.c (pushtag): Don't create members to types that are not
710         being created.
712 2009-01-14  Nick Clifton  <nickc@redhat.com>
714         PR c++/37862
715         * parser.c: Pass cp_id_kind computed in
716         cp_parser_postfix_dot_deref_expression to
717         cp_parser_primary_expression.
719 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
721         PR c++/38795
722         * tree.c (cp_walk_subtrees): Handle REINTERPRET_CAST_EXPR,
723         STATIC_CAST_EXPR, CONST_CAST_EXPR and DYNAMIC_CAST_EXPR the same
724         as CAST_EXPR.
726 2009-01-12  Jason Merrill  <jason@redhat.com>
727             Steve Ellcey  <sje@cup.hp.com>
729         PR c++/35109
730         * name-lookup.c (lookup_name_real): Keep looking past a hidden 
731         binding.
733 2009-01-12  Dodji Seketeli  <dodji@redhat.com>
735         PR c++/36019
736         * pt.c (parameter_of_template_p): New function.
737         * cp-tree.h: Declare it.
738         * name-lookup.c (binding_to_template_parms_of_scope_p): New
739         function.
740         (outer_binding): Take template parameters in account when looking for
741         a name binding.
743 2009-01-12  Jason Merrill  <jason@redhat.com>
745         PR c++/31488
746         * tree.c (pod_type_p): Return 1 for structs created by the back end.
748 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
750         PR c/32041
751         * parser.c (cp_parser_builtin_offsetof): Allow `->' in
752         offsetof member-designator, handle it as `[0].'.
754         PR c++/38794
755         * decl.c (start_function): If grokdeclarator hasn't returned
756         FUNCTION_DECL nor error_mark_node, issue diagnostics.
758 2009-01-11  Jakub Jelinek  <jakub@redhat.com>
760         PR c++/36254
761         * cp-gimplify.c (genericize_if_stmt): Renamed from ...
762         (gimplify_if_stmt): ... this.
763         (cp_gimplify_expr): Don't handle IF_STMT here.
764         (cp_genericize_r): Call genericize_if_stmt for IF_STMT.
766 2009-01-10  Andrew Pinski  <pinskia@gmail.com>
768         PR c++/38648
769         * typeck.c (cp_build_modify_expr): Check for NULL current_function_decl.
771         PR c++/36695
772         * typeck2.c (build_functional_cast): Check for reference type and NULL
773         PARMS.
775 2009-01-09  Steve Ellcey  <sje@cup.hp.com>
777         * typeck.c (cp_build_unary_op): Check for ERROR_MARK.
779 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
781         PR c++/35335
782         * error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR.
784 2009-01-09  John F. Carr  <jfc@mit.edu>
786         PR c++/37877
787         * parser.c (cp_parser_class_specifier): Clear
788         parser->in_unbraced_linkage_specification_p while parsing class
789         specifiers.
791 2009-01-07  Jakub Jelinek  <jakub@redhat.com>
793         PR c++/38725
794         * semantics.c (finish_goto_stmt): Convert destination to
795         void *.
797 2009-01-06  Jason Merrill  <jason@redhat.com>
799         PR c++/35297
800         PR c++/35477
801         PR c++/35784
802         PR c++/36846
803         PR c++/38276
804         * pt.c (check_default_tmpl_args): Don't complain about
805         out-of-order parameter packs in the enclosing class
806         or parameter packs after default args.
807         (coerce_template_parms): If we have more than one
808         parameter pack, don't flatten argument packs.
809         (template_args_equal): Handle argument packs.
810         (comp_template_args): Don't flatten argument packs.
811         (check_instantiated_arg): Split out from...
812         (check_instantiated_args): Here.  Handle arg packs.
813         (convert_template_argument): Just check that nontype argument
814         packs have the right type.
816 2009-01-05  Dodji Seketeli  <dodji@redhat.com>
818         PR c++/38472
819         * typeck.c (type_after_usual_arithmetic_conversions): Fix a typo.
821 2009-01-05  Jason Merrill  <jason@redhat.com>
823         PR c++/38698
824         * typeck2.c (process_init_constructor_union): Handle union with
825         no fields.
827         * mangle.c (write_expression): Remove mangling for zero-operand
828         casts.
830         PR c++/38701
831         * decl.c (cp_finish_decl): Clear DECL_INITIAL for invalid
832         defaulting.
834         PR c++/38702
835         * class.c (defaultable_fn_p): Only operator== can be a copy
836         assignment operator.
838 2009-01-02  Jason Merrill  <jason@redhat.com>
840         PR c++/38698
841         * typeck2.c (process_init_constructor_union): Handle excess
842         initializers.
843         (process_init_constructor_record): Likewise.
845         PR c++/38684
846         * typeck2.c (digest_init_r): Don't use process_init_constructor
847         for non-aggregate classes.