PR c++/30897
[official-gcc.git] / gcc / cp / ChangeLog
blob90bea18d704c6c825f9faae4e54786a1e81149b8
1 2007-11-01  Jason Merrill  <jason@redhat.com>
3         PR c++/30897
4         * pt.c (push_template_decl_real): Set DECL_CONTEXT on template
5         template parms.
6         (lookup_template_class): Use it to get the outer template args
7         for instantiating one.
9         PR c++/29236
10         * pt.c (reduce_template_parm_level): tsubst the parameters
11         of a template template parm.
13 2007-11-01  Douglas Gregor  <doug.gregor@gmail.com>
15         PR c++/33955
16         * pt.c (find_parameter_packs_r): Handle TYPENAME_TYPE.
18 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
20         PR c++/32384
21         * parser.c (cp_parser_postfix_dot_deref_expression): If
22         POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
23         first and if that succeeds and type is SCALAR_TYPE_P, create
24         PSEUDO_DTOR_EXPR.
26         PR c++/32260
27         * rtti.c (enum_tinfo_kind): Fix TK_TYPE_INFO_TYPE comment.
28         (typeid_ok_p): Use the same alias set for abi::__type_info_pseudo
29         as for std::type_info.
31 2007-10-31  Paolo Carlini  <pcarlini@suse.de>
33         PR c++/33494
34         * cxx-pretty-print.c (pp_cxx_typeid_expression,
35         pp_cxx_delete_expression): Change to static linkage.
36         * cxx-pretty-print.h: Adjust declarations.
37         * error.c (dump_expr, case EXPR_PACK_EXPANSION, TYPEID_EXPR,
38         MEMBER_REF, DOTSTAR_EXPR, DELETE_EXPR, VEC_DELETE_EXPR,
39         MODOP_EXPR): Forward to pp_expression.
41         * cxx-pretty-print.c (pp_cxx_expression, case NON_DEPENDENT_EXPR):
42         Fix typo.
44 2007-10-31 Christian Bruel  <christian.bruel@st.com>
45            Mark Mitchell  <mark@codesourcery.com>
47         PR c++/19531
48         * typeck.c (check_return_expr): Don't set named_return_value_okay_p
49         if retval is volatile. 
50         
51 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
53         PR c++/33616
54         * decl2.c (build_offset_ref_call_from_tree): Call
55         build_non_dependent_expr on object prior to building ADDR_EXPR from it
56         if FN is DOTSTAR_EXPR.
58 2007-10-30  Douglas Gregor  <doug.gregor@gmail.com>
60         PR c++/31993
61         PR c++/32252
62         * pt.c (find_parameter_packs_r): Fix typo in comment.
63         (convert_template_argument): Look at the pattern of a pack
64         expansion to determine what kind of entity we're converting.
65         (coerce_template_parameter_pack): When we have coerced a non-type
66         template parameter pack, substitute into the type of that pack.
67         (tsubst_pack_expansion): When our substitution of a parameter pack
68         is a "trivial" substitution of itself, just substitute into the
69         pack expansion rather than actually expanding.
71 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
73         PR c++/33841
74         * class.c (check_bitfield_decl): Don't set field's type to error_mark_node
75         for non-integral type bitfields.  Return true if bitfield is correct, false
76         error has been diagnosed.
77         (check_field_decls): If check_bitfield_decl returned false, call also
78         check_field_decl.
80 2007-10-28  Paolo Carlini  <pcarlini@suse.de>
81             Mark Mitchell  <mark@codesourcery.com>
83         PR c++/30659
84         * pt.c (do_decl_instantiation): If the VAR_DECL is not a
85         class member error out and return.
87 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
89         * error.c (reinit_cxx_pp): Initialize cxx_pp->enclosing_scope
90         to current_function_decl rather than 0.
92         PR c++/33844
93         * cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
94         ->* rather than .*.
95         * error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
97 2007-10-27  Jason Merrill  <jason@redhat.com>
99         PR c++/5247
100         * call.c (convert_default_arg): Detect recursion.
102 2007-10-27  Jakub Jelinek  <jakub@redhat.com>
104         PR c++/33842
105         * cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
106         * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
107         OFFSETOF_EXPR.
108         (pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
109         functions.
110         * error.c (dump_expr): Handle OFFSETOF_EXPR.
112 2007-10-26  Jason Merrill  <jason@redhat.com>
114         PR c++/24791
115         * pt.c (get_template_info): New fn.
116         (template_class_depth): Use it.
117         (push_template_decl_real): Check that the template args of the 
118         definition match the args of the previous declaration.
120 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
122         PR c++/31988
123         * decl2.c (coerce_new_type): Do not allow a default argument for
124         the first parameter.
126 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
128         PR c++/33839
129         * parser.c (cp_parser_decltype): Return ERROR_MARK_NODE if we
130         don't see the leading '('. Only lookup names if we get an
131         IDENTIFIER_NODE.
133 2007-10-26  Jakub Jelinek  <jakub@redhat.com>
135         PR c++/33744
136         * parser.c (cp_parser_parenthesized_expression_list): Set
137         greater_than_is_operator_p to true in between the parens.
139 2007-10-26  Paolo Carlini  <pcarlini@suse.de>
141         PR c++/31747
142         * decl.c (grokdeclarator): In case of conflicting specifiers
143         just return error_mark_node.
145 2007-10-26  Ollie Wild  <aaw@google.com>
147         * expr.c (cxx_expand_expr): Removed.
148         * cp-tree.h (exx_expand_expr): Removed.
149         * cp-objcp-common.h (LANK_HOOKS_EXPAND_EXPR): Replace cxx_expand_expr
150         with c_expand_expr.
152 2007-10-25  Paolo Carlini  <pcarlini@suse.de>
154         PR c++/33843
155         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with BIT_NOT_EXPR.
157 2007-10-23  Jason Merrill  <jason@redhat.com>
159         PR c++/25950 (DR 391)
160         * call.c (struct conversion): Remove check_copy_constructor_p.
161         (reference_binding): Always bind a reference directly to a 
162         compatible class rvalue.  Pass down LOOKUP_NO_TEMP_BIND during 
163         temporary creation.
164         (check_constructor_callable): Remove.
165         (convert_like_real): Don't call it.
166         (initialize_reference): Don't call check_constructor_callable.
167         (standard_conversion): Check LOOKUP_NO_CONVERSION instead of
168         LOOKUP_CONSTRUCTOR_CALLABLE.  Don't require a temporary for base
169         conversions if LOOKUP_NO_TEMP_BIND.
170         (implicit_conversion): Pass through LOOKUP_NO_TEMP_BIND.
171         (build_user_type_conversion_1): Pass through LOOKUP_NO_TEMP_BIND for
172         second conversion.
173         * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): Remove.
175 2007-10-22  Jakub Jelinek  <jakub@redhat.com>
177         PR c++/33372
178         * semantics.c (finish_omp_clauses): Check !type_dependent_expression_p
179         before checking if its type is integral.
181 2007-10-22  Jason Merrill  <jason@redhat.com>
183         PR c++/33620
184         * class.c (finish_struct_bits): Copy TYPE_ATTRIBUTES.
185         * pt.c (apply_late_template_attributes): Splice out dependent
186         attributes from DECL_ATTRIBUTES.
188         * decl.c (cxx_maybe_build_cleanup): Use build_address.
190 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
192         * typeck.c (build_binary_op) : Use appropriate warning option
193         instead of unnamed warning.
195 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
197         PR c++/31446
198         * pt.c (current_template_args): Do not change TREE_LIST elements
199         with a TREE_VALUE of error_mark_node.
201 2007-10-16  Mark Mitchell  <mark@codesourcery.com>
203         * typeck.c (cp_apply_type_quals_to_decl): Expand documentation.
204         * decl.c (start_decl): Tidy.
205         (start_decl_1): Call cp_apply_type_quals_to_decl after completing
206         the type.
207         (grokdeclarator): Clarify comment.
209 2007-10-14  Andrew Pinski  <pinskia@gmail.com>
211         PR c++/30303
212         * decl.c (grokfndecl): Return NULL after the "definition of
213         implicitly-declared" error happened.
215 2007-10-12  Simon Martin  <simartin@users.sourceforge.net>
217         PR c++/26698
218         * call.c (build_user_type_conversion_1): Do not consider conversion
219         functions to convert a (possibly cv-qualified) object to the (possibly
220         cv-qualified) same object type (or a reference to it), to a (possibly
221         cv-qualified) base class of that type (or a reference to it).
223 2007-10-12  Paolo Carlini  <pcarlini@suse.de>
225         * pt.c (tsubst): Use template_parm_level_and_index.
227 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
229         PR c++/32121
230         * parser.c (cp_parser_compound_statement): Handle label-declarations
231         at the beginning of the compound statement.
232         (cp_parser_block_declaration): Issue diagnostics about __label__
233         not at the beginning of a block.
235 2007-10-11  Paolo Carlini  <pcarlini@suse.de>
237         PR c++/33461
238         * pt.c (coerce_template_parameter_pack): Do not pass error_mark_node
239         to convert_template_argument.
240         (coerce_template_parms): Return error_mark_node after fixed-length
241         error.
242         (tsubst_decl): Check for error_mark_node the return value of the
243         first tsubst in 'case VAR_DECL'.
245 2007-10-08  Ollie Wild  <aaw@google.com>
247         * typeck2.c (digest_init): Call cplus_expand_constant after
248         convert_for_initialization.
249         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
250         * expr.c (cplus_expand_constant): Updated function description.
252 2007-10-04  Jason Merrill  <jason@redhat.com>
254         PR c++/20416
255         * call.c (initialize_reference): Handle local static reference
256         temps properly.
258 2007-10-03  Jason Merrill  <jason@redhat.com>
260         PR c++/32470
261         * name-lookup.c (push_namespace_with_attrs): Fold back into...
262         (push_namespace): Here.
263         (handle_namespace_attrs): New fn for the attr code.
264         (leave_scope): Don't pop_visibility.
265         * name-lookup.h (struct cp_binding_level): Remove has_visibility.
266         * parser.c (cp_parser_namespace_definition): Call
267         handle_namespace_attrs and pop_visibility as appropriate. 
269         PR c++/11756
270         * mangle.c (write_type) [TYPEOF_TYPE]: Just sorry.
272 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
274         * decl.c (duplicate_decls): Preserve linkage flags for mere
275         redeclarations of gnu_inline definitions.
277 2007-10-03  Jason Merrill  <jason@redhat.com>
279         PR c++/15764
280         * decl.c (wrap_cleanups_r): New fn.
281         (wrap_temporary_cleanups): New fn.
282         (initialize_local_var): Call it.
284 2007-09-29  Jason Merrill  <jason@redhat.com>
286         PR c++/33094
287         * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member 
288         constant to not have DECL_EXTERNAL if it's file-local.
290 2007-09-28  Ollie Wild  <aaw@google.com>
292         Revert
293         2007-09-27  Ollie Wild  <aaw@google.com>
295         * typeck2.c (digest_init): Call cplus_expand_constant after
296         convert_for_initialization.
297         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
298         * expr.c (cplus_expand_constant): Updated function description.
300 2007-09-28  Jason Merrill  <jason@redhat.com>
302         PR c++/10179
303         * class.c (layout_empty_base): Take rli parameter, update
304         rli->record_align if empty base has user-specified alignment.
305         (build_base_field): Pass rli to it.
307 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
309         PR c++/33213
310         * error.c (dump_decl): Deal with TYPE_PACK_EXPANSION.
312 2007-09-28  Paolo Carlini  <pcarlini@suse.de>
314         PR c++/33118
315         * error.c (dump_expr): Deal with ARGUMENT_PACK_SELECT.
316         (dump_type): Use dump_template_argument for TYPE_ARGUMENT_PACK.
317         (dump_parameters): Just call dump_type for argument packs too.
319 2007-09-28  Jakub Jelinek  <jakub@redhat.com>
321         PR c++/31434
322         * tree.c (cp_build_qualified_type_real): Handle TYPE_PACK_EXPANSION
323         qualification by creating qualified PACK_EXPANSION_PATTERN and
324         then calling make_pack_expansion on it.
326 2007-09-27  Ollie Wild  <aaw@google.com>
328         * typeck2.c (digest_init): Call cplus_expand_constant after
329         convert_for_initialization.
330         * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
331         * expr.c (cplus_expand_constant): Updated function description.
333 2007-09-27  Jason Merrill  <jason@redhat.com>
335         PR c++/33571
336         * decl2.c (is_late_template_attribute): Don't crash on unknown
337         attribute.
339 2007-09-27  Paolo Carlini  <pcarlini@suse.de>
341         PR c++/33493
342         * error.c (dump_expr): Deal with DELETE_EXPR and VEC_DELETE_EXPR.
343         * cxx-pretty-print.c (pp_cxx_delete_expression): Add missing
344         spaces in the formatting.
345         * cxx-pretty-print.h (pp_cxx_delete_expression): Declare.
347 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
349         * error.c (cxx_print_error_function): Add third argument, pass
350         it over to lhd_print_error_function.
351         (cp_print_error_function): If diagnostic->abstract_origin, print
352         virtual backtrace.
353         * cp-tree.h (struct diagnostic_info): New forward decl.
354         (cxx_print_error_function): Add third argument.
356 2007-09-25  Simon Martin  <simartin@users.sourceforge.net>
358         PR c++/33207
359         * name-lookup.c (pushtag): Do not create an implicit typedef before
360         the associated type declaration is known to be valid.
362 2007-09-25  Jakub Jelinek  <jakub@redhat.com>
364         * tree.c (cxx_printable_name): Compare FUNCTION_DECL uids
365         rather than pointers.
367 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
369         PR c++/14688
370         * search.c (check_final_overrider): Fail if
371         targetm.comp_type_attributes returns 0.
373 2007-09-24  Jason Merrill  <jason@redhat.com>
375         PR c++/33239
376         * pt.c (resolve_typename_type): Don't look things up in the original
377         template if it would mean losing template arguments.    
379 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
381         PR c++/33506
382         * cp-tree.h (cxx_type_hash_eq): New prototype.
383         * cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
384         * tree.c (cxx_type_hash_eq): New function.
386 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
388         PR c++/33185    
389         * tree.c (cp_build_qualified_type_real): Build a canonical
390         ARRAY_TYPE if the original ARRAY_TYPE was not a canonical type.
391         
392 2007-09-24  Douglas Gregor  <doug.gregor@gmail.com>
394         PR c++/33112
395         PR c++/33185    
396         * tree.c (cplus_array_compare): Compare pointers, not types.
397         (build_cplus_array_type_1): Store new array type into the hash
398         table before building the canonical type; build the canonical type
399         correctly.
400         (cp_build_qualified_type_real): Put all of the array types with
401         cv-qualified element types into the C++ array hash table, built as 
402         variants of the unqualified versions.
403         
404 2007-09-23  Jason Merrill  <jason@redhat.com>
406         PR c++/16370
407         * decl.c (grokdeclarator): Look through implicit TYPE_DECLs
408         for deprecation warnings.
410 2007-09-22  Jason Merrill  <jason@redhat.com>
412         PR c++/15269
413         * call.c (build_over_call): Warn about deprecated virtuals.
415         PR c++/19407
416         * cp-tree.h (ATTR_IS_DEPENDENT): New macro.
417         (MAYBE_TAGGED_TYPE_P): Remove.
418         * pt.c (apply_late_template_attributes): Check ATTR_IS_DEPENDENT
419         instead of calling is_late_template_attribute again.
420         (tsubst_decl) [TYPE_DECL]: Just check if the name is the tag.
421         (tsubst): A typedef is a TYPE_NAME != TYPE_MAIN_DECL.
422         Don't crash on typedefs from non-template classes.
423         * decl2.c (grokfield): Don't sorry about attrs on template parms.
424         (is_late_template_attribute): All attributes applied to template
425         parms or typename types are dependent.  Static.
426         (splice_template_attributes): Pass decl through.
427         (save_template_attributes): Likewise.
429 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
431         PR c++/33496
432         * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Handle error_mark_node
433         returned from tsubst_pack_expansion.
434         (tsubst_copy_and_build) <case SIZEOF_EXPR>: Likewise.
435         (tsubst_copy_and_build) <case CONSTRUCTOR>: Likewise.
437 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
439         PR c++/33460
440         * semantics.c (finish_id_expression): Use consistently
441         context_for_name_lookup.
442         * decl.c (fixup_anonymous_aggr): Fix error message for
443         anonymous struct (vs union).
445 2007-09-19  Jason Merrill  <jason@redhat.com>
447         PR c++/7586
448         * pt.c (tsubst): Handle typedefs by looking for the specialization.
449         (retrieve_specialization): Only tagged types use 
450         DECL_TEMPLATE_INSTANTIATIONS.
451         (instantiate_class_template): Push nested classes too.
452         (tsubst_decl) [TYPE_DECL]: Only check for canonical decl for
453         tagged types.
454         * cp-tree.h (MAYBE_TAGGED_TYPE_P): New macro.
455         * init.c (is_aggr_type): Remove redundant tests.
456         * class.c (push_nested_class): Use CLASS_TYPE_P.
458 2007-09-20  Paolo Carlini  <pcarlini@suse.de>
460         PR c++/33459
461         * init.c (build_zero_init): If, recursively, build_zero_init
462         returns a NULL_TREE, do not append it to the VEC of constructors.
464 2007-09-18  Jason Merrill  <jason@redhat.com>
466         PR c++/17743
467         * pt.c (apply_late_template_attributes): Set processing_template_decl.
468         (tsubst_decl) [TYPE_DECL]: Preserve naming typedef, pass
469         ATTR_FLAG_TYPE_IN_PLACE.
470         (tsubst): Do unqualified lookup to find typedefs from current class.
471         [ARRAY_TYPE]: Propagate alignment info.
472         * decl2.c (is_late_template_attribute): Only defer handling of
473         attribute aligned if the expression is dependent.
474         (save_template_attributes): If we're deferring any attributes,
475         make this a naming typedef.
477 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
479         PR c++/33462 (again)
480         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Print
481         va_arg instead of __builtin_va_arg.
483 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
485         PR c++/33462
486         * cxx-pretty-print.c (pp_cxx_va_arg_expression): Add.
487         (pp_cxx_primary_expression): Use it.
488         * cxx-pretty-print.h (pp_cxx_va_arg_expression): Declare.
489         * error.c (dump_expr): Use it.
491 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
493         PR c++/33463
494         * cxx-pretty-print.c (pp_cxx_postfix_expression): Split
495         out case TYPEID_EXPR to...
496         (pp_cxx_typeid_expression): ... here; use pp_cxx_left_paren
497         and pp_cxx_right_paren.
498         * cxx-pretty-print.h (pp_cxx_typeid_expression): Declare.
499         * error.c (dump_expr): Use it.
501 2007-09-18  Paolo Carlini  <pcarlini@suse.de>
503         PR c++/33464
504         * cxx-pretty-print.c (pp_cxx_trait_expression): Add.
505         (pp_cxx_primary_expression): Use it.
506         * cxx-pretty-print.h (pp_cxx_trait_expression): Declare.
507         * error.c (dump_expr): Use it.
509 2007-09-16  Paolo Carlini  <pcarlini@suse.de>
511         PR c++/33124
512         * init.c (build_new): Remove warning for zero-element
513         allocations.
515 2007-09-16  Nathan Sidwell  <nathan@codesourcery.com>
517         PR c++/32756
518         * call.c (maybe_handle_implicit_object): Set this_p, clear
519         rvaluedness_matches_p.
520         (compare_ics): Do not compare rvaluedness matching when one of the
521         operands is an implicit object.
523 2007-09-14  Jason Merrill  <jason@redhat.com>
525         PR c++/17743, c++/19163
526         * decl2.c (is_late_template_attribute): New fn.
527         (splice_template_attributes, save_template_attributes): New fns.
528         (cplus_decl_attributes): Call save_template_attributes.
529         * pt.c (apply_late_template_attributes): New fn.
530         (instantiate_class_template, tsubst_decl): Use it.
531         * cp-tree.h: Declare is_late_template_attribute.
533 2007-09-13  Tom Tromey  <tromey@redhat.com>
535         * parser.c (cp_lexer_new_main): Don't use
536         c_lex_return_raw_strings.
537         (cp_lexer_get_preprocessor_token): Update.  Add special case when
538         lexer is NULL.
540 2007-09-11  Jan Hubicka <jh@suse.cz>
542         * method.c (use_thunk): Use tree_rest_of_compilation
543         * cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
544         (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
545         * cp-tree.h (expand_body): Kill.
546         (emit_associated_thunks): Declare.
547         * semantics.c (emit_associated_thunks): Export.
548         (expand_body): Kill.
550 2007-09-09  David Daney  <ddaney@avtrex.com>
552         PR c++/33324
553         * init.c (build_new_1):  Use POINTER_PLUS_EXPR instead of MINUS_EXPR
554         to calculate cookie_ptr.
556 2007-09-08  Jason Merrill  <jason@redhat.com>
558         PR c++/33342
559         * pt.c (most_specialized_class): Set processing_template_decl
560         while tsubsting partial spec args.
562 2007-09-06  Jason Merrill  <jason@redhat.com>
564         * decl2.c (get_guard): Copy visibility from the guarded variable.
566 2007-09-06  Jan Hubicka  <jh@suse.cz>
568         * semantics.c (expand_body): Do not mark arguments of clones used.
570 2007-09-06  Paolo Carlini  <pcarlini@suse.de>
572         PR c++/32674
573         * decl.c (cp_finish_decl): When processing_template_decl,
574         deal correctly with init as TREE_LIST.
576 2007-09-06  Tom Tromey  <tromey@redhat.com>
578         * decl.c (finish_function): Put return's location on line zero of
579         file.
581 2007-09-05  Jason Merrill  <jason@redhat.com>
583         PR c++/15745
584         * except.c (prepare_eh_type): Use type_decays_to.
586         PR c++/15097
587         * init.c (build_delete): Use build_headof to get the address of the
588         complete object if we aren't using the deleting destructor.
589         * rtti.c (build_headof): No longer static.
590         * cp-tree.h: Declare it.
592 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
594         * decl.c (duplicate_decls): Set TREE_NOTHROW on __builtin_XX
595         decl if a prototype for XX is provided with throw().
597         PR c++/33289
598         * decl.c (builtin_function_1): Set DECL_ANTICIPATED also
599         on __*_chk non-__builtin_* decls.
601 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
603         PR c++/30302
604         * semantics.c (finish_id_expression): Use context_for_name_lookup
605         insted of DECL_CONTEXT, to see through anonymous structs and unions.
606         * class.c (finish_struct_anon): Deal correctly with anonymous
607         structs (vs unions, as GNU extension) in error messages.
609 2007-09-05  Jan Hubicka  <jh@suse.cz>
611         * cp/sematics.c (expand_body): Remove unnecesary import_export_decl
612         call, DECL_EXTERNAL checks and current_function_decl saving.
614 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
616         PR c++/29731 (again)
617         * parser.c (cp_parser_primary_expression): Return error_mark_node
618         when a statement-expression is found in a template-argument list.
620 2007-09-04  Jason Merrill  <jason@redhat.com>
622         * except.c (initialize_handler_parm): Use
623         fold_build_cleanup_point_expr.
625         PR c++/31419
626         * call.c (reference_binding): Don't look for user-defined conversions
627         to the same type.
629         PR c++/31411
630         * except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
631         the MUST_NOT_THROW_EXPR.
633 2007-09-04  Richard Sandiford  <richard@codesourcery.com>
635         * decl.c (cp_finish_decl): Call determine_visibility before
636         make_rtl_for_nonlocal_decl.
638 2007-09-04  Jason Merrill  <jason@redhat.com>
640         PR c++/14032
641         * pt.c (most_specialized_class): Substitute outer template
642         arguments into the arguments of a member template partial
643         specialization.
644         (strip_innermost_template_args): New fn.
646 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
648         * Make-lang.in (g++spec.o): Remove SHLIB_MULTILIB.
650 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
652         * call.c (name_as_c_string): Supply a TYPE for CONST_CAST.
653         * decl.c (cp_make_fname_decl): Likewise,
654         * parser.c (cp_parser_string_literal): Likewise,
655         * tree.c (pod_type_p, zero_init_p): Use CONST_CAST_TREE.
656         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
657         Likewise,
659 2007-09-02  Paolo Carlini  <pcarlini@suse.de>
661         PR c++/33208
662         * typeck.c (build_unary_op): Fix error message for
663         Boolean expression as operand to operator--.
665 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
667         * tree.c (pod_type_p, zero_init_p): Use strip_array_types.
668         * typeck.c (cp_type_quals, cp_type_readonly, cp_has_mutable_p):
669         Likewise.
671 2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
673         PR c++/32597
674         * init.c (build_default_init): Make extern.
675         * cp-tree.h (build_default_init): Declare here.
676         * pt.c (tsubst_expr): When the instantiation of the initializer of
677         a variable results in an empty list, default-initialize the
678         variable.
679         (tsubst_copy_and_build): When the instantiation of the initializer
680         in a new expression results in an empty initializer list,
681         default-initialize it.
683 2007-08-31  Douglas Gregor  <doug.gregor@gmail.com>
685         * mangle.c (write_type): Change mangling of rvalue reference from
686         `RR' to `O'. 
688 2007-08-31  Jakub Jelinek  <jakub@redhat.com>
690         * decl.c (duplicate_decls): Remove duplicated line.
692 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
694         PR c++/33210
695         * cxx-pretty-print.c (pp_cxx_unqualified_id): Deal with
696         BOUND_TEMPLATE_TEMPLATE_PARM.
698 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
700         PR c++/32113
701         * search.c (lookup_member): Check the name argument for
702         error_mark_node.
704 2007-08-31  Paolo Carlini  <pcarlini@suse.de>
706         PR c++/33212
707         * parser.c (cp_parser_trait_expr): Check rerurn value of
708         cp_parser_type_id.
710 2007-08-30  Ollie Wild  <aaw@google.com>
712         * cvt.c (cp_convert_to_pointer): Remove force parameter. Call
713         convert_ptrmem for pointer to member conversions.
714         (convert_to_pointer_force): Update cp_convert_to_pointer call.
715         (ocp_convert): Update cp_convert_to_pointer call.
716         * typeck.c (convert_ptrmem): Add conditional for null pointers to
717         members.
718         (build_static_cast_1): Check can_convert for conversions in either
719         direction.
720         (get_delta_difference_1): New function.
721         (get_delta_difference): Refactor to call get_delta_difference_1.
723 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
725         * decl.c (start_preparsed_function): Set
726         DECL_DISREGARD_INLINE_LIMITS for GNU_INLINE_P functions.
728 2007-08-28  Paolo Carlini  <pcarlini@suse.de>
730         PR c++/33209
731         * error.c (dump_expr): Deal with TEMPLATE_TYPE_PARM and
732         BOUND_TEMPLATE_TEMPLATE_PARM.
734 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
736         PR c++/32596
737         PR c++/32400
738         * pt.c (check_explicit_specialization): Set DECL_INTERFACE_KNOWN
739         and DECL_NOT_REALLY_EXTERN if tmpl_func is not public.
741 2007-08-27  Jason Merrill  <jason@redhat.com>
743         PR c++/29000
744         * pt.c (build_non_dependent_expr, type_dependent_expression_p): 
745         Look inside STMT_EXPR.
746         * semantics.c (stmt_expr_value_expr): New fn.
747         * cp-tree.h: Declare it.
749         PR c++/28558
750         * decl.c (groktypename): Ignore attributes applied to class type.
752 2007-08-28  Richard Guenther  <rguenther@suse.de>
754         * decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
756 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
757         
758         * error.c (dump_expr): Handle COMPLEX_CST.
759         * cxx-pretty-print.c (pp_cxx_primary_expression): Likewise.
760         (pp_cxx_expression): Likewise.
762 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
764         * decl.c (GNU_INLINE_P): New.
765         (duplicate_decls): Handle gnu_inline.  Merge attributes and
766         some flags in overriding definitions.
767         (redeclaration_error_message): Handle gnu_inline.
768         (start_preparsed_function): Likewise.
770 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
772         * call.c (sufficient_parms_p): Constify.
773         * class.c (same_signature_p): Likewise.
774         * cp-gimplify.c (is_invisiref_parm,
775         cxx_omp_privatize_by_reference): Likewise.
776         * cp-objcp-common.c (has_c_linkage): Likewise.
777         * cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK,
778         sufficient_parms_p, same_signature_p, copy_fn_p, move_fn_p,
779         grok_ctor_properties, nothrow_libfn_p, skip_artificial_parms_for,
780         num_artificial_parms_for, comp_template_parms,
781         template_parameter_pack_p, any_dependent_template_arguments_p,
782         any_type_dependent_arguments_p, any_value_dependent_elements_p,
783         repo_export_class_p, cxx_omp_privatize_by_reference, pod_type_p,
784         zero_init_p, member_p, cp_lvalue_kind,
785         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
786         varargs_function_p, is_dummy_object, special_function_kind,
787         string_conv_p, type_unknown_p, comp_except_specs, compparms,
788         comp_cv_qualification, is_bitfield_expr_with_lowered_type,
789         unlowered_expr_type, ptr_reasonably_similar, cp_type_readonly,
790         cp_has_mutable_p, at_least_as_qualified_p,
791         invalid_nonstatic_memfn_p, lvalue_or_else, lvalue_p): Likewise.
792         * decl.c (copy_fn_p, move_fn_p, grok_ctor_properties): Likewise.
793         * except.c (nothrow_libfn_p): Likewise.
794         * method.c (skip_artificial_parms_for, num_artificial_parms_for):
795         Likewise.
796         * pt.c (comp_template_parms, template_parameter_pack_p,
797         any_type_dependent_arguments_p, any_value_dependent_elements_p,
798         any_dependent_template_arguments_p): Likewise.
799         * repo.c (repo_export_class_p): Likewise.
800         * semantics.c (anon_aggr_type_p): Likewise.
801         * tree.c (lvalue_p_1, real_lvalue_p, lvalue_p,
802         builtin_valid_in_constant_expr_p, decl_anon_ns_mem_p,
803         varargs_function_p, member_p, is_dummy_object, pod_type_p,
804         zero_init_p, special_function_p): Likewise.
805         * typeck.c (comp_array_types, type_unknown_p, comp_except_specs,
806         comp_array_types, at_least_as_qualified_p, comp_cv_qualification,
807         compparms, invalid_nonstatic_memfn_p,
808         is_bitfield_expr_with_lowered_type, unlowered_expr_type,
809         string_conv_p, ptr_reasonably_similar, cp_type_readonly,
810         cp_has_mutable_p, lvalue_or_else): Likewise.
812 2007-08-25  Paolo Bonzini  <bonzini@gnu.org>
814         * decl.c (cp_tree_node_structure): Kill TINST_LEVEL case.
815         * cp-objcp-common.c (cp_tree_size): Ditto.
816         * tree.c (cp_walk_subtrees): Ditto
817         * cp-tree.def (TINST_LEVEL): Go away.
818         * cp-tree.h (struct tinst_level_s): Rename to struct tinst_level,
819         move together with other non-tree structs.
820         (enum cp_tree_node_structure_enum): Nuke TS_CP_TINST_LEVEL.
821         (union lang_tree_node): Eliminate tinst_level field.
822         (TINST_DECL, TINST_LOCATION, TINST_IN_SYSTEM_HEADER_P): Annihilate.
823         (current_instantiation, outermost_tinst_level): Return
824         a "struct tinst_level *".
826         * error.c (print_instantiation_partial_context): Change second
827         parameter to a "struct tinst_level *".  Replace accessor macros
828         with field access.
829         (print_instantiation_full_context): Likewise.
830         * lex.c (in_main_input_context): Likewise.
832         * pt.c (struct pending_templates): New.
833         (pending_templates, last_pending_template): Use it as a type.
834         (current_tinst_level): Change typo to "struct tinst_level *"
835         (reopen_tinst_level): Accept "struct tinst_level *", return decl.
836         (add_pending_template): Construct a "struct pending_template".
837         Replace TINST_LEVEL accessor macros with field access.
838         (push_tinst_level): Likewise, using GGC_NEW instead of make_node.
839         (pop_tinst_level): Likewise.
840         (instantiate_pending_templates): Likewise.  Factor common code used
841         when an instantiation has been done.
842         (outermost_tinst_level): Replace tree_last with loop.
843         (current_instantiation): Return a "struct tinst_level *".
845 2007-08-24  Ollie Wild  <aaw@google.com>
847         * name-lookup.c (add_decl_to_level): Remove addition to vtables chain.
848         * name-lookup.h (cp_binding_level): Remove vtables member.
850 2007-08-24  Richard Guenther  <rguenther@suse.de>
852         * tree.c (cp_cannot_inline_tree_fn): Remove.
853         * cp-tree.h (cp_cannot_inline_tree_fn): Likewise.
854         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
855         Remove define.
857 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
859         PR c++/32567
860         * typeck.c (build_unary_op) <case PREINCREMENT_EXPR>: Return
861         error_mark_node right away if build_expr_type_conversion
862         returned it.
864         PR c++/32898
865         * name-lookup.c (set_decl_namespace): lookup_qualified_name failure
866         is error_mark_node rather than NULL_TREE.
867         * pt.c (check_explicit_specialization): Likewise.
869         PR c++/31941
870         * error.c (resolve_virtual_fun_from_obj_type_ref): Handle
871         TARGET_VTABLE_USES_DESCRIPTORS targets properly.
873 2007-08-22  Jason Merrill  <jason@redhat.com>
875         PR c++/29365
876         * pt.c (outermost_tinst_level): New function.
877         * lex.c (in_main_input_context): New function.
878         * cp-tree.h: Declare it.
879         * decl2.c (constrain_class_visibility): Use it to avoid warning
880         about uses of the anonymous namespace in the main input file.
882 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
884         * init.c (build_new_1): Use get_target_expr instead of save_expr.
886 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
888         PR c++/7302
889         * class.c (finish_struct_1): Warn when a class has virtual
890         functions and accessible non-virtual destructor.
892 2007-08-20  Richard Guenther  <rguenther@suse.de>
894         PR c++/22369
895         PR c++/22451
896         * call.c (build_new_method_call): Convert initializer to
897         the basetype.
898         * init.c (build_aggr_init): Do not fiddle with types.
899         (build_vec_delete_1): Use correct type for POINTER_PLUS_EXPR.
900         * except.c (build_throw): Do not drop qualifiers for the
901         pointer type.
902         * typeck.c (get_member_function_from_ptrfunc): Do not
903         fiddle with types, instead convert.
904         (build_ptrmemfunc1): Convert to the target type for
905         initialization.
906         (gfc_trans_allocate): Convert result to target type.
907         * cp-objcp-common.c (cxx_get_alias_set): Pointers to
908         pointer-to-member structures shall have alias set zero as well.
910 2007-08-20  Richard Guenther  <rguenther@suse.de>
912         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P):
913         Remove.
914         * cp-tree.h (cp_auto_var_in_fn_p): Remove.
915         (nonstatic_local_decl_p): Likewise.
916         * tree.c (cp_auto_var_in_fn_p): Remove.
917         * decl.c (nonstatic_local_decl_p): Remove.
919 2007-08-20  Richard Guenther  <rguenther@suse.de>
921         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
922         Remove define.
923         * tree.h (cp_walk_tree): New define to walk_tree_1 with
924         cp_walk_subtrees lh parameter.
925         (cp_walk_tree_without_duplicates): New define to
926         walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
927         * tree.c (count_trees): Call
928         cp_walk_tree_without_duplicates.
929         (verify_stmt_tree): Call cp_walk_tree.
930         (break_out_target_exprs): Likewise.
931         (WALK_SUBTREE): Likewise.
932         * cp-gimplify.c (cp_genericize): Likewise.
933         * cp-pt.c (find_parameter_packs_r): Likewise.
934         (uses_parameter_packs): Likewise.
935         (make_pack_expansion): Likewise.
936         (check_for_bare_parameter_packs): Likewise.
937         (for_each_template_parm): Likewise.
938         * decl.c (check_default_argument): Call
939         cp_walk_tree_without_duplicates.
940         * except.c (build_throw): Likewise.
941         * decl2.c (type_visibility): Likewise.
942         * semantics.c (expand_or_defer_fn): Likewise.
943         (finalize_nrv): Call cp_walk_tree.
945 2007-08-20  Jakub Jelinek  <jakub@redhat.com>
947         PR c++/33025
948         * init.c (build_new_1): Rename placement_var variable to placement_expr.
949         Initialize it with save_expr rather than get_temp_regvar.
951 2007-08-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
953         PR c++/28989
954         * tree.c (lvalue_p_1 <case SAVE_EXPR>): SAVE_EXPRs are never
955         lvalues.
957 2007-08-17  Ollie Wild  <aaw@google.com>
959         PR c++/31749
960         * name-lookup.c (do_nonmember_using_decl): Shift implicit type
961         declarations into appropriate slots for comparison.  Fix type
962         comparison.
964 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
966         PR c++/32112
967         * error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
968         * cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
970 2007-08-17  Paolo Carlini  <pcarlini@suse.de>
972         PR c++/32870
973         * parser.c (cp_parser_class_head): Improve error message.
975 2007-08-16  Seongbae Park  <seongbae.park@gmail.com>
977         * pt.c (instantiate_decl): Set input_location
978         for the function end.
980 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
982         * cp-objcp-common.c (cxx_warn_unused_global_decl, cp_expr_size):
983         Constify.
984         * cp-tree.h (local_variable_p, nonstatic_local_decl_p,
985         class_tmpl_impl_spec_p, cp_auto_var_in_fn_p, cp_type_quals,
986         cxx_incomplete_type_diagnostic, cxx_incomplete_type_error,
987         cxx_warn_unused_global_decl, cp_expr_size): Likewise.
988         * decl.c (local_variable_p, nonstatic_local_decl_p): Likewise.
989         * tree.c (class_tmpl_impl_spec_p, cp_auto_var_in_fn_p): Likewise.
990         * typeck.c (cp_type_quals): Likewise.
991         * typeck2.c (cxx_incomplete_type_diagnostic,
992         cxx_incomplete_type_error): Likewise.
994 2007-08-16  Paolo Carlini  <pcarlini@suse.de>
996         PR c++/31132
997         * pt.c (tsubst_friend_function): When check_classfn
998         returns error_mark_node likewise return it.
1000 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
1002         PR c++/32992
1003         * typeck.c (check_return_expr): Don't NRV optimize vars in
1004         anonymous unions.
1005         * decl.c (finish_function): Comment fix.
1007 2007-08-15  Paolo Carlini  <pcarlini@suse.de>
1009         PR c++/33035
1010         * pt.c (push_template_decl_real): Depending on TYPE_P
1011         use either TYPE_CONTEXT or DECL_CONTEXT.
1013 2007-08-14  Mark Mitchell  <mark@codesourcery.com>
1015         * semantics.c (finish_omp_clauses): Strip a NOP_EXPR if
1016         constructors and destructors return this.
1018 2007-08-14  Paolo Carlini  <pcarlini@suse.de>
1020         PR c++/27211
1021         * decl2.c (check_classfn): Return error_mark_node in case of error;
1022         in that case, do not call add_method.
1023         * decl.c (start_decl): Deal with check_classfn returning
1024         error_mark_node.
1025         (grokfndecl): Likewise.
1026         * pt.c (tsubst_friend_function): Likewise.
1028 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
1030         PR c++/30428
1031         * typeck.c (build_binary_op): Disallow vector float types with
1032         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
1034 2007-08-11  Ian Lance Taylor  <iant@google.com>
1036         * cp-objcp-common.c (cxx_get_alias_set): Change return type to
1037         alias_set_type.
1038         * cp/cp-tree.h (cxx_get_alias_set): Update declaration.
1040 2007-08-10  Ollie Wild  <aaw@google.com>
1042         * name-lookup.c (do_nonmember_using_decl): Print an error for ambiguous
1043         type lookups.
1044         (ambiguous_decl): Construct tree of ambiguous types.  Remove extaneous
1045         function parameter.
1046         (unqualified_namespace_lookup): Fix ambiguous_decl call.
1047         (lookup_using_namespace): Fix ambiguous_decl call.
1048         (qualified_lookup_using_namespace): Fix ambiguous_decl call.
1050 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1052         * call.c (name_as_c_string): Use CONST_CAST.
1053         * decl.c (build_decl): Likewise.
1054         * parser.c (cp_parser_string_literal): Likewise.
1056 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
1058         PR c++/17763
1059         * error.c (dump_expr): Consistently use the *_cxx_*
1060         variants of the pretty-print functions.
1062 2007-08-10  Paolo Carlini  <pcarlini@suse.de>
1064         PR c++/22256
1065         * decl.c (check_special_function_return_type): Just error
1066         on return type specified for conversion operator.
1068 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
1070         * typeck2.c (readonly_error): Handle general expressions.
1071         * error.c (dump_expr): Handle POINTER_PLUS_EXPR
1073 2007-08-06  Dan Hipschman  <dsh@google.com>
1075         * method.c (use_thunk): Use DECL_NAME instead of DECL_RTL to
1076         access function name.
1078 2007-08-04  Alfred Minarik  <a.minarik@aon.at>
1080         PR pch/13676
1081         * lang-specs.h: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
1082         * g++spec.c (lang_specific_driver): Check them.
1084 2007-08-06  Paolo Carlini  <pcarlini@suse.de>
1086         PR c++/19532
1087         * pt.c (inline_needs_template_parms): Fix comment; change return type
1088         to bool.
1090 2007-08-05  Volker Reichelt  <v.reichelt@netcologne.de>
1092         Revert:
1093         2007-03-26  Dirk Mueller  <dmueller@suse.de>
1095         * parser.c (cp_parser_member_declaration): Pedwarn
1096         about stray semicolons after member declarations.
1098 2007-08-02  Lee Millward  <lee.millward@gmail.com>
1100         PR c++/30849
1101         PR c++/30850
1102         PR c++/30851
1103         * parser.c (cp_parser_asm_definition): Detect and discard asm
1104         statements with invalid inputs or outputs.
1105         (cp_parser_asm_operand_list): Return error mark node if any
1106         of the operands are invalid. Adjust documentation.
1107         
1108 2007-08-02  Nick Clifton  <nickc@redhat.com>
1110         * typeck.c: Change copyright header to refer to version 3 of the
1111         GNU General Public License and to point readers at the COPYING3
1112         file and the FSF's license web page.
1113         * optimize.c, lang-specs.h, init.c, class.c, repo.c, decl.c,
1114         config-lang.in, cp-tree.def, call.c, decl.h, ptree.c,
1115         Make-lang.in, method.c, rtti.c, cp-objcp-common.c, g++spec.c,
1116         cp-objcp-common.h, except.c, error.c, operators.def, cvt.c,
1117         tree.c, mangle.c, cp-tree.h, dump.c, search.c, friend.c, expr.c,
1118         cp-gimplify.c, cxx-pretty-print.c, cp-lang.c, typeck2.c, pt.c,
1119         cxx-pretty-print.h, semantics.c, name-lookup.c, lex.c, decl2.c,
1120         name-lookup.h, parser.c: Likewise.
1122 2007-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1124         PR middle-end/32668
1125         * call.c (magic_varargs_p): Honor the "type generic" attribute.
1127 2007-07-30  Paolo Carlini  <pcarlini@suse.de>
1129         PR c++/32108
1130         * semantics.c (finish_label_stmt): Reject the __label__
1131         extension outside function scopes.
1133 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1135         * parser.c (eof_token): Un-constify.
1136         (cp_lexer_new_main, cp_lexer_new_from_tokens, VEC_alloc,
1137         cp_lexer_consume_token, cp_lexer_purge_token): Remove spurious
1138         casts.
1140 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
1142         * pt.c, tree.c, typeck2.c: Fix comment typos.
1144 2007-07-28  Simon Martin  <simartin@users.sourceforge.net>
1145             Mark Mitchell  <mark@codesourcery.com>
1147         PR c++/30917
1148         * name-lookup.c (lookup_name_real): Non namespace-scope bindings can be
1149         hidden due to friend declarations in local classes.
1151 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
1153         * typeck.c (structural_comptypes): Compare DECLTYPE_TYPE nodes.
1154         * cp-tree.def (DECLTYPE_TYPE): New.
1155         * error.c (dump_type): Dump DECLTYPE_TYPE nodes.
1156         (dump_type_prefix): Ditto.
1157         (dump_type_suffix): Ditto.
1158         * tree.c (DECLTYPE_TYPE): Walk DECLTYPE_TYPE nodes.
1159         * mangle.c (write_type): Handle DECLTYPE_TYPE.
1160         * cp-tree.h (IS_AGGR_TYPE): DECLTYPE_TYPE nodes can be aggregate
1161         types.
1162         (DECLTYPE_TYPE_EXPR): New.
1163         (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): New.
1164         (finish_declared_type): Declare.
1165         * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Print
1166         DECLTYPE_TYPE nodes.
1167         (pp_cxx_type_id): Ditto.
1168         * pt.c (for_each_template_parm_r): Walk DECLTYPE_TYPE children.
1169         (tsubst): Substitute into a DECLTYPE_TYPE node.
1170         (tsubst_copy): Ditto.
1171         (unify): Cannot deduce anything from TYPEOF_TYPE or DECLTYPE_TYPE
1172         nodes.
1173         (dependent_type_p_r): DECLTYPE_TYPE types are always dependent.
1174         * semantics.c (finish_typeof): TYPEOF_TYPE types need to use
1175         structural equality (because we can't hash the expressions).
1176         (finish_declared_type): New.
1177         * lex.c (reswords): Add "decltype" keyword.
1178         * parser.c cp_lexer_next_token_is_decl_specifier_keyword
1179         (cp_parser_postfix_expression): Add member_access_only_p to
1180         restrict postfix expression to member access expressions.
1181         (cp_parser_unary_expression): Update call to
1182         cp_parser_postfix_expression to reflect new parameter.
1183         (cp_parser_declared_type): New.
1184         (cp_parser_simple_type_specifier): Parse decltype types.
1186 2007-07-27  Mark Mitchell  <mark@codesourcery.com>
1188         PR c++/32346
1189         * call.c (convert_for_arg_passing): Only widen bitfields to their
1190         declared types if necessary.
1192 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1194         * parser.c (cp_parser_string_literal, cp_parser_sizeof_operand):
1195         Constify.
1197 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1199         * decl.c (typename_hash, typename_compare): Constify.
1200         * mangle.c (hash_type, compare_type): Likewise.
1201         * pt.c (eq_local_specializations, hash_local_specialization):
1202         Likewise.
1203         * tree.c (cplus_array_hash, cplus_array_compare, list_hash_eq,
1204         list_hash): Likewise.
1205         * typeck2.c (pat_compare): Likewise.
1207 2007-07-24  Nathan Sidwell  <nathan@codesourcery.com>
1209         * method.c (implicitly_declare_fn): Increase alignment if member
1210         function pointer format requires it.
1212 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
1214         PR c++/29001
1215         * typeck.c (check_return_expr): Do not pass a null argument
1216         to null_ptr_cst_p.
1218 2007-07-24  Paolo Carlini  <pcarlini@suse.de>
1220         PR c++/32561
1221         * decl.c (redeclaration_error_message): Call DECL_ANON_UNION_VAR_P
1222         only on VAR_DECL.
1224 2007-07-22  Nathan Sidwell  <nathan@codesourcery.com>
1226         PR c++/32839
1227         * typeck.c (convert_arguments): Only use default args if we have
1228         a function decl.
1230         PR c++/30818
1231         * typeck.c (structural_comptypes): No need to check
1232         resolve_typename_type return value here.
1233         * cp-tree.h (TYPENAME_IS_RESOLVING_P): New.
1234         * pt.c (resolve_typename_type): Follow typename typedefs.  Return
1235         original type rather than error_mark_node in case of failure.
1236         * parser.c (cp_parser_nested_name_specifier_opt): Adjust
1237         resolve_typename_type result check.
1238         (cp_parser_direct_declarator, cp_parser_head,
1239         cp_parser_constructor_declarator_p): Likewise.
1241 2007-07-12  Kazu Hirata  <kazu@codesourcery.com>
1243         * pt.c (template_parms_variadic_p): Remove.
1244         * cp-tree.h: Remove the prototype for template_parms_variadic_p.
1246 2007-07-12  Jakub Jelinek  <jakub@redhat.com>
1248         PR c++/30854
1249         * error.c (dump_expr) <case AGGR_INIT_EXPR>: Pass true as last
1250         argument to dump_aggr_init_expr_args instead of false.
1252 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
1254         * typeck.c (comptypes): When USE_CANONICAL_TYPES, use the
1255         canonical types; otherwise, fall back to structural type
1256         comparisons. If ENABLE_CHECKING and USE_CANONICAL_TYPES, give an
1257         internal compiler error if the canonical types are wrong.
1258         
1259 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
1261         PR c++/32560
1262         * parser.c (cp_parser_make_indirect_declarator): When the
1263         the code argument is ERROR_MARK return cp_error_declarator.
1265 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
1267         PR 32617
1268         * decl.c (cxx_init_decl_processing): Don't set
1269         force_align_functions_log.
1270         (grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
1271         * typeck.c (cxx_alignof_expr): When alignof is used on a plain
1272         FUNCTION_DECL, return its alignment.
1274 2007-07-09  Richard Guenther  <rguenther@suse.de>
1276         * decl.c (start_preparsed_function): Do not promote return type.
1278 2007-07-08  Paolo Carlini  <pcarlini@suse.de>
1280         PR c++/30535
1281         * pt.c (unify): Never pass error_mark_node to template_decl_level.
1283 2007-07-07  Mark Mitchell  <mark@codesourcery.com>
1285         PR c++/32232
1286         * pt.c (resolve_overloaded_unification): Robustify.  Return a
1287         bool, not an int.
1288         (type_unification_real): Adjust accordingly.
1290 2007-07-06  Richard Guenther  <rguenther@suse.de>
1292         * init.c (build_new_1): Use the correct pointer type.
1293         * typeck2.c (build_m_component_ref): Likewise.
1295 2007-07-05  Mark Mitchell  <mark@codesourcery.com>
1297         PR c++/32245
1298         * init.c (build_zero_init): Always build an initializer for
1299         non-static storage.
1300         * typeck2.c (build_functional_cast): Use build_zero_init.
1302         PR c++/32251
1303         * init.c (build_new_1): Always pass the allocation function to
1304         build_op_delete_call.
1305         * call.c (build_op_delete_call): Handle operator delete with a
1306         variable-argument list.  Do not issue an error when no matching
1307         deallocation function is available for a new operator.
1309         PR c++/31992
1310         * cp-tree.h (any_value_dependent_elements_p): Declare it.
1311         * decl.c (value_dependent_init_p): New function.
1312         (cp_finish_decl): Use it.
1313         * pt.c (value_dependent_expression_p): Use
1314         any_value_dependent_elements_p.
1315         * parser.c (cp_parser_primary_expression): Add comment about
1316         treating dependent qualified names as integral
1317         constant-expressions.
1319 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
1321         * decl.c (build_ptrmemfunc_type): Always use structural equality
1322         tests when comparing pointer-to-member-function types, because the
1323         handling of TYPE_GET_PTRMEMFUNC_TYPE currently defeats canonical
1324         types.
1325         
1326 2007-07-03  Mark Mitchell  <mark@codesourcery.com>
1328         * init.c (build_new): Tweak comment.
1330 2007-06-29  Dave Brolley  <brolley@redhat.com>
1332         PR c++/31743
1333         * parser.c (cp_parser_new_type_id): Don't reduce a named array
1334         type to its base type and number of elements here.
1335         * init.c (build_new): Call complete_type_or_else to ensure that the
1336         type is complete and to issue a diagnostic if it is not.
1337         (build_new_1): Don't call complete_type_or_else here.
1339 2007-07-03  Richard Guenther  <rguenther@suse.de>
1341         PR c++/32609
1342         * class.c (fixed_type_or_null): Re-lookup the hashtable slot
1343         after recursing.
1345 2007-07-02  Simon Baldwin  <simonb@google.com>
1347         * parser.c (cp_parser_elaborated_type_specifier): Added a warning
1348         for inner-style nested forward declarations that don't declare
1349         anything useful.
1351 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
1353         PR c++/31748
1354         * semantics.c (finish_omp_clauses): Use %qD instead of %qE for
1355         DECL_P in not a variable and appears more than once error messages.
1357 2007-07-01  Ollie Wild  <aaw@google.com>
1359         * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden.
1360         (select_decl): Remove function.
1361         (unqualified_namespace_lookup): Populate binding by calling
1362         ambiguous_decl.  Remove select_decl call.
1363         (lookup_qualified_name): Remove select_decl call.
1364         * decl.c (lookup_and_check_tag): Check for ambiguous references.
1365         * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error
1366         generation when name lookup is ambiguous.
1368 2007-06-29  Douglas Gregor  <doug.gregor@gmail.com>
1370         PR c++/31724
1371         * init.c (build_new_1): Use structural equality on the copy of the
1372         array type.
1374 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
1376         * decl2.c (determine_visibility): Implement
1377         flag_visibility_ms_compat effect on type info.
1378         * decl.c (cxx_init_decl_processing): Implement
1379         global effect of flag_visibility_ms_compat.
1381 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
1383         * decl2.c (start_objects): Mark constructor-running function
1384         as artificial.
1386 2007-06-26  Simon Martin  <simartin@users.sourceforge.net>
1388         PR c++/32111
1389         * decl.c (grokdeclarator): Reset friendp for member functions declared
1390         friend of their own class.
1392 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
1394         * decl2.c (determine_visibility): Don't look for dllexport here.
1395         (determine_visibility_from_class): Tidy.
1397 2007-06-18  Simon Baldwin <simonb@google.com>
1399         PR c++/31923
1400         * parser.c (cp_parser_single_declaration): Added check for storage
1401         class other than sc_none in parsed declaration, and a flag to indicate
1402         if the call is part of an explicit template specialization parse.
1403         * (cp_parser_explicit_specialization): Specialization check flag added
1404         to call to cp_parser_single_declaration(), set true.
1405         * (cp_parser_template_declaration_after_export): Specialization check
1406         flag added to call to cp_parser_single_declaration(), set false.
1407         * pt.c (check_explicit_specialization): Added code to copy visiblity
1408         and linkage from the templated function to the explicit specialization.
1410 2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1412         * typeck.c (build_binary_op): For templates build the
1413         expression in pieces to avoid the assert in build2_stat.
1414         (get_member_function_from_ptrfunc):
1415         Change over to using POINTER_PLUS_EXPR and convert
1416         the second operand to sizetype.
1417         * typeck2.c (build_m_component_ref):  Likewise.
1418         * init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
1419         instead of PLUS_EXPR for pointers.
1420         (build_new_1): Likewise.
1421         (build_vec_delete_1): Likewise.
1422         (build_vec_delete): Likewise.
1423         * class.c (build_base_path): Likewise.
1424         (build_base_path): Likewise.
1425         (convert_to_base_statically): Likewise.
1426         (fixed_type_or_null): Handle POINTER_PLUS_EXPR.
1427         (get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
1428         instead of PLUS_EXPR.
1429         (dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
1430         instead of PLUS_EXPR for pointers.
1431         * call.c (build_special_member_call): Likewise.
1432         * rtti.c (build_headof): Likewise.
1433         Use sizetype instead of ptrdiff_type_node.
1434         (tinfo_base_init): Create a POINTER_PLUS_EXPR
1435         instead of PLUS_EXPR for pointers.
1436         * except.c (expand_start_catch_block):  Do a
1437         NEGATIVE and then a POINTER_PLUS_EXPR instead
1438         of a MINUS_EXPR.
1439         * cp-gimplify.c (cxx_omp_clause_apply_fn): Convert
1440         PLUS_EXPR on pointer types over to use
1441         POINTER_PLUS_EXPR and remove the conversion
1442         to the pointer types.
1443         * method.c (thunk_adjust): Use POINTER_PLUS_EXPR for
1444         adding to a pointer type. Use size_int instead of
1445         ssize_int. Convert the index to sizetype before
1446         adding it to the pointer.
1448 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
1450         * cp-tree.h (DECL_VAR_MARKED_P): Remove.
1451         (DECL_ANON_UNION_VAR_P): New macro.
1452         * class.c (fixed_type_or_null): Tidy.  Use a hash table, rather
1453         than DECL_VAR_MARKED_P, to keep track of which variables we have
1454         seen.
1455         * decl.c (redeclaration_error_message): Complain about redeclaring
1456         anonymous union members at namespace scope.
1457         * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
1459 2007-06-14  Geoff Keating  <geoffk@apple.com>
1461         * decl2.c (determine_visibility): Ensure that functions with
1462         hidden types as parameters are hidden.
1464         PR 31093
1465         * decl2.c (determine_visibility): Remove duplicate code for
1466         handling type info.
1468 2007-06-12  Ian Lance Taylor  <iant@google.com>
1470         PR libstdc++/29286
1471         * init.c (avoid_placement_new_aliasing): New static function.
1472         (build_new_1): Call it.
1474 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
1476         * cp-objcp-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1477         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1479 2007-06-08  Jakub Jelinek  <jakub@redhat.com>
1481         PR c++/32177
1482         * semantics.c (finish_omp_for): Call fold_build_cleanup_point_expr
1483         on init, the non-decl cond operand and increment value.
1485 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
1487         PR c++/30759
1488         * decl.c (check_initializer): Report an error when a brace enclosed
1489         initializer is used for a non-aggregate type in C++98.
1490         (redeclaration_error_message): Rewrote flag_cpp0x in terms of
1491         cxx_dialect.
1492         (grokdeclarator): Likewise.
1493         (move_fn_p): Likewise.
1494         * typeck.c (check_return_expr): Likewise.
1495         * call.c (reference_binding): Likewise.
1496         * error.c (cp_cpp_error): Likewise.
1497         * pt.c (check_default_tmpl_args): Likewise.
1498         (tsubst): Likewise.
1499         * lex.c (init_reswords): Likewise.
1500         * parser.c (p_parser_primary_expression): Likewise.
1501         (TOKEN_PRECEDENCE): Likewise.
1502         (cp_parser_init_declarator): Likewise.
1503         (cp_parser_ptr_operator): Likewise.
1504         (cp_parser_parameter_declaration): Likewise.
1505         (cp_parser_enclosed_template_argument_list): Likewise.
1506         (cp_parser_skip_to_end_of_template_parameter_list): Likewise.
1507         (cp_parser_next_token_ends_template_argument_p): Likewise.
1509 2007-06-04  Simon Baldwin  <simonb@google.com>
1511         * decl.c (grokdeclarator): Readability change.  Moved case labels
1512         into direct switch statement scope.
1514 2007-06-04  Paolo Carlini  <pcarlini@suse.de>
1516         * call.c (convert_like_real): Remove pointless code.
1518 2007-05-31  Mark Mitchell  <mark@codesourcery.com>
1520         * decl.c (get_atexit_fn_ptr_type): New function.
1521         (get_atexit_node): Use it.
1522         (start_cleanup_fn): Likewise.
1523         (register_dtor_fn): Use the object's destructor, instead of a
1524         separate cleanup function, where possible.
1525         * cp-tree.h (CPTI_ATEXIT_FN_PTR_TYPE): New enumerator.
1526         (atexit_fn_ptr_type_node): New macro.
1527         * decl2.c (build_cleanup): Use build_address.
1529 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
1531         * typeck.c (build_binary_op): Include types in error.
1533 2007-05-31  Jakub Jelinek  <jakub@redhat.com>
1535         PR c++/31806
1536         * decl.c (cp_finish_decl): Also clear was_readonly if a static var
1537         needs runtime initialization.
1539 2007-05-31  Paolo Carlini  <pcarlini@suse.de>
1541         PR c++/32158
1542         * semantics.c (finish_trait_expr): Complete the types.
1544 2007-05-30  Russell Yanofsky <russ@yanofsky.org>
1545             Douglas Gregor <doug.gregor@gmail.com>
1546             Pedro Lamarao <pedro.lamarao@mndfck.org>
1547             Howard Hinnant <howard.hinnant@gmail.com>
1549         PR c++/7412
1550         PR c++/29939
1551         * typeck.c (comptypes): Don't consider rvalue and lvalue
1552         reference types to be equivalent.
1553         (check_return_expr): Move from certain lvalues when returning
1554         them.
1555         * decl.c (grokdeclarator): Implement reference collapsing.
1556         (copy_fn_p): Don't consider constructors taking rvalue references
1557         to be copy constructors.
1558         (move_fn_p): New.
1559         * call.c (conversion): New "rvaluedness_matches_p" member.
1560         (convert_class_to_reference): Require reference type as first
1561         parameter instead of base type.
1562         (reference_binding): Add logic to handle rvalue references.
1563         (implicit_conversion): Update inaccurate comment.
1564         (convert_like_real): Disable creation of temporaries that are
1565         impossible to initialize for types with move constructors.
1566         (build_over_call): Elide move constructors when possible.
1567         (maybe_handle_implicit_object): Set "rvaluedness_matches_p".
1568         (maybe_handle_ref_bind): Return conversion instead of type node.
1569         (compare_ics): Add logic to use "rvaluedness_matches_p" values to
1570         determine preferred conversion sequences.
1571         * cp-tree.h (TYPE_REF_IS_RVALUE): New.
1572         (LOOKUP_PREFER_RVALUE): New.
1573         (DECL_MOVE_CONSTRUCTOR_P): New.
1574         (struct cp_declarator): Add "reference" member for reference
1575         types, with new "rvalue_ref" flag.
1576         (cp_build_reference_type): Declare.
1577         (move_fn_p): Declare.
1578         * error.c (dump_type_prefix): Format rvalue reference types
1579         correctly in error messages.
1580         * except.c (build_throw): Move from certain lvalues when
1581         throwing.
1582         * mangle.c (write_type): Mangle rvalue references differently
1583         than regular references.
1584         * parser.c (make_reference_declarator): Add boolean parameter for
1585         rvalue references.
1586         (cp_parser_make_indirect_declarator): New.
1587         (cp_parser_new_declarator_opt): Call
1588         cp_parser_make_indirect_declarator. 
1589         (cp_parser_conversion_declarator_opt): Ditto.
1590         (cp_parser_declarator): Ditto.
1591         (cp_parser_ptr_operator): Parse "&&" tokens into rvalue reference
1592         declarators.
1593         * pt.c (tsubst): Implement reference collapsing.
1594         (maybe_adjust_types_for_deduction): Implement special template
1595         parameter deduction rule for rvalue references.
1596         (type_unification_real): Update calls to
1597         maybe_adjust_types_for_deduction.
1598         (try_one_overload): Ditto.
1599         (unify_pack_expansion): Ditto.
1600         * tree.c (lvalue_p_1): Handle rvalue reference types.
1601         (cp_build_reference_type): New.
1603 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
1605         PR c++/31809
1606         * decl.c (cp_finish_decl): Clear TREE_READONLY flag on TREE_STATIC
1607         variables that need runtime initialization.
1609 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
1611         PR c++/31339
1612         * typeck.c (build_unary_op <case PREINCREMENT_EXPR,
1613         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
1614         case POSTDECREMENT_EXPR>): Return the error_mark_node
1615         if either the real or imaginary parts would an
1616         error_mark_node.
1617         
1618 2007-05-25  Simon Martin  <simartin@users.sourceforge.net>
1619             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1621         PR c++/31745
1622         * parser.c (cp_parser_skip_to_closing_brace): Return true if the next
1623         token is a closing brace, false if there are no tokens left.
1624         (cp_parser_namespace_alias_definition): Only consume the next token if
1625         it is a closing brace.
1627         * parser.c (cp_parser_class_specifier): Likewise.
1629 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
1631         * semantics.c (finish_member_declaration): Fix a typo in the
1632         last checkin.
1634 2007-05-25  Douglas Gregor <doug.gregor@gmail.com>
1636         PR c++/31431
1637         PR c++/31432
1638         PR c++/31434
1639         PR c++/31435
1640         PR c++/31437
1641         PR c++/31438
1642         PR c++/31442
1643         PR c++/31443
1644         PR c++/31444
1645         PR c++/31445
1646         * error.c (dump_type): Dump TYPE_ARGUMENT_PACK nodes.
1647         * cp-tree.h (check_for_bare_parameter_packs): Returns bool.
1648         * pt.c (check_for_bare_parameter_packs): Return bool indicated
1649         whether everything was okay. Fix indentation.
1650         (push_template_decl_real): Check for bare parameter packs in
1651         function parameters; where errors occur, mark the parameter types
1652         with ERROR_MARK_NODEs to avert ICEs.
1653         (coerce_template_parameter_pack): New.
1654         (coerce_template_parms): Moved parameter pack coercion into
1655         coerce_template_parameter_pack, and permit it anywhere in the
1656         template parameter list (not just at the end). Parameter and
1657         argument indices can vary (somewhat) separately now, so add
1658         PARM_IDX and ARG_IDX.
1659         (fn_type_unification): Don't set an argument pack as incomplete if
1660         no argument pack was deduced.
1661         (type_unification_real): If a type parameter is a parameter pack
1662         and has not otherwise been deduced, it will be deduced to an empty
1663         parameter pack.
1664         (more_specialized_fn): Use the actual lengths of the argument
1665         lists when comparing against expansions.
1666         * semantics.c (finish_member_declaration): If a field's type has
1667         bare parameter packs, error and set its type to ERROR_MARK_NODE.
1669 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
1671         PR target/27067
1672         * mangle.c (mangle_decl): Call targetm.mangle_decl_assembler_name.
1674 2007-05-22  Ollie Wild  <aaw@google.com>
1676         * name-lookup.c (ambiguous_decl): Adds check for hidden types.
1677         (unqualified_namespace_lookup): Adds check for hidden types.
1679 2007-05-22  Ollie Wild  <aaw@google.com>
1681         * decl.c (duplicate_decls): Verify namespace names are unique.
1683 2007-05-21  Mark Mitchell  <mark@codesourcery.com>
1685         * decl.c (cxx_maybe_build_cleanup): Handle
1686         __attribute__((cleanup)).
1688 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1690         * cvt.c (cp_convert_and_check): Don't check warnings if the
1691         conversion failed.
1693 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
1695         * mangle.c (write_real_cst): Use 'unsigned long' for %lx.
1697 2007-05-14  Paolo Carlini  <pcarlini@suse.de>
1699         PR c++/29928
1700         * rtti.c (get_tinfo_decl_dynamic, get_typeid): Try to complete the
1701         type only if is a class type (5.2.8/4).
1703 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
1705         * cp-objcp-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
1706         * decl.c (grokdeclarator): Use unsigned_type_for instead of
1707         c_common_unsigned_type.
1709 2007-05-11  Silvius Rus  <rus@google.com>
1711         * cp/typeck.c (build_indirect_ref): Add call to
1712         strict_aliasing_warning.
1713         (build_reinterpret_cast_1): Condition call to
1714         strict_aliasing_warning. 
1716 2007-05-11  Jan Hubicka  <jh@suse.cz>
1718         * semantics.c (expand_or_defer_fn): Do not call c_record_cdtor_fn.
1719         * decl2.c (start_objects): ctors and dtors are no longer public.
1720         (cp_write_global_declarations): Do not call c_build_cdtor_fns.
1721         
1722 2007-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1724         * typeck.c (build_unary_op): Remove code that used to
1725         handle non lvalue increments/decrements.
1727 2007-05-07  Mike Stump  <mrs@apple.com>
1729         * parser.c (check_empty_body): Add.
1730         (cp_parser_iteration_statement): Add call to check_empty_body.
1732 2007-05-05  Geoffrey Keating  <geoffk@apple.com>
1734         PR 31775
1735         * mangle.c (write_mangled_name): Mangle static variable names.
1736         (write_unqualified_name): Use local-source-name for
1737         namespace-scope static variables.
1739 2007-05-04  Dirk Mueller  <dmueller@suse.de>
1741         * cp-tree.h (DECL_MAIN_P): only if -ffreestanding is
1742         not in effect.
1744 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
1746         PR c++/31663
1747         * decl2.c (constrain_class_visibility): 
1748         Use strip_pointer_or_array_types instead of strip_array_types.
1750 2007-04-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1752         PR C++/30221
1753         * decl.c (reshape_init_r): Don't reshape the first element if it
1754         is a pointer to member function.
1756 2007-04-27  Simon Baldwin  <simonb@google.com>
1758         * decl.c (grokparms): Changed message format from %qD to %qE.
1760 2007-04-27  Douglas Gregor  <doug.gregor@gmail.com>
1762         * error.c (maybe_warn_variadic_templates): Variadic templates are
1763        now in C++0x, so only warn about them in C++98 mode.
1764         
1765 2007-04-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1767         PR C++/30016
1768         * typeck.c (build_reinterpret_cast_1): Only allow conversion to
1769         integeral types from vectors types.
1771 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
1773         PR c++/31598
1774         * semantics.c (finish_omp_clauses): Don't create CP_OMP_CLAUSE_INFO
1775         for type dependent OMP_CLAUSE_DECLs.
1777 2007-04-24  Mark Mitchell  <mark@codesourcery.com>
1779         PR c++/31338
1780         * cp-tree.h (ARITHMETIC_TYPE): Include COMPLEX_TYPE.
1781         * typeck.c (type_after_usual_arithmetic_conversions): Adjust, as
1782         COMPLEX_TYPE is now an ARITHMETIC_TYPE.
1783         * init.c (build_zero_init): Adjust, as
1784         COMPLEX_TYPE is now a SCALAR_TYPE.
1785         * typeck2.c (digest_init): Allow brace-enclosed initializers for
1786         COMPLEX_TYPE, even though that is now a SCALAR_TYPE.
1788 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
1790         * semantics.c (classtype_has_nothrow_copy_or_assign_p): Adjust
1791         per N2255; rename as classtype_has_nothrow_assign_or_copy_p.
1792         (trait_expr_value): Adjust.
1794 2007-04-23  Simon Baldwin  <simonb@google.com>
1796         * decl.c (grokparms): Added new error for duplicate function
1797         parameters names in function prototypes, to match gcc behavior.
1799 2007-04-23  Jan Hubicka  <jh@suse.cz>
1801         * cp/decl2.c (finish_objects): Do not call target constructor/destructor
1802         bits dirrectly.
1804 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1806         * cp-tree.h (lang_tree_node): Use GENERIC_NEXT
1807         instead of checking GIMPLE_STMT_P in chain_next.
1809 2007-04-17  Mark Mitchell  <mark@codesourcery.com>
1811         PR c++/31513
1812         * call.c (convert_for_arg_passing): Convert bitfields to their
1813         declared types.
1815 2007-04-17  Simon Martin  <simartin@users.sourceforge.net>
1817         PR c++/31517
1818         * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
1820 2007-04-16  Seongbae Park <seongbae.park@gmail.com>
1822         PR c++/29365
1823         * cp/decl2.c (constrain_class_visibility):
1824         Do not warn about the use of anonymous namespace in the main input file.
1826 2007-04-15  Mark Mitchell  <mark@codesourcery.com>
1828         * cp-tree.h (current_template_parms): Fix typo in comment.
1830 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1832         * cp-tree.h, error.c: Fix comment typos.
1834 2007-04-13  Jason Merrill  <jason@redhat.com>
1836         PR c++/31074
1837         * call.c (reference_binding): Add c_cast_p parm.  If true,
1838         add quals to TO as needed to make it reference-compatible.
1840 2007-04-11  Jan Hubicka  <jh@suse.cz>
1842         * cp/class.c (convert_to_base_statically): Fold produced tree; verify
1843         that we are not processing template_decl.
1845 2007-04-09  Mark Mitchell  <mark@codesourcery.com>
1847         PR c++/31449
1848         * class.c (build_base_path): Ensure that the converted pointer has
1849         the same cv-qualification as the input.
1851 2007-04-09  Paolo Carlini  <pcarlini@suse.de>
1853         * tree.c (cp_tree_equal): Deal with TRAIT_EXPR.
1855 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
1857         * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
1858         Do not set it.
1859         (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
1860         * tree.c (cp_add_pending_fn_decls): Remove.
1861         * cp-tree.h (cp_add_pending_fn_decls): Remove prototype.
1863 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
1865         Revert change removing staticp.
1867 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1869         * cp-objcp-common.c (cxx_staticp): Remove.
1870         * cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
1871         * cp-tree.h (cxx_staticp):      
1873 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
1875         * class.c (check_for_override): Don't remove dllmport attribute
1876         of virtual methods.
1878 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
1880         PR c++/30847
1881         * typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
1882         type issue error and return early.
1884 2007-03-30  Jason Merrill  <jason@redhat.com>
1886         PR c++/31187
1887         * typeck.c (cp_type_readonly): New fn.
1888         * cp-tree.h: Declare it.
1889         * decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
1890         (cp_finish_decl): Not here.
1892 2007-03-31  Richard Guenther  <rguenther@suse.de>
1894         * optimize.c (maybe_clone_body): Replace splay-tree usage by
1895         pointer-map.
1897 2007-03-31  Douglas Gregor  <doug.gregor@gmail.com>
1899         PR c++/31138
1900         PR c++/31140
1901         PR c++/31141
1902         * parser.c (declarator_can_be_parameter_pack): New.
1903         (cp_parser_template_parameter): Only parse the `...' if the
1904         declarator can be a parameter pack.
1905         (cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
1906         is NULL.
1907         * pt.c (find_parameter_packs_r): Look into the bounds on integer
1908         types (they could be used as array bounds). 
1909         (check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
1910         (tsubst_pack_expansion): Handle failure to expand parameter
1911         packs.
1912         
1913 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
1915         PR c++/26099
1916         * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
1917         TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
1918         (enum cp_tree_node_structure_enum, union lang_tree_node): Update.
1919         (CLASS_TYPE_NON_UNION_P): Add.
1920         (struct lang_type_class): Add has_complex_dflt.
1921         (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
1922         (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
1923         * cp-tree.def: Add TRAIT_EXPR.
1924         * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
1925         * lex.c (struct resword): Add __has_nothrow_assign,
1926         __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
1927         __has_trivial_constructor, __has_trivial_copy,
1928         __has_trivial_destructor, __has_virtual_destructor, __is_abstract,
1929         __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
1930         __is_pod, __is_polymorphic, __is_union.
1931         * parser.c (cp_parser_primary_expression): Deal with the new RIDs.
1932         (cp_parser_trait_expr): New.
1933         * semantics.c (finish_trait_expr, trait_expr_value
1934         classtype_has_nothrow_copy_or_assign_p): New.
1935         * method.c (locate_copy, locate_ctor, locate_dtor): Do not define
1936         as static.
1937         * decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
1938         * class.c (check_bases, check_field_decl, check_bases_and_members):
1939         Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
1940         * pt.c (uses_template_parms, tsubst_copy_and_build,
1941         value_dependent_expression_p, type_dependent_expression_p): Deal with
1942         TRAIT_EXPR.
1943         * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.
1945 2007-03-29  Richard Guenther  <rguenther@suse.de>
1947         * tree.c (cp_walk_subtrees): Do not set input_location.
1949 2007-03-28  Simon Martin  <simartin@users.sourceforge.net>
1951         PR c++/29077
1952         * decl.c (grokfndecl): Properly setup decl if it is a constructor or a
1953         destructor.
1955 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
1957         * parser.c (struct cp_parser): Update comment for
1958         greater_than_is_operator_p.
1959         (cp_parser_primary_expression): In C++0x mode, a cast operator can
1960         be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
1961         (TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
1962         !GREATER_THAN_IS_OPERATOR_P.
1963         (cp_parser_binary_expression): When -Wc++0x-compat, warn about
1964         `>>' operators that will become two `>' tokens in C++0x.
1965         (cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
1966         mode, allowing it to terminate default arguments.
1967         (cp_parser_enclosed_template_argument_list): In C++0x mode, treat
1968         `>>' like two consecutive `>' tokens.
1969         (cp_parser_skip_to_end_of_template_parameter_list): Ditto.
1970         (cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
1971         ends a template argument.
1973 2007-03-28  Douglas Gregor  <doug.gregor@gmail.com>
1975         * decl.c (redeclaration_error_message): Complain when redeclaring
1976         a friend function with default template arguments (C++0x mode only).
1977         * cp-tree.h (check_default_tmpl_args): Declare.
1978         * pt.c (check_default_tmpl_args): In C++0x mode, permit default
1979         template arguments in function templates. Add support for checking
1980         the default template arguments of friend templates.
1981         (push_template_decl_real): Fix call to check_default_tmpl_args.
1982         (type_unification_real): If a template parameter has not been
1983         deduced but provides a default template argument, substitute into
1984         that default template argument.
1985         * parser.c (cp_parser_init_declarator): When declaring (but not
1986         defining!) a function template in C++0x mode, check for default
1987         template arguments.
1989 2007-03-28 Douglas Gregor <doug.gregor@gmail.com>
1991         PR c++/29993
1992         * decl.c (grokdeclarator): Deal with cv-qualified function type
1993         typedefs in the same way for member and non-member functions.
1995 2007-03-26  Dirk Mueller  <dmueller@suse.de>
1997         * parser.c (cp_parser_member_declaration): Pedwarn
1998         about stray semicolons after member declarations.
2000 2007-03-26  Paolo Carlini  <pcarlini@suse.de>
2002         PR c++/30500
2003         * pt.c (instantiate_decl): Set in_system_header.
2005 2007-03-22  Mark Mitchell  <mark@codesourcery.com>
2007         * cp-tree.h (current_tempalte_parms): Improve documentation.
2008         * pt.c (current_template_args): Likewise.
2010         PR c++/30863
2011         * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
2012         not consume tokens when failing.
2014 2007-03-22  Jim Wilson  <wilson@specifix.com>
2015             Mark Mitchell  <mark@codesourcery.com>
2017         PR c++/31273
2018         * call.c (standard_conversion): Use type_decays_to.  Keep FCODE
2019         consistent with FROM.
2021 2007-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2023         * error.c (dump_expr): Handle dependent names that designate types.
2024         * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.
2026 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2028         * cp-tree.def, parser.c, pt.c: Fix comment typos.
2030 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2032         * cvt.c (cp_convert_and_check) : Define.
2033         * cp-tree.h (cp_convert_and_check): Declare.
2034         * call.c (convert_conversion_warnings): Rename to
2035         conversion_null_warnings.  The warning for floating-point to
2036         integer is handled by convert_and_check in convert_like_real.
2037         (convert_like_real): convert_conversion_warnings was renamed as
2038         conversion_null_warnings.
2039         * typeck.c (build_binary_op): Use cp_convert_and_check to warn for
2040         overflow and changes of value during conversion.
2042 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2044         PR c++/30891
2045         * parser.c (cp_parser_statement): If 'namespace' is found, this
2046         only can be a namespace alias definition, so parse it now.
2047         (cp_parser_namespace_alias_definition): if we find an open brace
2048         instead of '=', then this is actually a misplaced namespace
2049         definition.
2050         
2051 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2053         PR c++/24924
2054         * decl.c (cxx_init_decl_processing): Move command-line options
2055         processing to c-opts.c.
2056         
2057 2007-03-15  Douglas Gregor  <doug.gregor@gmail.com>
2059         * ptree.c (cxx_print_type): Use formatting markup for integers
2060         when printing template parameter index/level/orig level.
2061         (cxx_print_xnode): Ditto.
2062         * cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
2063         (struct template_parm_index_s): Remove the PARAMETER_PACK member.
2064         Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
2065         HOST_WIDE_INTs.
2066         (struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
2067         rather than a HOST_WIDE_INT.
2068         Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
2069         NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
2070         better bit-packing.
2071         (struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
2072         RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
2073         IN_BASE_INITIALIZER bool bitfields.
2074         (struct cp_declarator): Make KIND a 4-bit field. Make
2075         PARAMETER_PACK_P a bool bitfield just after KIND.
2076         * pt.c (uses_parameter_packs): Destroy the pointer set.
2077         (make_pack_expansion): Ditto.
2078         (check_for_bare_parameter_packs): Ditto.
2079         * name-lookup.c (push_to_top_level): Make need_pop a bool value.
2080         
2081 2007-03-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2083         PR c++/31165
2084         * call.c  (convert_default_arg): Instead of copying the node,
2085         unshare it.
2087 2007-03-15  Dirk Mueller  <dmueller@suse.de>
2089         PR c++/30860
2090         * call.c (convert_conversion_warnings): New..
2091         (convert_like_real): .. factored out from here.
2092         (convert_conversion_warnings): Add warning about
2093         false being converted to NULL in argument passing.
2095 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2097         * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
2098         (finish_do_body): Warn about empty body in do/while statement.
2100 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2102         * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
2103         
2104 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2106         PR c/21438
2107         * typeck.c (build_binary_op): Call warn_for_div_zero instead of
2108         warning.
2109         
2110 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2112         * cp/repo.c (init_repo): Initialize random_seed saved options.
2113         (finish_repo): Adjust.
2115 2007-03-13  Mark Mitchell  <mark@codesourcery.com>
2117         PR bootstrap/30899
2118         * Make-lang.in (doc/g++.1): Use $< to specify the location from
2119         which to copy.
2121 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
2123         * decl.c (compute_array_index_type): New warning flag warn_vla.
2125 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
2127         PR c++/30108
2128         * call.c (convert_default_arg): Copy non-constant arguments.
2130 2007-03-11  Mark Mitchell  <mark@codesourcery.com>
2132         PR c++/31038
2133         * parser.c (cp_parser_postfix_expression): Disallow compound
2134         literals in constant expressions.
2136         PR c++/30328
2137         * semantics.c (finish_typeof): Use unlowered_expr_type.
2138         
2139 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
2141         PR c++/30274
2142         * cp-tree.h (unlowered_expr_type): New function.
2143         * typeck.c (is_bitfield_expr_with_lowered_type): Handle
2144         COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
2145         (unlowered_expr_type): New function.
2146         (build_unary_op): Disallow predecrements of bool bitfields.
2147         * call.c (build_conditional_expr): Use unlowered_expr_type.
2148         * pt.c (type_unification_real): Likewise.
2150 2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>
2152         PR c++/20599
2153         * typeck.c (check_return_expr): Check for bare parameter packs.
2154         (comptypes): Compare template parameter packs and
2155         type pack expansions.
2156         * decl.c (grokdeclarator): Deal with the declaration of function
2157         parameter packs.
2158         (grokparms): Verify that the (optional) function parameter pack is
2159         at the end of the parameter list.
2160         (xref_basetypes): Handle pack expansions in the base class.
2161         (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
2162         * cp-tree.def (TYPE_ARGUMENT_PACK): New.
2163         (NONTYPE_ARGUMENT_PACK): New.
2164         (TYPE_PACK_EXPANSION): New.
2165         (EXPR_PACK_EXPANSION): New.
2166         (ARGUMENT_PACK_SELECT): New.
2167         * cp-objcp-common.c (cp_tree_size): Compute size of
2168         (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
2169         ARGUMENT_PACK_SELECT.
2170         * error.c (dump_template_argument): Print template argument packs.
2171         (dump_template_argument_list): Ditto.
2172         (dump_template_parameter): Dump `...' for template type parameter
2173         packs.
2174         (dump_type): Dump TYPE_PACK_EXPANSION nodes.
2175         (dump_parameters): Print function parameter packs.
2176         (dump_template_parms): Print template argument packs.
2177         (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
2178         (maybe_warn_variadic_templates): New.
2179         * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
2180         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
2181         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
2182         CAST_EXPR. 
2183         * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
2184         (write_template_arg): Write argument packs as separate arguments.
2185         * cp-tree.h (struct template_parm_index_s): Add flag that
2186         indicates that the template parameter is actually a parameter
2187         pack.
2188         (struct tree_argument_pack_select): New.
2189         (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
2190         (union lang_tree_node): Add argument_pack_select.
2191         (FUNCTION_PARAMETER_PACK_P): New.
2192         (PACK_EXPANSION_P): New.
2193         (PACK_EXPANSION_PATTERN): New.
2194         (SET_PACK_EXPANSION_PATTERN): New.
2195         (PACK_EXPANSION_PARAMETER_PACKS): New.
2196         (ARGUMENT_PACK_P): New.
2197         (ARGUMENT_PACK_ARGS): New.
2198         (SET_ARGUMENT_PACK_ARGS): New.
2199         (ARGUMENT_PACK_INCOMPLETE_P): New.
2200         (ARGUMENT_PACK_EXPLICIT_ARGS): New.
2201         (TEMPLATE_PARM_PARAMETER_PACK): New.
2202         (TEMPLATE_TYPE_PARAMETER_PACK): New.
2203         (ARGUMENT_PACK_SELECT_FROM_PACK): New.
2204         (ARGUMENT_PACK_SELECT_INDEX): New.
2205         (ARGUMENT_PACK_SELECT_ARG): New.
2206         (struct cp_declarator): Add parameter_pack_p flag.
2207         (maybe_warn_variadic_templates): Declare.
2208         (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
2209         indicate a template parameter pack. 
2210         (uses_parameter_packs): Declare.
2211         (template_parameter_pack_p): Declare.
2212         (template_parms_variadic_p): Declare.
2213         (make_pack_expansion): Declare.
2214         (check_for_bare_parameter_packs): Declare.
2215         * cxx-pretty-print.c (pp_cxx_unary_expression): Print
2216         sizeof... expressions. 
2217         (pp_cxx_expression): Print pack expansions and non-type argument
2218         packs.
2219         (pp_cxx_exception_specification): Print pack expansions. 
2220         (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
2221         (pp_cxx_ctor_initializer): Print pack expansions.
2222         (pp_cxx_type_id): Print pack expansions.
2223         (pp_cxx_template_argument_list): Print argument packs.
2224         (pp_cxx_template_parameter): Print ellipsis for template parameter
2225         packs.
2226         * pt.c (comp_template_parms): Compare template parameter packs.
2227         (template_parameter_pack_p): New.
2228         (template_parms_variadic_p): New.
2229         (template_args_variadic_p): New.
2230         (make_ith_pack_parameter_name): New.
2231         (struct find_parameter_pack_data): New.
2232         (find_parameter_packs_r): New.
2233         (uses_parameter_packs): New.
2234         (make_pack_expansion): New.
2235         (check_for_bare_parameter_packs): New.
2236         (expand_template_argument_pack): New.
2237         (reduce_template_parm_level): Propagate parameter pack flag.
2238         (process_template_parm): Add is_parameter_pack parameter to state
2239         when the parameter is actually a parameter pack. Create template
2240         parameter packs when is_parameter_pack is true.
2241         (current_template_args): The argument for a template parameter
2242         pack is an argument pack containing a single pack expansion.
2243         (process_partial_specialization): When checking that non-type
2244         argument expressions do not involve template parameters, loop over
2245         the arguments in argument packs separately.
2246         (push_template_decl_real): Check that the type of the declaration
2247         does not have any bare parameter packs. Check that primary
2248         templates have no more than one parameter pack, and that it comes
2249         at the end of the template parameter list.
2250         (convert_template_argument): Handle coercions for pack expansion
2251         expressions by coercing the pattern then rebuilding the expansion.
2252         (coerce_template_parms): When coercing the arguments for a
2253         variadic template, pack "extra" arguments into an argument pack.
2254         (coerce_template_template_parms): Cannot coerce between parameter
2255         packs and non-pack parameters.
2256         (template_args_equal): Compare PACK_EXPANSION_P expressions.
2257         (comp_template_args): Expand all template arguments packs before
2258         comparing template argument lists.
2259         (mangle_class_name_for_template): Make argument packs as separate
2260         template arguments.
2261         (for_each_template_parm_r): No need to handle BASELINK. 
2262         (instantiate_class_template): Handle pack expansions in the base
2263         class list.
2264         (tsubst_pack_expansion): New.
2265         (tsubst_template_args): Handle substitutions of argument packs and
2266         pack expansion into template argument lists.
2267         (tsubst_decl): Expand function parameter packs into separate
2268         function parameters.
2269         (tsubst_arg_types): Expand a type pack expansion into separate
2270         argument types.
2271         (tsubst_exception_specification): Handle pack expansions in
2272         exception specifiers.
2273         (tsubst): See through ARGUMENT_PACK_SELECT arguments when 
2274         replacing a template parameter with its argument. If we encounter
2275         a substitution for an argument pack, just return the parameter
2276         itself. 
2277         (tsubst_copy): sizeof(X...) returns the number of elements in
2278         parameter pack X.  See through ARGUMENT_PACK_SELECT when the
2279         PARM_DECL is a parameter pack.
2280         (tsubst_expr): Expression pack expansions and argument packs
2281         cannot show up here; they will all be handled through function
2282         calls, sizeof, and template argument lists.
2283         (tsubst_copy_and_build): sizeof(X...) returns the number of
2284         elements in parameter pack X.  Handle pack expansions in TREE_LIST
2285         and CONSTRUCTOR nodes.
2286         (fn_type_unification): Handle "incomplete" explicit template
2287         argument lists that specify some of the arguments for a template
2288         parameter pack.
2289         (type_unification_real): Unify arguments against pack expansions.
2290         (template_parm_level_and_index): New, helper function.
2291         (unify_pack_expansion): New.
2292         (unify): Unify argument packs on an argument-by-argument basis,
2293         handling variadic argument packs as well.
2294         (more_specialized_fn): Handle unification of function parameter
2295         packs. All things being equal, prefer non-variadic function
2296         templates to variadic function templates.
2297         (more_specialized_class): Prefer the variadic class template
2298         partial specialization that binds fewer arguments to a parameter
2299         pack.
2300         (regenerate_decl_from_template): Expand function parameter packs
2301         into separate parameters.
2302         (instantiate_decl): Ditto.
2303         (tsubst_initializer_list): Handle pack expansions for base-class
2304         initializers.
2305         (dependent_type_p_r): Determine dependent types in argument packs
2306         and pack expansions.
2307         (value_dependent_expression_p): Determine value-dependence of
2308         non-type argument packs.
2309         (dependent_template_arg_p): Handle argument packs.
2310         * semantics.c (finish_cond): Check for bare parameter packs.
2311         (finish_expr_stmt): Ditto.
2312         (finish_for_expr): Ditto.
2313         (finish_switch_cond): Ditto.
2314         (finish_mem_initializers): Ditto.
2315         * name-lookup.c (arg_assoc_type): Handle pack expansions and
2316         argument packs.
2317         * decl2.c (cp_build_parm_decl): Mark function parameter packs.
2318         * parser.c (make_declarator): Declarator is not an expansion.
2319         (make_pointer_declarator): Transfer parameter pack flag to outer
2320         declarator.
2321         (make_reference_declarator): Ditto.
2322         (make_ptrmem_declarator): Ditto.
2323         (make_call_declarator): Ditto.
2324         (make_array_declarator): Ditto.
2325         (cp_parser_postfix_expression): Allow pack expansion expressions
2326         in the argument list for a call expression.
2327         (cp_parser_parenthesized_expression_list): Add new parameter
2328         ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
2329         into separate arguments."
2330         (cp_parser_new_placement): Allow pack expansion expressions.
2331         (cp_parser_new_initializer): Ditto.
2332         (cp_parser_mem_initializer_list): Allow ellipsis to create a
2333         base-class initializer expansion.
2334         (cp_parser_mem_initializer): Ditto.
2335         (cp_parser_template_parameter_list): Keep track of whether the
2336         template parameter is a template parameter pack.
2337         (cp_parser_template_parameter): Parse the ellipsis to indicate a
2338         template parameter pack.
2339         (cp_parser_type_parameter): Ditto.
2340         (cp_parser_template_argument_list): Parse the ellipsis to indicate
2341         a pack expansion.
2342         (cp_parser_direct_declarator): Parse the ellipsis to indicate that
2343         this declarator is a parameter pack.
2344         (cp_parser_parameter_declaration): The ellipsis does not end the
2345         parameter declaration, because it might be a parameter pack. Parse
2346         the ellipsis to indicate a parameter pack.
2347         (cp_parser_initializer): Allow pack expansions.
2348         (cp_parser_initializer_list): Allow ellipsis to create an
2349         initializer expansion.
2350         (cp_parser_base_clause): Allow ellipsis to create a base specifier
2351         expansion.
2352         (cp_parser_type_id_list): Allow ellipsis to create an exception
2353         specifier expansion.
2354         (cp_parser_attribute_list): Don't allow pack expansions.
2355         (cp_parser_functional_cast): Allow pack expansions.
2356         (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
2357         compute the length of a parameter pack.
2358         (cp_parser_next_token_ends_template_argument_p): An ellipsis can
2359         end a template argument.
2360         * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
2361         NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
2362         CAST_EXPR. 
2364 2007-03-09  Dirk Mueller  <dmueller@suse.de>
2366         * cp/call.c (build_new_op): Call warn_logical_operator.
2368 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
2370         PR c++/30852
2371         * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
2373         PR c++/30534
2374         * pt.c (any_template_arguments_need_structural_equality_p):
2375         Robustify.
2377 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
2379         * decl.c (grokdeclarator): Disable warnings for anonymous
2380         bitfields.
2382 2007-03-05  Volker Reichelt  <reichelt@netcologne.de>
2384         * typeck2.c (readonly_error): Always emit a hard error.
2385         Remove last argument.
2386         * cp-tree.h (readonly_error): Adjust prototype.
2387         * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
2388         * typeck.c (build_unary_op): Likewise.
2389         (build_modify_expr): Likewise.
2391 2007-03-04  Simon Martin  <simartin@users.sourceforge.net>
2393         PR c++/30895
2394         * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
2396 2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2398         PR c++/15787
2399         * parser.c (struct cp_parser): New IN_IF_STMT.
2400         (cp_parser_statement_seq_opt): Handle an unexpected 'else',
2401         returning if parsing the body of an 'if' statement or issuing an
2402         error and continuing.
2403         (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
2404         body of 'if'.
2405         (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
2406         
2407 2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
2409         PR c++/28253
2410         * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
2411         for thunks.
2413 2007-03-02  Geoffrey Keating  <geoffk@apple.com>
2415         * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
2416         Objective-C++.  Don't exit early if -shared-libgcc needs to be
2417         added.
2419 2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2421         * typeck.c (common_base_type): Delete unused function.
2422         
2423 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
2425         * Make-lang.in: Add dummy lang.install-pdf target.
2427 2007-03-01  Simon Baldwin <simonb@google.com>
2429         PR c++/23689
2430         * decl.c (check_tag_decl): Added new warning for typedef ignored
2431         when it precedes an otherwise valid non-typedef declaration.
2433 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
2435         * typeck.c (build_function_call): Store converted arguments
2436         in a stack-allocated array instead of building a list.
2437         (convert_arguments): Store arguments in the array passed in as an
2438         argument, and return the actual number of arguments.
2439         * call.c (build_call): Delete, and replace with...
2440         (build_call_n, build_call_a): New.
2441         (build_op_delete_call): Rewrite to avoid constructing argument lists.
2442         (build_over_call): Store converted arguments in a stack-allocated
2443         array instead of building a list.
2444         (build_cxx_call): Pass arguments in an array instead of as a list.
2445         (build_java_interface_fn_ref): Rewrite to avoid constructing
2446         argument lists.
2447         * tree.h: Update declarations to reflect above changes.
2448         * method.c (use_thunk): Use a stack-allocated array to hold
2449         the arguments instead of a list.
2450         * rtti.c (throw_bad_cast): Update call to cxx_call.
2451         (throw_bad_typeid): Likewise.
2452         (build_dynamic_cast_1): Likewise.
2453         * init.c (build_builtin_delete_call): Use build_call_n.
2454         * decl.c (expand_static_init): Likewise.
2455         * except.c (cp_protect_cleanup_actions): Likewise.
2456         * cp-gimplify.c (genericize_eh_spec_block): Likewise.
2457         (gimplify_must_not_throw_expr): Likewise.
2458         (cxx_omp_apply_fn): Use build_call_a.
2460 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
2462         * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
2463         * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
2465 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
2467         * cp-tree.h (static_ctors): Remove.
2468         * cp-tree.h (static_dtors): Likewise.
2469         * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
2470         refactoring of tree_map hierarchy.
2471         (decl_shadowed_for_var_insert): Likewise.
2472         * semantics.c (expand_body): Use c_expand_body.
2473         (expand_or_defer_fn): Don't update static_ctors or static_dtors.
2474         * decl2.c (static_ctors): Remove.
2475         (static_dtors): Likewise.
2476         (generate_ctor_or_dtor_function): Pass NULL_TREE to
2477         objc_generate_static_init_call.  Do not call static_[cd]tors.
2478         (generate_ctor_and_dtor_functions_for_priority): Do not check for
2479         static_[cd]tors.
2480         (cp_write_global_declarations): Likewise.
2482 2007-02-23  Richard Guenther  <rguenther@suse.de>
2484         * class.c (note_name_declared_in_class): Make declaration
2485         changes meaning a pedwarn.
2487 2007-02-22  Michael Matz  <matz@suse.de>
2489         PR c++/29433
2490         * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
2491         * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
2492         dump_function_decl): Guard emitting outer scopes by new flag.
2493         * cp-lang.c (cxx_dwarf_name): New function.
2494         (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
2495         * pt.c (classtype_mangled_name, mangle_class_name_for_template):
2496         Remove functions.
2497         (push_template_decl_real, lookup_template_class): Remove calls
2498         to above functions.
2500 2007-02-19  Mark Mitchell  <mark@codesourcery.com>
2502         * call.c (build_new_method_call): Ensure that explicit calls of
2503         destructors have type "void".
2505 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2507         * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
2508         and -Walways-true with -Waddress.
2509         * cvt.c (convert_to_void): Replace unconditional warning with
2510         -Waddress.
2512 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2514         * decl.c, tree.c: Fix comment typos.
2516 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2518         PR C++/30158
2519         * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
2520         statement expression if we had an error mark node.
2522 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2523             Brooks Moses  <brooks.moses@codesourcery.com>
2524             Lee Millward  <lee.millward@codesourcery.com>
2526         * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
2527         Change class to tcc_vl_exp.
2529         * call.c (build_call): Use build_call_list instead 
2530         of build3. 
2531         (build_over_call): Likewise.
2532         (build_new_method_call): Use build_min_non_dep_call_list 
2533         instead of build_min_non_dep.
2535         * error.c (dump_call_expr_args): New function.
2536         (dump_aggr_init_expr_args): New function.
2537         (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
2538         Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
2540         * cvt.c (convert_to_void): Use build_call_array instead
2541         of build3; use new AGGR_INIT_EXPR accessor macros.
2543         * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
2544         instead of TREE_CODE_LENGTH.
2546         * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
2547         AGGR_INIT_EXPR accessor macros.
2549         * cp-gimplify.c (cp_gimplify_init_expr): Use 
2550         AGGR_INIT_EXPR_SLOT to set the slot operand.
2552         * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
2553         (AGGR_INIT_EXPR_SLOT): New macro.
2554         (AGGR_INIT_EXPR_ARG): New macro.
2555         (aggr_init_expr_nargs): New macro.
2556         (AGGR_INIT_EXPR_ARGP): New macro.
2557         (aggr_init_expr_arg_iterator): New.
2558         (init_aggr_init_expr_arg_iterator): New.
2559         (next_aggr_init_expr_arg): New.
2560         (first_aggr_init_expr_arg): New.
2561         (more_aggr_init_expr_args_p): New.
2562         (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
2563         (stabilize_aggr_init): New declaration.
2564         (build_min_non_dep_call_list): Likewise.
2566         * tree.c (process_aggr_init_operands): New function.
2567         (build_aggr_init_array) New function.
2568         (build_cplus_new): Update to use new CALL_EXPR and
2569         AGGR_INIT_EXPR accessor macros. Replace use of build3 with
2570         build_aggr_init_array.
2571         (build_min_non_dep_call_list) New function.
2572         (build_min_nt): Assert input code parameter is not a variable
2573         length expression class.
2574         (build_min, build_min_non_dep): Likewise.
2575         (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
2576         to check for equality instead of recursing. Handle tcc_vl_exp
2577         tree code classes.
2578         (stabilize_call): Update to only handle CALL_EXPRs, not 
2579         AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
2580         (stabilize_aggr_init): New function.
2581         (stabilize_init): Use it.
2583         * cxx-pretty-print.c (pp_cxx_postfix_expression)
2584         <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
2585         AGGR_INIT_EXPR accessor macros and argument iterators.
2586         
2587         * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
2588         build_vl_exp. Iterate through the operands, recursively 
2589         processing each one.
2590         (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
2591         CALL_EXPR accessor macros.
2592         (value_dependent_expression_p) <default>: Handle tcc_vl_exp
2593         tree code classes. Use TREE_OPERAND_LENGTH instead of 
2594         TREE_CODE_LENGTH.
2596         * semantics.c (finish_call_expr): Use build_nt_call_list
2597         instead of build_nt.
2598         (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
2599         accessor macros. Use build_call_array to construct the 
2600         CALL_EXPR node instead of build3
2601         
2602         * decl2.c (build_offset_ref_call_from_tree): Use 
2603         build_nt_call_list and build_min_non_dep_call_list instead
2604         of build_min_nt and build_min_non_dep.
2606         * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
2607         Use build_nt_call_list instead of build_min_nt.
2609 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2611         PR c++/28943
2612         * call.c (build_conditional_expr): Improve error message.
2613         
2614 2007-02-13  Dirk Mueller  <dmueller@suse.de>
2616         * friend.c (do_friend): Annotate warning about friend
2617         declarations in templates with OPT_Wnon_template_friend.
2618         Convert informal message from warning() to inform().
2620 2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
2621             Mark Mitchell  <mark@codesourcery.com>
2623         PR c++/14622
2624         * pt.c (do_decl_instantiation): Detect type mismatches in explicit
2625         instantiations for variables.
2627 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2629         PR middle-end/7651
2630         * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
2631         Check warn_unused_value just once.
2633 2007-02-11  Mark Mitchell  <mark@codesourcery.com>
2635         PR c++/26988
2636         * pt.c (determine_specialization): Use skip_artificial_parms_for.
2637         (fn_type_unificiation): Likewise.
2638         (get_bindings): Likewise.
2640 o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
2642         PR target/29487
2643         * decl.c (finish_function): Use DECL_REPLACEABLE.
2644         * tree.c (cp_cannot_inline_tree_fn): Likewise.
2646 2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2648         * parser.c (cp_parser_primary_expression): Reformat overly long lines.
2650 2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
2652         * decl.c (grokvardecl): Don't error if !have_tls.
2653         (grokdeclarator): Likewise.
2654         * parser.c (cp_parser_omp_threadprivate): Likewise.
2656 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
2658         PR c++/30703
2659         * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
2660         parameters and result decls in omp clauses.
2661         (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
2662         by reference.
2664 2007-02-05  Dirk Mueller  <dmueller@suse.de>
2666         PR bootstrap/30510
2667         * parser.c (cp_parser_class_specifier): Always initialize bases.
2669 2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
2671         * cp-tree.h (OMP_ATOMIC_CODE): Delete.
2672         (OMP_ATOMIC_DEPENDENT_P): Rewrite.
2673         * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
2674         expressions.
2675         * semantics.c (finish_omp_atomic): Store a whole expression node
2676         in operand 1, and integer_zero_node in operand 0, for dependent
2677         OMP_ATOMIC.  Rewrite to make flow easier to understand.
2679 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2681         * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
2683 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
2685         * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
2686         parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
2688 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
2690        * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
2691        keyword warning to -Wc++0x-compat.
2692         
2693 2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2695         * decl.c (grokdeclarator): Update documentation.
2697 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
2699         PR c++/30536
2700         * decl.c (grokdeclarator): If __thread is used together with
2701         a storage class other than extern and static, clear thread_p
2702         after issuing diagnostics and fall through to checking the
2703         storage class.
2705 2007-01-30  Roger Sayle  <roger@eyesopen.com>
2707         * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
2708         calculating the size of an array (to avoid recursive errors).
2710 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2712         PR c++/24745
2713         * typeck.c (build_binary_op): Fix logic for warning. Move warning
2714         to -Wpointer-arith.
2715         * call.c (convert_like_real): Don't warn when converting to
2716         boolean type.
2717         
2718 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2720         * decl.c (pop_label): Replace warning with call to
2721         warn_for_unused_label.
2723 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
2725         PR C++/28988
2726         * semantics.c (finish_pseudo_destructor_expr): Check the
2727         destrutor name by calling check_dtor_name.
2729 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
2731         * lex.c (D_CPP0X): Rename.
2732         (D_CXX0X): To this.
2733         (reswords): D_CPP0X -> D_CXX0X.
2734         (init_reswords): Ditto.
2735         * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
2736         of C++0x keywords as identifiers.
2738 2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
2740         PR c++/27492
2741         * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
2742         function decls.
2744 2007-01-23  Ian Lance Taylor  <iant@google.com>
2746         * typeck.c (convert_for_assignment): Only warn about a = b = c
2747         when converting to bool.
2749 2007-01-23  Roger Sayle  <roger@eyesopen.com>
2751         * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
2752         TREE_OVERFLOW.
2753         * typeck.c (ignore_overflows): Remove the remaining uses of
2754         TREE_CONSTANT_OVERFLOW.
2756 2007-01-20  Jan Hubicka  <jh@suse.cz>
2758         * decl2.c (start_objects, start_static_storage_duration_function):
2759         Do not make the functions uninlinable.
2761 2007-01-17  Ian Lance Taylor  <iant@google.com>
2763         * class.c (add_method): Call VEC_reserve_exact rather than passing
2764         a negative size to VEC_reserve.
2766 2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
2768         PR c++/29573
2769         * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
2771 2007-01-10  Mark Mitchell  <mark@codesourcery.com>
2773         PR c++/28999
2774         * decl.c (make_typename_type): If the qualified name is not a
2775         type, issue an error.
2776         * parser.c (cp_parser_elaborated_type_specifier): Fix comment
2777         formatting.
2779 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
2781         * rtti.c: Include target.h.
2782         (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
2783         don't emit typeinfo for fundamental types as weak.
2784         * Make-lang.in (cp/rtti.o): Update and correct dependencies.
2786 2007-01-08  Richard Guenther  <rguenther@suse.de>
2788         * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
2790 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
2792         * call.c (standard_conversion): Pass flag to
2793         vector_types_convertible_p to disallow emission of note.
2794         * typeck.c (convert_for_assignment): Pass flag to
2795         vector_types_convertible_p to allow emission of note.
2796         (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
2797         to disallow emission of note.
2799 2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2801         PR c++/28986
2802         * typeck.c (build_binary_op): Call overflow_warning if
2803         TREE_OVERFLOW_P is true for the result and not for any of the
2804         operands.
2805         
2806 2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
2808        PR c++/19439
2809        * class.c (add_method): Don't wait until template
2810        instantiation time to complain about duplicate methods.
2811         
2812 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2814         PR c/19978
2815         * semantics.c (finish_unary_op_expr): Warn only if result
2816         overflowed and operands did not.
2818 2007-01-05  Ian Lance Taylor  <iant@google.com>
2820         * typeck.c (build_binary_op): Warn about comparing a non-weak
2821         address to NULL.
2823 2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
2825         * pt.c (tsubst): Propagate the need for structural equality checks
2826         when reducing the level of template parameters.
2828 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
2830         * pt.c: Fix a comment typo.
2832 2007-01-02  Ian Lance Taylor  <iant@google.com>
2834         * semantics.c (maybe_convert_cond): Optionally warn when using an
2835         assignment as a condition.
2836         * typeck.c (convert_for_assignment): Optionally warn about
2837         assigning the result of an assignment to a bool.
2839 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
2841         * pt.c (canonical_template_parms): Correct typo in comment.
2842         
2843 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
2845         * typeck.c (structural_comptypes): Renamed from "comptypes".
2846         (comptypes): Use canonical type information to perform fast type
2847         comparison. When VERIFY_CANONICAL_TYPES, verify that the
2848         canonical type comparison returns the same results as we would see
2849         from the current, structural check. Support COMPARE_STRUCTURAL
2850         when we need structural checks.
2851         * decl.c (typename_compare): Fix comment.
2852         (build_typename_type): TYPENAME_TYPE nodes require structural
2853         equality checks, because they resolve different based on the
2854         current class type.
2855         (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
2856         require structural equality checks (for now).
2857         (build_ptrmemfunc_type): Build the canonical pointer to member
2858         function type.
2859         (compute_array_index_type): Whenever we build a new index type
2860         to represent the size of an array in a template, we need to mark
2861         this index type as requiring structural equality. This goes for
2862         arrays with value-dependent sizes with the current ABI, or all
2863         arrays with ABI-1.
2864         * tree.c (cplus_array_hash): New.
2865         (struct cplus_array_info): New.
2866         (cplus_array_compare): New.
2867         (cplus_array_htab): New.
2868         (build_cplus_array_type_1): Use a hash table to cache the array
2869         types we build. Build the canonical array type for each array
2870         type.
2871         (cp_build_qualified_type_real): When building a cv-qualified array
2872         type, use the hash table of array types and build canonical array
2873         types as necessary.
2874         (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
2875         use structural equality (for now).
2876         * cp-tree.h (COMPARE_STRUCTURAL): New.
2877         * pt.c (canonical_template_parms): New.
2878         (canonical_type_parameter): New.
2879         (process_template_parm): Find the canonical type parameter.
2880         (lookup_template_class): When we have named the primary template
2881         type, set the canonical type for our template class to the primary
2882         template type. If any of the template arguments need structural
2883         equality checks, the template class needs structural equality
2884         checks.
2885         (tsubst): When reducing the level of a template template
2886         parameter, we require structural equality tests for the resulting
2887         parameter because its template parameters have not had their types
2888         canonicalized. When reducing a template type parameter, find the
2889         canonical reduced type parameter.
2890         (any_template_arguments_need_structural_equality_p): New.