* pretty-print.c (pp_base_maybe_space): New function.
[official-gcc.git] / gcc / cp / ChangeLog
blobf1071535e98e9895b4b68898b09ea508c9385d58
1 2004-03-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3         * error.c (enum pad): Remove.
4         (dump_qualifiers): Likewise.
5         (dump_type): Replace dump_qualifiers with pp_cxx_cv_qualifier_seq.
6         (dump_aggr_type): Likewise.
7         (dump_type_suffix): Likewise.
8         (dump_simple_decl): Likewise.
9         (dump_function_decl): Likewise.
10         (cv_to_string): Likewise.
11         (dump_type_prefix): Likewise.  Adjust return void.  
12         * cxx-pretty-print.c (pp_cxx_cv_qualifier_seq): Move to
13         cxx_pretty_print.h.
14         (pp_cxx_template_keyword_if_needed): Document.
15         (pp_cxx_qualified_id): Document case FUNCTION_DECL.  Tidy.
16         (pp_cxx_expression): Handle NON_DEPENDENT_EXPR and
17         MUST_NOT_THROW_EXPR.  
19 2004-03-21  Mark Mitchell  <mark@codesourcery.com>
21         PR c++/14616
22         * decl.c (cp_finish_decl): Compute the size of arrays declared in
23         templates, if their type is non-dependent.
25 2004-03-19  Mark Mitchell  <mark@codesourcery.com>
27         * call.c (build_op_delete_call): Do not forget the placement
28         arguments when iterating through mutiple delete operators.
30         * cp-tree.h (svaed_scope): Remove last_parms.
31         (NEW_DELETE_OPNAME_P): New macro.
32         (last_function_parms): Remove.
33         (do_friend): Adjust prototype.
34         * decl.c (grokparms): Return the PARM_DECLs directly, rather than
35         using last_function_parms.
36         (grokfndecl): Take the PARM_DECLs as an argument, rather than
37         using last_function_parms.
38         (grokdeclarator): Adjust accordingly.  Do not form METHOD_TYPEs
39         for class-specific operator new and operator delete.
40         (grok_op_properties): Do not look for allocation functions with
41         METHOD_TYPEs.
42         (start_function): Use DECL_ARGUMENTS instead of
43         last_function_parms.
44         * decl.h (last_function_parms): Do not declare.
45         * decl2.c (grokclassfn): Do not use last_function_parms.
46         * friend.c (do_friend): Remove parmdecls parameter.
47         * name-lookup.c (push_to_top_level): Do not save last_function_parms.
48         (pop_from_top_level): Do not restore it.
49         * pt.c (check_explicit_specialization): Do not adjust
50         last_function_parms.
52         * name-lookup.c (do_local_using_decl): Create a local binding for
53         types brought in via using declarations.
55         * name-lookup.c (lookup_arg_dependent): Handle block-scope
56         function declarations correctly.
58         * semantics.c (finish_id_expression): Correct handling of
59         conversion operators to dependent types.
61         * typeck.c (lookup_destructor): Allow the use of destructors from
62         base classes.
63         
64 2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
66         * cxx-pretty-print.c (pp_cxx_unqualified_id): Use
67         TEMPLATE_TYPE_PARM_INDEX instead of TYPE_FIELDS.
68         * search.c (dfs_unuse_fields): Add two more TREE_CODES that mean
69         the field is named TEMPLATE_TYPE_PARM_INDEX.
71 2004-03-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
73         PR c++/14545
74         * parser.c (cp_parser_functional_cast): A cast to anything
75         but integral or enumaration type is not an integral constant
76         expression.
77         * pt.c (value_dependent_expression_p): Handle cast expressions
78         without operands (such as "int()").
80 2004-03-18  Mark Mitchell  <mark@codesourcery.com>
82         * semantics.c (finish_pseudo_destructor_expr): Allow differing
83         cv-qualification between the type named by the
84         pseudo-destructor-name and the object-type.
86         * search.c (accessible_base_p): Handle non-proper bases.
88         * name-lookup.c (do_nonmember_using_decl): If a using declaration
89         refers to a single overloaded function, set the type of the
90         function.
91         * tree.c (lvalue_type): Simplify.
92         * typeck.c (type_unknown_p): Do not assume all OVERLOADs have an
93         unknown type.
94         (build_unary_op): Handle OVERLOADs with known types.
96         * decl.c (duplicate_decls): Do not destroy DECL_ARGUMENTS for
97         function templates.
99         * parser.c (cp_parser_postfix_expression): Handle the use of
100         "typename" in non-dependent contexts.  Convert appropriately when
101         when using a qualified name after "->" or ".".
103         * call.c (conditional_conversion): Honor the requirement that some
104         conversions refer to the original object.
106 2004-03-18  Mark Mitchell  <mark@codesourcery.com>
108         * call.c (build_conditional_expr): Do not call force_rvalue for
109         operands of void_type when the conditional expression itself has
110         void type.
111         * name-lookup.c (pushdecl): Don't consider a declaration of a
112         function named "main" to be an overload of a type named "main".
113         * parser.c (cp_parser_template_name): Perform name lookup when the
114         template name is proceeded by "template" if the qualifying scope
115         is non-dependent.
116         * typeck.c (composite_pointer_type_r): Correctly handle
117         pointer-to-member types.
118         (build_const_cast): Likewise.
120 2004-03-18  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
122         * cp-tree.def (TEMPLATE_TYPE_PARM, TYPEOF_TYPE): Update comments.
123         * cp-tree.h (NEW_EXPR_USE_GLOBAL, DELETE_EXPR_USE_GLOBAL): Add check.
124         (DELETE_EXPR_USE_VEC, COMPOUND_EXPR_OVERLOADED): Likewise.
125         (KOENIG_LOOKUP_P, PTRMEM_OK_P, TEMPLATE_TYPE_PARM_INDEX): Likewise.
126         (TYPENAME_TYPE_FULLNAME): Add check and use type.values.
127         (TYPEOF_TYPE_EXPR): New macro.
128         * class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS.
129         * error.c (dump_type): Use TYPEOF_TYPE_EXPR.
130         * pt.c (tsubst): Likewise.
131         * semantics.c (finish_typeof): Likewise.
132         * search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE,
133         and TEMPLATE_TYPE_PARM.
134         * typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN.
135         (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
137 2004-03-16  Mark Mitchell  <mark@codesourcery.com>
139         PR c++/14586
140         * cp-tree.h (build_new_op): Change prototype.
141         (build_x_binary_op): Likewise.
142         * call.c (build_new_op): Add overloaded_p parameter.
143         * decl2.c (grok_array_decl): Adjust call to build_new_op.
144         * parser.c (cp_parser_binary_expression): Note that uses of
145         overloaded operators prevents an expression from being considered
146         an integral constant.
147         * pt.c (tsubst_copy_and_build): Adjust calls to build_new_op and/or
148         build_x_binary_op.
149         * semantics.c (finish_call_expr): Likewise.
150         * typeck.c (rationalize_conditional_expr): Likewise.
151         (build_x_indirect_ref): Likewise.
152         (build_x_binary_op): Likewise.
153         (build_x_unary_op): Likewise.
154         (build_x_compound_expr): Likewise.
155         (build_modify_expr): Likewise.
156         * typeck2.c (build_x_arrow): Likewise.
158 2004-03-15  Kazu Hirata  <kazu@cs.umass.edu>
160         * cp-lang.c, ptree.c: Update copyright.
162 2004-03-13  Mark Mitchell  <mark@codesourcery.com>
164         PR c++/14550
165         * parser.c (cp_parser_non_integral_constant_expression): Encode
166         more of the idiom that surrounded calls to this function within
167         the function itself
168         (cp_parser_primary_expression): Adjust accordingly.
169         (cp_parser_postfix_expression): Likewise.
170         (cp_parser_unary_expression): Likewise.
171         (cp_parser_cast_expression): Likewise.
172         (cp_parser_assignment_expression): Likewise.
173         (cp_parser_expression): Likewise.
174         (cp_parser_new_expression): Note that new-expressions are not
175         allowed in integral constant expressions.
176         (cp_parser_delete_expression): Likewise.
178 2004-03-12  Matt Austern  <austern@apple.com>
180         * decl2.c (maybe_make_one_only): Look at
181         TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether
182         to make an explicit instantiation weak.
183         * method.c (use_thunk): Make sure we call comdat_linkage
184         when appropriate.
185         * pt.c (do_type_instantiation): On systems where weak symbols
186         don't go in a static archive's TOC, explicit instantiation of a
187         class must imply *explicit* instantiation of its memeber.
188         
189 2004-03-11  Kazu Hirata  <kazu@cs.umass.edu>
191         * call.c, cp-tree.h, pt.c: Fix comment typos.
193 2004-03-10  Mark Mitchell  <mark@codesourcery.com>
195         PR c++/14510
196         * decl.c (xref_tag): Disregard non-type declarations when
197         looking up a tagged type. 
199 2004-03-09  Nathan Sidwell  <nathan@codesourcery.com>
201         PR c++/14397
202         * call.c (convert_like_real): Build a const qualified temporary,
203         when testing ctor access.
205 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
207         * call.c (initialize_reference): Fix typo.
209 2004-03-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
211         PR c++/14409
212         * pt.c (determine_specialization): For member templates, match also
213         constness.
215         PR c++/14448
216         * parser.c (cp_parser_initializer_clause): Fold initializer if it is
217         non-dependent.
218         * pt.c (tsubst_copy_and_build): Handle NOP_EXPRs.
220 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
222         PR c++/14230
223         * call.c (initialize_reference): Handle initializers that are
224         class-member access expressions applies to rvalues.
226 2004-03-09  Mark Mitchell  <mark@codesourcery.com>
228         PR c++/14432
229         * name-lookup.c (supplement_binding): Ignore functions that are
230         marked DECL_ANTICIPATED.
232 2004-03-08  Mark Mitchell  <mark@codesourcery.com>
234         PR c++/14401
235         * class.c (check_field_decls): Complain about non-static data
236         members of reference type in unions.  Propagate
237         CLASSTYPE_REF_FIELDS_NEED_INIT and
238         CLASSTYPE_READONLY_FIELDS_NEED_INIT from the types of non-static
239         data members.
240         * init.c (perform_member_init): Complain about mbmers with const
241         type that are not explicitly initialized.
243 2004-03-08  Mark Mitchell  <mark@codesourcery.com>
245         * class.c (check_methods): Don't use IDENTIFIER_ERROR_LOCUS.
246         * cp-tree.h (DECL_INVALID_OVERRIDER_P): New macro.
247         (lang_identifier): Remove implicit_decl and error_locus.
248         (IDENTIFIER_IMPLICIT_DECL): Remove.
249         (SET_IDENTIFIER_IMPLICTI_DECL): Likewise.
250         (IDENTIFIER_ERROR_LOCUS): Likewise.
251         (SET_IDENTIFIER_ERROR_LOCUS): Likewise.
252         (TYPE_ASSEMBLER_NAME_STRING): Likewise.
253         (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
254         (implicitly_declare): Remove.
255         * decl.c (warn_extern_redeclared_static): Remove check of
256         IDENTIFIER_IMPLICIT_DECL.
257         (duplicate_decls): Don't check IDENTIFIER_ERROR_LOCUS.
258         (implicitly_declare): Remove.
259         (grok_ctor_properties): Don't set IDENTIFIER_ERROR_LOCUS.
260         (start_function): Don't check IDENTIFIER_IMPLICIT_DECL.
261         (start_method): Don't check IDENTIFIER_ERROR_LOCUS.
262         * lex.c (unqualified_name_lookup_error): Create a dummy VAR_DECL
263         in the innermost scope, rather than at namespace scope.
264         * name-lookup.c (push_local_binding): Give it external linkage.
265         (pushdecl): Remove dead code.
266         * name-lookup.h (push_local_binding): Declare it.
267         * ptree.c (cxx_print_identifier): Don't print
268         IDENTIFIER_IMPLICIT_DECL or IDENTIFIER_ERROR_LOCUS.
269         * search.c (check_final_overrider): Use DECL_INVALID_OVERRIDER_P,
270         not IDENTIFIER_ERROR_LOCUS.
271         * typeck.c (build_function_call): Remove dead code.
273 2004-03-08  Jason Merrill  <jason@redhat.com>
275         PR c++/13170
276         * decl.c (xref_tag): Remove attribute handling.
277         * cp-tree.h: Adjust prototype.
278         * decl.c, parser.c, rtti.c: Adjust callers.
279         * parser.c (cp_parser_class_head): Pass back attributes in the
280         class head.
281         (cp_parser_class_specifier): Adjust.
283 2004-03-08  Matt Austern  <austern@apple.com>
285         PR debug/14079
286         * name-lookup.c (add_decl_to_level): Add extern variables, as well
287         as static, to static_decls array.
288         
289 2004-03-05  Jason Merrill  <jason@redhat.com>
291         * tree.c (list_hash_pieces): s/TYPE_HASH/TREE_HASH/.
293 2004-03-04  Geoffrey Keating  <geoffk@apple.com>
295         * decl.c (grokfndecl): Update old incorrect comment.
296         (grokvardecl): Diagnose C++ variables of type with no linkage.
298 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
300         PR c++/14369
301         * pt.c (build_non_dependent_expr): Do not create a
302         NON_DEPENDENT_EXPR for a THROW_EXPR.
304 2004-03-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
306         PR c++/14369
307         * error.c (dump_expr): Handle THROW_EXPR.
309 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
311         PR c++/14360
312         * parser.c (cp_parser_postfix_expression): Do not perform Koenig
313         lookup if ordinary name-lookup finds a non-function.
314         * pt.c (tsubst_copy_and_build): Likewise.
316         PR c++/14361
317         * parser.c (cp_parser_late_parsing_default_args): Check that there
318         are no extra tokens after the end of the default-argument
319         expression.
320         
321 2004-03-01  Mark Mitchell  <mark@codesourcery.com>
323         PR c++/14324
324         * lex.c (retrofit_lang_decl): Treat entities with no linkage as
325         having C++ linkage for name-mangling purposes.
327         PR c++/14260
328         * parser.c (cp_parser_direct_declarator): Recognize constructor
329         declarators that use a template-id to name the class being
330         constructed.
332         PR c++/14337
333         * pt.c (tsubst_qualified_id): Handle dependent qualifying scopes.
334         (tsubst_expr): Do not call tsubst_copy, even when
335         processing_template_decl.       
337 2004-03-01  Jeff Law  <law@redhat.com>
339         * init.c (build_vec_delete_1): Convert 2nd argument to NE_EXPR to
340         the proper type.
342 2004-02-29  Mark Mitchell  <mark@codesourcery.com>
344         PR c++/14138
345         * name-lookup.h (push_scope): Change prototype.
346         * name-lookup.c (push_scope): Do not reenter the current class
347         scope.
348         * decl.c (grokfndecl): Check return code from push_scope before
349         calling pop_scope.
350         * decl2.c (check_classfn): Likewise.
351         * parser.c (cp_parser_conversion_function_id): Likewise.
352         (cp_parser_init_declarator): Likewise.
353         (cp_parser_direct_declarator): Likewise.
354         (cp_parser_class_specifier): Likewise.
355         (cp_parser_class_head): Likewise.
356         (cp_parser_lookup_name): Likewise.
357         (cp_parser_constructor_declarator_p): Likewise.
358         * pt.c (instantiate_class_template): Likewise.
359         (resolve_typename_type): Likewise.
361 2004-02-29  Mark Mitchell  <mark@codesourcery.com>
363         PR c++/14267
364         * typeck.c (build_modify_expr): Remove more of the cast-as-lvalue
365         extension.
367         PR debug/12103
368         * class.c (update_vtable_entry_for_fn): Do not go through
369         covariance machinery if the type returned by an overrider is the
370         same as the original.
372 2004-02-29  Kazu Hirata  <kazu@cs.umass.edu>
374         * call.c: Fix a comment typo.
376 2004-02-27  Ziemowit Laski  <zlaski@apple.com>
378         * tree.c (pod_type_p): Treat VECTOR_TYPEs as PODs.
380 2004-02-26  Mark Mitchell  <mark@codesourcery.com>
382         PR c++/14278
383         * parser.c (cp_parser_parameter_declaration_list): Commit
384         to fewer tentative parses.
386 2004-02-26  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
388         PR c++/14284
389         * pt.c (dependent_type_p_r): A template template parameter is a
390         dependent type.
392 2004-02-26  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
394         PR c++/14246
395         * mangle.c (write_template_arg_literal): Don't rely on identity for
396         boolean constants.
398 2004-02-24  Jason Merrill  <jason@redhat.com>
400         * tree.c (build_exception_variant): Use check_qualified_type.
402 2004-02-23  Zack Weinberg  <zack@codesourcery.com>
403             Kazu Hirata  <kazu@cs.umass.edu>
405         * decl.c (cxx_init_decl_processing): Don't check
406         flag_writable_strings.
408 2004-02-23  Andrew Pinski  <pinskia@physics.uc.edu>
410         PR c++/14156
411         * typeck.c (maybe_warn_about_returning_address_of_location):
412         Change check for VAR_DECL to use DECL_P instead.
414 2004-02-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
416         PR c++/14250
417         * cvt.c (build_expr_type_conversion): Type must be complete before
418         looking up for conversions.
420 2004-02-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
422         PR c++/14143
423         * name-lookup.c (arg_assoc_class): Don't look into template 
424         arguments if it is not a primary template.
426 2004-02-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
428         PR c++/12007
429         * method.c (use_thunk): Always clone function argument tree.
431 2004-02-20  Mark Mitchell  <mark@codesourcery.com>
433         PR c++/14199
434         * pt.c (tsubst_copy): Call mark_used for a PARM_DECL.
436         PR c++/14173
437         * semantics.c (begin_class_definition): Set TYPE_PACKED correctly
438         for all type variants.
440 2004-02-19  Mark Mitchell  <mark@codesourcery.com>
442         PR c++/13927
443         * decl.c (duplicate_decls): Return error_mark_node for invalid
444         redeclarations.
445         * name-lookup.c (push_namespace): Ignore the return value from
446         pushdecl.
447         * pt.c (push_template_decl_real): Robustify.
449         PR c++/14186
450         * name-lookup.c (push_class_level_binding): Do not complain about
451         adding a binding for a member whose name is the same as the
452         enclosing class if the member is located in a base class of the
453         current class.
455 2004-02-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
457         PR c++/14181
458         * parser.c (cp_parser_new_expression): Parse an ill-formed 
459         direct-new-declarator after a parenthesized type-id to emit good
460         diagnostic.
462 2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>
464         * cp-tree.def, cvt.c: Update copyright.
466 2004-02-17  Mark Mitchell  <mark@codesourcery.com>
468         PR c++/11326
469         * cp-tree.h (abi_version_at_least): Remove.
470         * mangle.c: Include flags.h.
472 2004-02-15  Mark Mitchell  <mark@codesourcery.com>
474         PR c++/13971
475         * call.c (build_conditional_expr): Handle conversions between
476         class types which result in differently cv-qualified type
477         variants.
479         PR c++/14086
480         * class.c (delete_duplicate_fields_1): Remove.
481         (delete_duplicate_fields): Likewise.
482         (finish_struct_anon): Remove check for members with the same name
483         as their enclosing class.
484         (check_field_decls): Do not call duplicate_fields.
485         * decl.c (grokdeclarator): Remove check for static data members
486         with the same name as their enclosing class.
487         * name-lookup.c (push_class_level_binding): Check for members with
488         the same name as their enclosing class.
490 2004-02-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
492         PR c++/14085
493         * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.
495 2004-02-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
497         PR c++/13635
498         * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
499         has full set of arguments.
501 2004-02-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
503         PR c++/13927
504         * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.
506 2004-02-13  Mark Mitchell  <mark@codesourcery.com>
508         PR c++/14122
509         * cp-tree.h (delete_sanity): Change prototype.
510         * decl2.c (delete_sanity): Make doing_vec a bool, not an int.
511         Remove dead code.  Adjust code to warn about deleting an array.
512         * typekc.c (decay_conversion): Use build_address and build_nop.
514         PR c++/14108
515         * search.c (accessible_p): Do not check access in thunks.
517         PR c++/14083
518         * call.c (build_conditional_expr): Call force_rvalue on the
519         non-void operand in the case that one result is a throw-expression
520         and the other is not.
522 2004-02-13  Ian Lance Taylor  <ian@wasabisystems.com>
524         PR c++/9851
525         * parser.c (cp_parser_pseudo_destructor_name): Check for errors on
526         the type name and look ahead for ::~, and bail out early with a
527         better error message if the parse is going to fail.
529 2004-02-12  Mark Mitchell  <mark@codesourcery.com>
531         * call.c (conversion_kind): New type.
532         (conversion_rank): Likewise.
533         (conversion): Likewise.
534         (CONVERSION_RANK): New macro.
535         (conversion_obstack): New variable.
536         (obstack_initialized): Likewise.
537         (z_candidate): Change type of convs and second_conv.
538         (candidate_warning): New type.
539         (IDENTITY_RANK): Remove.
540         (EXACT_RANK): Likewise.
541         (PROMO_RANK): Likewise.
542         (STD_RANK): Likewise.
543         (PBOOL_RANK): Likewise.
544         (USER_RANK): Likewise.
545         (ELLIPSIS_RANK): Likewise.
546         (BAD_RANK): Likewise.
547         (ICS_RANK): Likewise.
548         (ICS_STD_RANK): Likewise.
549         (ICS_USER_FLAG): Likewise.
550         (ICS_ELLIPSIS_FLAG): Likewise.
551         (ICS_THIS_FLAG): Likewise.
552         (ICS_BAD_FLAG): Likewise.
553         (NEED_TEMPORARY_P): Likewise.
554         (CHECK_COPY_CONSTRUCTOR_P): Likewise.
555         (USER_CONV_CAND): Likewise.
556         (USER_CONV_FN): Likewise.
557         (conversion_obstack_alloc): New function.
558         (alloc_conversion): Likewise.
559         (validate_conversion_obstack): Likewise.
560         (alloc_conversions): Likewise.
561         (build_conv): Adjust to deal with new conversion data structures.
562         (build_identity_conv): New function.
563         (build_ambiguous_conv): Likewise.
564         (standard_conversion): Adjust to deal with new conversion data
565         structures.
566         (convert_class_to_reference): Likewise.
567         (direct_reference_binding): Likewise.
568         (reference_binding): Likewise.
569         (implicit_conversion): Likewise.
570         (add_candidate): Likewise.
571         (add_function_candidate): Likewise.
572         (add_conv_candidate): Likewise.
573         (build_builtin_candidate): Likewise.
574         (print_z_candidate): Likewise.
575         (merge_conversion_sequences): Likewise.
576         (build_user_type_conversion_1): Likewise.
577         (build_user_type_conversion): Likewise.
578         (build_new_function_call): Likewise.
579         (build_object_call): Likewise.
580         (conditional_conversion): Likewise.
581         (build_conditional_expr): Likewise.
582         (build_new_op): Likewise.
583         (build_op_delete_call): Likewise.
584         (convert_like_real): Likewise.
585         (build_over_call): Likewise.
586         (build_new_method_call): Likewise.
587         (is_subseq): Likewise.
588         (maybe_handle_implicit_object): Likewise.
589         (maybe_handle_ref_bind): Likewise.
590         (compare_ics): Likewise.
591         (source_type): Likewise.
592         (add_warning): Likewise.
593         (joust): Likewise.
594         (can_convert_arg): Likewise.
595         (can_convert_arg_bad): Likewise.
596         (perform_implicit_conversion): Likewise.
597         (perform_direct_initialization_if_possible): Likewise.
598         (initialize_reference): Likewise.
599         * cp-lang.c (cp_tree_size): Do not handle WRAPPER.
600         * cp-tree.def (WRAPPER): Likewise.
601         (IDENTITY_CONV): Remove.
602         (LVALUE_CONV): Likewise.
603         (QUAL_CONV): Likewise.
604         (STD_CONV): Likewise.
605         (PTR_CONV): Likewise.
606         (PMEM_CONV): Likewise.
607         (BASE_CONV): Likewise.
608         (REF_BIND): Likewise.
609         (USER_CONV): Likewise.
610         (AMBIG_CONV): Likewise.
611         (RVALUE_CONV): Likewise.
612         * cp-tree.h (tree_wrapper): Remove.
613         (WRAPPER_ZC): Remove.
614         (lang_tree_node): Remove wrapper.
615         (LOOKUP_SPECULATIVELY): Remove.
616         (build_op_delete_call): Adjust prototype.
617         (validate_conversion_obstack): Declare.
618         (build_zc_wrapper): Remove.
619         * cvt.c (convert_to_reference): Remove dead code.
620         (ocp_convert): Likewise.
621         * decl.c (redeclaration_error_message): Correct handling of
622         templates.
623         (finish_destructor_body): Do not use LOOKUP_SPECULATIVELY.
624         (cp_tree_node_structure): Remove WRAPPER case.
625         * decl2.c (finish_file): Call validate_conversion_obstack.
626         * init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY.
627         (build_op_delete_call): Likewise.
628         (build_x_delete): Likewise.
629         (build_delete): Adjust call to build_op_delete_call.
630         * pt.c (tsubst_friend_declaration): Adjust code to determine
631         whether or not a friend template is a definition.
632         (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
633         * tree.c (build_zc_wrapper): Remove.
634         
635 2004-02-12  Zack Weinberg  <zack@codesourcery.com>
637         * cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
638         * cp-tree.h: Don't declare cxx_builtin_type_decls.
639         * decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
640         (record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
642 2004-02-10  Mark Mitchell  <mark@codesourcery.com>
644         * typeck.c (lookup_destructor): Fix typo in error message.
646 2004-02-09  Kazu Hirata  <kazu@cs.umass.edu>
648         * call.c, parser.c, tree.c: Fix comment typos.
650 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
652         Bug 13856
653         * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
654         * decl.c (duplicate_decls, start_function): Likewise.
656 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
658         * name-lookup.c (pushdecl): Issue shadow warnings directly.
659         * parser.c (free_parser_stacks): Delete.
661 2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>
663         * rtti.c: Update copyright.
665 2003-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
667         PR c++/14033
668         * decl.c (require_complete_types_for_parms): Do not insert
669         error_mark_node in the parameter list.
671 2003-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
673         PR c++/14028
674         * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
675         error when terminator can not be found.
677 2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>
679         Make-lang.in (po-generated):  Delete.
681 2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>
683         * call.c (type_passed_as): Replace PROMOTE_PROTOTYPES with
684         targetm.calls.promote_prototypes.
686 2004-02-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
688         PR middle-end/13750
689         Revert:
690         2004-01-15  Geoffrey Keating  <geoffk@apple.com>
691         PR pch/13361
692         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
693         (handle_pragma_implementation): Likewise.
695 2004-02-05  Mark Mitchell  <mark@codesourcery.com>
697         PR c++/13714
698         * typeck.c (lookup_destructor): Tweak error message.
700 2004-02-05  Jan Hubicka  <jh@suse.cz>
702         * tree.c (cp_cannot_inline_tree_fn):  Allow inlining of comdat
703         functions.
705 2003-02-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
707         PR c++/14008
708         * parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
709         code, only emits the diagnostic now. Added lookup of the identifier
710         and support for qualified ids.
711         (cp_parser_parse_and_diagnose_invalid_type_name): New function.
712         Parse an (invalid) type name as id-expression within a declarator.
713         (cp_parser_simple_declaration): Use it.
714         (cp_parser_member_declaration): Likewise.
715         (cp_parser_make_typename_type): New function. Handle errors through
716         cp_parser_diagnose_invalid_typename.
717         (cp_parser_elaborated_type_specifier): Use it.
719 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
721         PR c++/13932
722         * call.c (convert_like_real): Use "converting" rather than
723         "argument" as the descriptive keyword to
724         dubious_conversion_warnings.
725         * typeck.c (convert_for_assignment): Do not call
726         dubious_conversion_warnings.
728 2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
730         PR c++/13086
731         * init.c (build_delete): Emit a more informative error message in
732         case of an incomplete type, and on the correct source line.
734 2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>
736         * error.c, search.c: Update copyright.
738 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
740         PR c++/9941
741         * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
742         linkage for the typeinfo name string.
744 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
746         PR c++/13969
747         * cp-tree.h (fold_non_dependent_expr): New function.
748         * parser.c (cp_parser_fold_non_dependent_expr): Remove.
749         (cp_parser_template_argument): Use fold_non_dependent_expr.
750         (cp_parser_direct_declarator): Likewise.
751         * pt.c (fold_non_dependent_expr): New function.
752         (convert_nontype_argument): Use it.
753         (tsubst_qualified_id): Simplify.
754         (tsubst_copy_and_build): Likewise.
756 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
758         * decl.c (cxx_push_function_context): Do not set
759         current_function_is_thunk.
760         * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
761         actual function.
763 2003-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
765         PR c++/13997
766         * pt.c (more_specialized_class): Increase processing_template_decl
767         while partial ordering.
769 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
771         PR c++/13925
772         * decl.c (start_function): Do not call pushdecl for any
773         instantiation or specialization of a primary template.
775 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
777         PR c++/13950
778         * parser.c (cp_parser_class_name): Robustify.
780         PR c++/13970
781         * parser.c (cp_parser_cache_group): Do not consume the EOF token.
783         PR c++/14002
784         * semantics.c (finish_id_expression): Do not return an
785         IDENTIFIER_NODE when lookup finds a PARM_DECL.
787 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
789         PR c++/13978
790         * pt.c (build_non_dependent_expr): Do not build
791         NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
793         PR c++/13968
794         * semantics.c (finish_id_expression): Do not return an
795         IDENTIFIER_NODE when lookup finds a VAR_DECL.
797         PR c++/13975
798         * parser.c (cp_parser_simple_declaration): When skipping to the
799         end of the statement swallow the terminating semicolon.
801 2004-02-02  Mark Mitchell  <mark@codesourcery.com>
803         PR c++/13113
804         * init.c (build_offset_ref): Improve error recovery for invalid
805         uses of non-static member functions.
807         PR c++/13854
808         * cp-tree.h (cp_build_type_attribute_variant): New function.
809         * class.c (build_clone): Use cp_build_type_attribute_variant.
810         * decl.c (duplicate_decls): Likewise.
811         * pt.c (copy_default_args_to_explicit_spec): Likewise.
812         (tsubst_function_type): Likewise.
813         * tree.c (build_exception_variant): Check attributes before
814         concluding that two types are the same.
815         (cp_build_type-attribute_variant): New method.
816         * typeck.c (merge_types): Use cp_build_type_attribute_variant.
818         PR c++/13907
819         * call.c (convert_class_to_reference): Keep better track of
820         pedantically invalid user-defined conversions.
822 2004-02-01  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
824         PR c++/13957
825         * pt.c (tsubst_qualified_id): Improved error message when a type
826         is expected but not found.
828 2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>
830         * class.c: Fix comment typos.
831         * decl.c: Likewise.
832         * error.c: Likewise.
833         * parser.c: Likewise.
834         * pt.c: Likewise.
835         * search.c: Likewise.
836         * typeck.c: Likewise.
838 2004-01-30  Richard Henderson  <rth@redhat.com>
840         PR c++/13693
841         * method.c (use_thunk): Don't force_target_expr for void thunks.
842         * tree.c (build_target_expr_with_type): Assert non-void type.
843         (force_target_expr): Likewise.
845 2004-01-30  Michael Matz  <matz@suse.de>
847         * parser.c (cp_parser_labeled_statement): Accept case ranges.
849 2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
851         DR206
852         PR c++/13813
853         * decl.c (grokdeclarator): Check immediatly type completeness for
854         non-dependent types.
856 2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
858         PR c++/13683
859         * call.c (convert_arg_to_ellipsis): Don't emit a warning if within
860         a sizeof expression.block
862 2004-01-29  Mark Mitchell  <mark@codesourcery.com>
864         PR c++/13883
865         * mangle.c (write_encoding): Correct encoding of member template
866         constructors.
868 2004-01-28  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
870         * parser.c (cp_parser_template_id): Parse tentatively `[:' after a
871         template name as it was `<::' (digraph typo).
872         (cp_parser_nth_token_starts_template_argument_list_p): New function.
873         (cp_parser_id_expression): Use it.
874         (cp_parser_nested_name_specifier_opt): Likewise.
875         (cp_parser_template_name): Likewise.
876         (cp_parser_class_name): Likewise.
877         (cp_lexer_get_preprocessor_token): Use c_lex_with_flags.
879 2004-01-28  Mark Mitchell  <mark@codesourcery.com>
881         PR c++/13791
882         * typeck.c (merge_types): Do not merge attributes into
883         TYPENAME_TYPEs.
885         PR c++/13736
886         * parser.c (cp_parser_direct_declarator): Do not prevent
887         backtracking inside a parenthesized declarator.
888         (cp_parser_parameter_declaration): Fix typo in comment.
890 2004-01-28  Jan Hubicka  <jh@suse.cz>
892         * semantics.c (expand_body)  Do emit_associated_thunks before
893         expansion.
895 2004-01-27  Devang Patel  <dpatel@apple.com>
897         * name-lookup.c: Include "debug.h"
898         (do_namespace_alias): Invoke debug_hooks to emit debug info
899         for namespace alias.
900         (do_local_using_decl): Invoke debug_hooks to emit debug info
901         for using decl.
902         (do_class_using_decl): Same.
903         (do_toplevel_using_decl): Same.
904         (do_using_directive): Same.
905         (cp_emit_debug_info_for_using): New function.
906         * Make-lang.in (cp/parser.o): Depend on debug.h
907         (cp/name-lookup.o): Same.
909 2004-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
911         * cp-tree.h (language_function, lang_type_header): Use
912         BOOL_BITFIELD.
913         * name-lookup.h (cp_binding_level): Likewise.
915 2004-01-26  Mark Mitchell  <mark@codesourcery.com>
917         PR c++/13663
918         * semantics.c (finish_for_expr): Check for unresolved overloaded
919         functions.
921         * class.c (add_method): Just check processing_template_decl to
922         determine whether or not we are within a template.
923         * decl2.c (maybe_retrofit_in_chrg): Likewise.
924         * init.c (decl_constant_value): Check the type of the declaration,
925         not TREE_READONLY.
926         * name-lookup.c (maybe_push_to_top_level): Rename to ...
927         (push_to_top_level): ... this.
928         * name-lookup.h (maybe_push_to_top_level): Do not declare it.
929         * pt.c (push_template_decl_real): Reorder condition for speed.
930         (convert_template_argument): Use dependency-checking functions in
931         place of uses_template_parms.
932         (lookup_template_class): Avoid calling uses_template_parms more
933         than once.
934         (uses_template_parms): Reimplement, using dependency-checking
935         functions.
936         (instantiate_class_template): Use push_to_top_level, not
937         maybe_push_to_top_level.
938         (type_unification_real): Simplify.
939         (type_dependent_expression_p): Handle OFFSET_REFs and
940         TEMPLATE_DECLs.
941         (any_dependent_template_arguments_p): Handle multiple levels of
942         template argument.
943         * semantics.c (expand_or_defer_fn): Do not check
944         uses_template_parms for template instantiations.
945         * typeck.c (comptypes): Avoid calling cp_type_quals.
947 2004-01-25  Mark Mitchell  <mark@codesourcery.com>
949         PR c++/13833
950         * call.c (build_over_call): Do not convert arguments when
951         processing a template.
952         * pt.c (build_non_dependent_expr): Do not build a
953         NON_DEPENDENT_EXPR for arithmetic constants.
955 2004-01-25  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
957         PR c++/13810
958         * parser.c (cp_parser_type_parameter): When cp_parser_id_expression
959         returns a TYPE_DECL. no further lookup is required.
960         * semantics.c (check_template_template_default_arg): A TYPE_DECL
961         is invalid. Rework to give better diagnostics.
963 2004-01-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
965         PR c++/13797
966         * pt.c (instantiate_class_template): Add an error_mark_node
967         check.
968         (tsubst_decl) <TEMPLATE_DECL case>: Likewise.
970 2004-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
972         PR c++/13701
973         * decl.c (finish_function): Move the call to
974         finish_fname_decls below the call to
975         finish_eh_spec_block.
977 2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
979         * optimize.c, typeck2.c: Update copyright.
981 2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
983         * Make-lang.in, call.c, class.c, decl2.c, except.c, expr.c,
984         init.c, mangle.c, typeck.c: Update copyright.
986 2004-01-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
988         * parser.c (cp_parser_class_specifier): Prevent garbage collection.
990 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
992         * Make-lang.in: Replace $(docdir) with doc.
993         (c++.info, c++.srcinfo): Dummy entry.
994         (c++.man, c++.srcman): New rules.
995         (c++.install-man): Revamp rule.
997 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
999         * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
1000         CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
1001         immediate $(shell) instead of deferred backquote.
1003 2004-01-19  Mark Mitchell  <mark@codesourcery.com>
1005         PR c++/13651
1006         * parser.c (cp_parser_postfix_expression): When encountering
1007         incomplete type on left-hand side of "->" or ".", treat the entire
1008         expression as erroneous.
1010         PR c++/13592
1011         * call.c (build_field_call): Remove.
1012         (n_build_method_call): Likewise.
1013         (build_method_call): Likewise.
1014         (build_new_method_call): Do not call build_field_call.
1015         * class.c (n_build_method_call): Remove.
1016         (print_class_statistics): Do not print it.
1017         * cp-tree.h (build_method_call): Remove declaration.
1018         (finish_object_call_expr): Likewise.
1019         (build_new_1): Do not use build_method_call.
1020         * parser.c (cp_parser_postfix_expression): Use finish_call_expr
1021         when the function appearing on the right-hand-side of "." or "->"
1022         is not actually a function.
1023         * pt.c (tsubst_copy_and_build): Likewise.
1024         * semantics.c (finish_object_call_expr): Remove.
1026 2004-01-18  Mark Mitchell  <mark@codesourcery.com>
1028         PR c++/13710
1029         * pt.c (tsubst): Use finish_typeof.
1031 2004-01-18  Jason Merrill  <jason@redhat.com>
1033         PR c++/11725
1034         * except.c (build_throw): In a template, set
1035         current_function_returns_abnormally.
1037 2004-01-17  Fred Fish  <fnf@intrinsity.com>
1039         PR c++/11895
1040         * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
1041         except don't call array_type_nelts() with a VECTOR_TYPE.
1043 2004-01-16  Jan Hubicka  <jh@suse.cz>
1045         * mangle.c (write_mangled_name): Remove inline modifier.
1047 2004-01-16  Mark Mitchell  <mark@codesourcery.com>
1049         PR c++/13574
1050         * decl.c (compute_array_index_type): Fix grammar in comment.
1051         * init.c (build_zero_init): Handle zero-sized arrays correctly.
1053         PR c++/13178
1054         * call.c (name_as_c_string): Print conversion operator names
1055         correctly.
1057         PR c++/13478
1058         * call.c (initialize_reference): Pass -1 for inner parameter to
1059         convert_like_real.
1061 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1063         PR c++/13407
1064         * parser.c (cp_parser_base_specifier): Check for an invalid
1065         keyword `typename' and emit an user-friendly error message.
1067 2004-01-15  Geoffrey Keating  <geoffk@apple.com>
1069         PR pch/13361
1070         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
1071         (handle_pragma_implementation): Likewise.
1073 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1075         PR c++/9259
1076         * typeck.c (build_class_member_access_expr): Allow to access members
1077         of the currently open class.
1078         (finish_class_member_access_expr): Likewise.
1080 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
1082         PR c++/13659
1083         * name-lookup.c (validate_nonmember_using_decl): Take scope and
1084         name by value, instead of computing them.
1085         (do_local_using_decl, do_toplevel_using_decl): Add scope and name
1086         arguments.  Pass them to validate_nonmember_using_decl.
1087         * name-lookup.h (do_local_using_decl): Adjust.
1088         (do_toplevel_using_decl): Likewise.
1089         * parser.c (cp_parser_using_declaration): Likewise.
1090         * pt.c (tsubst_expr): Likewise.
1092 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
1094         PR c++/13594
1095         PR c++/13658
1096         * name-lookup.c (qualified_lookup_using_namespace): Search
1097         strongly-associated namespaces first, and only then try other
1098         namespaces.
1100 2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
1102         * Make-lang.in (c++.srcextra): Dummy entry.
1104 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1106         PR c++/8856
1107         * parser.c (cp_parser_template_name): Don't try to parse a
1108         conversion-function-id, as it cannot be a template-name.
1109         (cp_parser_simple_type_specifier): Check for invalid template-ids
1110         even after a built-in type.
1112 2004-01-14  Jan Hubicka  <jh@suse.cz>
1114         PR c++/12850
1115         * pt.c (instantiate_decl):  Do not increase function_depth.
1117 2004-01-14  Danny Smith  <dannysmith@users,sourceforge.net>
1119         PR c++/9021
1120         PR c++/11005
1121         * parser.c (cp_parser_elaborated_type_specifier): Warn about
1122         attributes and discard.
1123         * decl.c (xref_tag): Don't overwite existing attributes with
1124         NULL_TREE.
1126 2004-01-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1128         PR c++/12335
1129         * parser.c (cp_parser_lookup_name): Return error_mark_node if there
1130         is no destructor while looking up a BIT_NOT_EXPR.
1132 2004-01-13  Ian Lance Taylor  <ian@wasabisystems.com>
1134         * cxxfilt.c: Remove unused file.
1136 2004-01-14  Jan Hubicka  <jh@suse.cz>
1138         Partial fix to PR c++/12850
1139         * decl2.c (mark_used): Do not proactively instantiate templates
1140         when compiling in unit-at-a-time or not optimizing.
1141         * optimize.c (maybe_clone_body): Do not increase function depth.
1143 2004-01-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1145         PR c++/13474
1146         * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.
1148 2003-01-12  Steven Bosscher  <stevenb@suse.de>
1150         PR c++/13558
1151         * parser.c (cp_parser_member_declaration): Any non-type is also
1152         not a class or a function.
1154 2004-01-12  Jason Merrill  <jason@redhat.com>
1156         PR c++/12815
1157         * class.c (build_base_path): Do not mark vtable references as
1158         TREE_CONSTANT.
1159         (build_vtbl_ref_1): Likewise.
1161 2004-01-12  Richard Henderson  <rth@redhat.com>
1163         PR opt/10776
1164         * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New.
1165         (store_init_value): Use it.
1166         * decl.c (check_initializer): Expect full initialization code
1167         from store_init_value.
1168         * init.c (expand_aggr_init_1): Likewise.
1169         * decl2.c (maybe_emit_vtables): Abort if runtime init needed.
1171 2004-01-12  Mark Mitchell  <mark@codesourcery.com>
1173         * class.c (layout_class_type): For non-POD class types, also copy
1174         the DECL_SIZE and DECL_MODE of fields to the base class type.
1176 2004-01-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1178         PR c++/13289
1179         * pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before
1180         calling regenerate_decl_from_template.
1182 2004-01-12  Scott Brumbaugh  <scottb.lists@verizon.net>
1184         PR c++/4100
1185         * parser.c (cp_parser_decl_specifier_seq): Add check for a friend
1186         decl-specifier occurring along with a class definition.
1188 2004-01-12  Ian Lance Taylor  <ian@wasabisystems.com>
1190         * parser.c (cp_parser_decl_specifier_seq): Add parenthetical
1191         clauses to comments describing declares_class_or_enum.
1192         (cp_parser_type_specifier): Set *declares_class_or_enum to 0, not
1193         false.
1195 2004-01-12  Jan Hubicka  <jh@suse.cz>
1197         * pt.c (for_each_template_parm): Do not check for duplicates.
1198         (for_each_template_parm): Use walk_tree duplicate checking code.
1200 2004-01-11  Ian Lance Taylor  <ian@wasabisystems.com>
1202         PR c++/3478
1203         * parser.c (cp_parser_decl_specifier_seq): If the first decl_spec
1204         is error_mark_node, don't add any more decl_specs.
1205         (cp_parser_init_declarator): After committing to a declaration, if
1206         the decl_specifiers start with error_mark_node, issue an error and
1207         change the type to "int".
1209 2004-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
1211         PR bootstrap/7817
1212         * Make-lang.in: Copy gcc.1 to g++.1 rather than using .so.
1214 2004-01-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1216         DR 337
1217         PR c++/9256
1218         * pt.c (tsubst): Substitution must fail if we are attempting to
1219         create an array with element type that is an abstract class type.
1220         * decl.c (cp_finish_decl): Strip pointers and array types recursively
1221         before calling abstract_virtuals_error.
1223 2004-01-09  Alexandre Oliva  <aoliva@redhat.com>
1225         * name-lookup.c (qualified_lookup_using_namespace): Consider
1226         strong using directives even if we've already found a binding.
1228 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
1230         * cp-tree.h (cxx_expand_expr): Change prototype.
1231         * expr.c (cxx_expand_expr): Add alt_rtl parameter.
1233 2004-01-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
1235         PR c++/12573
1236         * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
1237         looking into them recursively. They can be there because of the
1238         new __offsetof__ extension.
1240 2004-01-07  Zack Weinberg  <zack@codesourcery.com>
1242         * parser.c (cp_parser_save_member_function_body): Mark the
1243         definition static.
1245 2004-01-05  Mark Mitchell  <mark@codesourcery.com>
1247         PR c++/13057
1248         * class.c (build_clone): Copy type attributes from the original
1249         function to the clone.
1251         PR c++/12815
1252         * class.c (build_vtbl_ref_1): Do not unconditionally mark vtable
1253         references as constant.
1255         PR c++/12132
1256         * parser.c (cp_parser_explicit_instantiation): Improve error
1257         recovery.
1258         (cp_parser_require): Improve indication of the error location.
1260         PR c++/13451
1261         * parser.c (cp_parser_class_head): Reorder logic to check for
1262         invalid qualification.
1264 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
1266         PR c++/13157
1267         * name-lookup.c (lookup_using_namespace): Remove spacesp
1268         parameter.
1269         (unqualified_namespace_lookup): Likewise.
1270         (lookup_qualified_name): Adjust accordingly.
1271         (lookup_name_real): Likewise.
1272         (lookup_arg_dependent): Do not eliminate the namespace of the
1273         functions found by unqualified name lookup unless that is the
1274         current namespace.
1276 2004-01-04  Andrew Pinski  <pinskia@physics.uc.edu>
1278         * semantics.c (push_deferring_access_checks): Fix format.
1279         (resume_deferring_access_checks): Likewise.
1280         (stop_deferring_access_checks): Likewise.
1281         (pop_deferring_access_checks): Likewise.
1282         (get_deferred_access_checks): Likewise.
1283         (pop_to_parent_deferring_access_checks): Likewise.
1284         (perform_deferred_access_checks): Likewise.
1285         (perform_or_defer_access_check): Likewise.
1287 2004-01-04  Richard Henderson  <rth@redhat.com>
1289         * call.c (build_over_call): Don't create a save_expr of an
1290         aggregate, but rather its address.
1292 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
1294         PR c++/13529
1295         * parser.c (cp_parser_postfix_expression): Allow "." to appear in
1296         an offsetof expression.
1298         * parser.c (cp_parser_parameter_declaration): Fix comment.
1300         PR c++/12226
1301         * call.c (CHECK_COPY_CONSTRUCTOR_P): New macro.
1302         (reference_binding): Set it when appropriate.
1303         (build_temp): New function, split out from ...
1304         (convert_like_real): ... here.  Honor CHECK_COPY_CONSTRUCTOR_P.
1305         (initialize_reference): Likewise.
1307         PR c++/13536
1308         * parser.c (cp_parser): Add in_type_id_in_expr_p.
1309         (cp_parser_new): Initialize it.
1310         (cp_parser_postfix_expression): Set it.
1311         (cp_parser_sizeof_operand): Likewise.
1312         (cp_parser_parameteR_declaration): Do not commit early to tenative
1313         parsers when in_type_id_in_expr_p is set.
1315 2004-01-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1317         PR c++/13094
1318         * parser.c (cp_parser_template_argument): Don't call
1319         make_unbound_class_template directly.
1320         (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
1321         UNBOUND_CLASS_TEMPLATE tree node.
1323 2004-01-02  Richard Sandiford  <rsandifo@redhat.com>
1325         PR target/12729
1326         * method.c (use_thunk): Pass the CALL_EXPR through force_target_expr.
1328 2004-01-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1330         PR c++/13520
1331         * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro.
1332         (DECL_FUNCTION_TEMPLATE_P): Use it.
1333         (DECL_CLASS_TEMPLATE_P): Likewise.
1334         * parser.c (cp_parser_lookup_name): Add is_template parameter.
1335         (cp_parser_type_parameter): Adjust call to cp_parser_lookup_name.
1336         (cp_parser_template_name): Likewise.
1337         (cp_parser_elaborated_type_specifier): Likewise.
1338         (cp_parser_namespace_name): Likewise.
1339         (cp_parser_class_name): Likewise.
1340         (cp_parser_lookup_name_simple): Likewise.
1342 See ChangeLog.3 for earlier changes.