PR c++/14085
[official-gcc.git] / gcc / cp / ChangeLog
blob60a0354ab11d10da9afbb52a81973f770cdefd2c
1 2004-02-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3         PR c++/14085
4         * error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.
6 2004-02-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
8         PR c++/13635
9         * pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
10         has full set of arguments.
12 2004-02-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
14         PR c++/13927
15         * error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.
17 2004-02-13  Mark Mitchell  <mark@codesourcery.com>
19         PR c++/14122
20         * cp-tree.h (delete_sanity): Change prototype.
21         * decl2.c (delete_sanity): Make doing_vec a bool, not an int.
22         Remove dead code.  Adjust code to warn about deleting an array.
23         * typekc.c (decay_conversion): Use build_address and build_nop.
25         PR c++/14108
26         * search.c (accessible_p): Do not check access in thunks.
28         PR c++/14083
29         * call.c (build_conditional_expr): Call force_rvalue on the
30         non-void operand in the case that one result is a throw-expression
31         and the other is not.
33 2004-02-13  Ian Lance Taylor  <ian@wasabisystems.com>
35         PR c++/9851
36         * parser.c (cp_parser_pseudo_destructor_name): Check for errors on
37         the type name and look ahead for ::~, and bail out early with a
38         better error message if the parse is going to fail.
40 2004-02-12  Mark Mitchell  <mark@codesourcery.com>
42         * call.c (conversion_kind): New type.
43         (conversion_rank): Likewise.
44         (conversion): Likewise.
45         (CONVERSION_RANK): New macro.
46         (conversion_obstack): New variable.
47         (obstack_initialized): Likewise.
48         (z_candidate): Change type of convs and second_conv.
49         (candidate_warning): New type.
50         (IDENTITY_RANK): Remove.
51         (EXACT_RANK): Likewise.
52         (PROMO_RANK): Likewise.
53         (STD_RANK): Likewise.
54         (PBOOL_RANK): Likewise.
55         (USER_RANK): Likewise.
56         (ELLIPSIS_RANK): Likewise.
57         (BAD_RANK): Likewise.
58         (ICS_RANK): Likewise.
59         (ICS_STD_RANK): Likewise.
60         (ICS_USER_FLAG): Likewise.
61         (ICS_ELLIPSIS_FLAG): Likewise.
62         (ICS_THIS_FLAG): Likewise.
63         (ICS_BAD_FLAG): Likewise.
64         (NEED_TEMPORARY_P): Likewise.
65         (CHECK_COPY_CONSTRUCTOR_P): Likewise.
66         (USER_CONV_CAND): Likewise.
67         (USER_CONV_FN): Likewise.
68         (conversion_obstack_alloc): New function.
69         (alloc_conversion): Likewise.
70         (validate_conversion_obstack): Likewise.
71         (alloc_conversions): Likewise.
72         (build_conv): Adjust to deal with new conversion data structures.
73         (build_identity_conv): New function.
74         (build_ambiguous_conv): Likewise.
75         (standard_conversion): Adjust to deal with new conversion data
76         structures.
77         (convert_class_to_reference): Likewise.
78         (direct_reference_binding): Likewise.
79         (reference_binding): Likewise.
80         (implicit_conversion): Likewise.
81         (add_candidate): Likewise.
82         (add_function_candidate): Likewise.
83         (add_conv_candidate): Likewise.
84         (build_builtin_candidate): Likewise.
85         (print_z_candidate): Likewise.
86         (merge_conversion_sequences): Likewise.
87         (build_user_type_conversion_1): Likewise.
88         (build_user_type_conversion): Likewise.
89         (build_new_function_call): Likewise.
90         (build_object_call): Likewise.
91         (conditional_conversion): Likewise.
92         (build_conditional_expr): Likewise.
93         (build_new_op): Likewise.
94         (build_op_delete_call): Likewise.
95         (convert_like_real): Likewise.
96         (build_over_call): Likewise.
97         (build_new_method_call): Likewise.
98         (is_subseq): Likewise.
99         (maybe_handle_implicit_object): Likewise.
100         (maybe_handle_ref_bind): Likewise.
101         (compare_ics): Likewise.
102         (source_type): Likewise.
103         (add_warning): Likewise.
104         (joust): Likewise.
105         (can_convert_arg): Likewise.
106         (can_convert_arg_bad): Likewise.
107         (perform_implicit_conversion): Likewise.
108         (perform_direct_initialization_if_possible): Likewise.
109         (initialize_reference): Likewise.
110         * cp-lang.c (cp_tree_size): Do not handle WRAPPER.
111         * cp-tree.def (WRAPPER): Likewise.
112         (IDENTITY_CONV): Remove.
113         (LVALUE_CONV): Likewise.
114         (QUAL_CONV): Likewise.
115         (STD_CONV): Likewise.
116         (PTR_CONV): Likewise.
117         (PMEM_CONV): Likewise.
118         (BASE_CONV): Likewise.
119         (REF_BIND): Likewise.
120         (USER_CONV): Likewise.
121         (AMBIG_CONV): Likewise.
122         (RVALUE_CONV): Likewise.
123         * cp-tree.h (tree_wrapper): Remove.
124         (WRAPPER_ZC): Remove.
125         (lang_tree_node): Remove wrapper.
126         (LOOKUP_SPECULATIVELY): Remove.
127         (build_op_delete_call): Adjust prototype.
128         (validate_conversion_obstack): Declare.
129         (build_zc_wrapper): Remove.
130         * cvt.c (convert_to_reference): Remove dead code.
131         (ocp_convert): Likewise.
132         * decl.c (redeclaration_error_message): Correct handling of
133         templates.
134         (finish_destructor_body): Do not use LOOKUP_SPECULATIVELY.
135         (cp_tree_node_structure): Remove WRAPPER case.
136         * decl2.c (finish_file): Call validate_conversion_obstack.
137         * init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY.
138         (build_op_delete_call): Likewise.
139         (build_x_delete): Likewise.
140         (build_delete): Adjust call to build_op_delete_call.
141         * pt.c (tsubst_friend_declaration): Adjust code to determine
142         whether or not a friend template is a definition.
143         (tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
144         * tree.c (build_zc_wrapper): Remove.
145         
146 2004-02-12  Zack Weinberg  <zack@codesourcery.com>
148         * cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
149         * cp-tree.h: Don't declare cxx_builtin_type_decls.
150         * decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
151         (record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
153 2004-02-10  Mark Mitchell  <mark@codesourcery.com>
155         * typeck.c (lookup_destructor): Fix typo in error message.
157 2004-02-09  Kazu Hirata  <kazu@cs.umass.edu>
159         * call.c, parser.c, tree.c: Fix comment typos.
161 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
163         Bug 13856
164         * optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
165         * decl.c (duplicate_decls, start_function): Likewise.
167 2004-02-07  Zack Weinberg  <zack@codesourcery.com>
169         * name-lookup.c (pushdecl): Issue shadow warnings directly.
170         * parser.c (free_parser_stacks): Delete.
172 2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>
174         * rtti.c: Update copyright.
176 2003-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
178         PR c++/14033
179         * decl.c (require_complete_types_for_parms): Do not insert
180         error_mark_node in the parameter list.
182 2003-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
184         PR c++/14028
185         * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
186         error when terminator can not be found.
188 2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>
190         Make-lang.in (po-generated):  Delete.
192 2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>
194         * call.c (type_passed_as): Replace PROMOTE_PROTOTYPES with
195         targetm.calls.promote_prototypes.
197 2004-02-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
199         PR middle-end/13750
200         Revert:
201         2004-01-15  Geoffrey Keating  <geoffk@apple.com>
202         PR pch/13361
203         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
204         (handle_pragma_implementation): Likewise.
206 2004-02-05  Mark Mitchell  <mark@codesourcery.com>
208         PR c++/13714
209         * typeck.c (lookup_destructor): Tweak error message.
211 2004-02-05  Jan Hubicka  <jh@suse.cz>
213         * tree.c (cp_cannot_inline_tree_fn):  Allow inlining of comdat
214         functions.
216 2003-02-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
218         PR c++/14008
219         * parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
220         code, only emits the diagnostic now. Added lookup of the identifier
221         and support for qualified ids.
222         (cp_parser_parse_and_diagnose_invalid_type_name): New function.
223         Parse an (invalid) type name as id-expression within a declarator.
224         (cp_parser_simple_declaration): Use it.
225         (cp_parser_member_declaration): Likewise.
226         (cp_parser_make_typename_type): New function. Handle errors through
227         cp_parser_diagnose_invalid_typename.
228         (cp_parser_elaborated_type_specifier): Use it.
230 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
232         PR c++/13932
233         * call.c (convert_like_real): Use "converting" rather than
234         "argument" as the descriptive keyword to
235         dubious_conversion_warnings.
236         * typeck.c (convert_for_assignment): Do not call
237         dubious_conversion_warnings.
239 2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
241         PR c++/13086
242         * init.c (build_delete): Emit a more informative error message in
243         case of an incomplete type, and on the correct source line.
245 2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>
247         * error.c, search.c: Update copyright.
249 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
251         PR c++/9941
252         * rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
253         linkage for the typeinfo name string.
255 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
257         PR c++/13969
258         * cp-tree.h (fold_non_dependent_expr): New function.
259         * parser.c (cp_parser_fold_non_dependent_expr): Remove.
260         (cp_parser_template_argument): Use fold_non_dependent_expr.
261         (cp_parser_direct_declarator): Likewise.
262         * pt.c (fold_non_dependent_expr): New function.
263         (convert_nontype_argument): Use it.
264         (tsubst_qualified_id): Simplify.
265         (tsubst_copy_and_build): Likewise.
267 2004-02-04  Mark Mitchell  <mark@codesourcery.com>
269         * decl.c (cxx_push_function_context): Do not set
270         current_function_is_thunk.
271         * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
272         actual function.
274 2003-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
276         PR c++/13997
277         * pt.c (more_specialized_class): Increase processing_template_decl
278         while partial ordering.
280 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
282         PR c++/13925
283         * decl.c (start_function): Do not call pushdecl for any
284         instantiation or specialization of a primary template.
286 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
288         PR c++/13950
289         * parser.c (cp_parser_class_name): Robustify.
291         PR c++/13970
292         * parser.c (cp_parser_cache_group): Do not consume the EOF token.
294         PR c++/14002
295         * semantics.c (finish_id_expression): Do not return an
296         IDENTIFIER_NODE when lookup finds a PARM_DECL.
298 2004-02-03  Mark Mitchell  <mark@codesourcery.com>
300         PR c++/13978
301         * pt.c (build_non_dependent_expr): Do not build
302         NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.
304         PR c++/13968
305         * semantics.c (finish_id_expression): Do not return an
306         IDENTIFIER_NODE when lookup finds a VAR_DECL.
308         PR c++/13975
309         * parser.c (cp_parser_simple_declaration): When skipping to the
310         end of the statement swallow the terminating semicolon.
312 2004-02-02  Mark Mitchell  <mark@codesourcery.com>
314         PR c++/13113
315         * init.c (build_offset_ref): Improve error recovery for invalid
316         uses of non-static member functions.
318         PR c++/13854
319         * cp-tree.h (cp_build_type_attribute_variant): New function.
320         * class.c (build_clone): Use cp_build_type_attribute_variant.
321         * decl.c (duplicate_decls): Likewise.
322         * pt.c (copy_default_args_to_explicit_spec): Likewise.
323         (tsubst_function_type): Likewise.
324         * tree.c (build_exception_variant): Check attributes before
325         concluding that two types are the same.
326         (cp_build_type-attribute_variant): New method.
327         * typeck.c (merge_types): Use cp_build_type_attribute_variant.
329         PR c++/13907
330         * call.c (convert_class_to_reference): Keep better track of
331         pedantically invalid user-defined conversions.
333 2004-02-01  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
335         PR c++/13957
336         * pt.c (tsubst_qualified_id): Improved error message when a type
337         is expected but not found.
339 2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>
341         * class.c: Fix comment typos.
342         * decl.c: Likewise.
343         * error.c: Likewise.
344         * parser.c: Likewise.
345         * pt.c: Likewise.
346         * search.c: Likewise.
347         * typeck.c: Likewise.
349 2004-01-30  Richard Henderson  <rth@redhat.com>
351         PR c++/13693
352         * method.c (use_thunk): Don't force_target_expr for void thunks.
353         * tree.c (build_target_expr_with_type): Assert non-void type.
354         (force_target_expr): Likewise.
356 2004-01-30  Michael Matz  <matz@suse.de>
358         * parser.c (cp_parser_labeled_statement): Accept case ranges.
360 2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
362         DR206
363         PR c++/13813
364         * decl.c (grokdeclarator): Check immediatly type completeness for
365         non-dependent types.
367 2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
369         PR c++/13683
370         * call.c (convert_arg_to_ellipsis): Don't emit a warning if within
371         a sizeof expression.block
373 2004-01-29  Mark Mitchell  <mark@codesourcery.com>
375         PR c++/13883
376         * mangle.c (write_encoding): Correct encoding of member template
377         constructors.
379 2004-01-28  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
381         * parser.c (cp_parser_template_id): Parse tentatively `[:' after a
382         template name as it was `<::' (digraph typo).
383         (cp_parser_nth_token_starts_template_argument_list_p): New function.
384         (cp_parser_id_expression): Use it.
385         (cp_parser_nested_name_specifier_opt): Likewise.
386         (cp_parser_template_name): Likewise.
387         (cp_parser_class_name): Likewise.
388         (cp_lexer_get_preprocessor_token): Use c_lex_with_flags.
390 2004-01-28  Mark Mitchell  <mark@codesourcery.com>
392         PR c++/13791
393         * typeck.c (merge_types): Do not merge attributes into
394         TYPENAME_TYPEs.
396         PR c++/13736
397         * parser.c (cp_parser_direct_declarator): Do not prevent
398         backtracking inside a parenthesized declarator.
399         (cp_parser_parameter_declaration): Fix typo in comment.
401 2004-01-28  Jan Hubicka  <jh@suse.cz>
403         * semantics.c (expand_body)  Do emit_associated_thunks before
404         expansion.
406 2004-01-27  Devang Patel  <dpatel@apple.com>
408         * name-lookup.c: Include "debug.h"
409         (do_namespace_alias): Invoke debug_hooks to emit debug info
410         for namespace alias.
411         (do_local_using_decl): Invoke debug_hooks to emit debug info
412         for using decl.
413         (do_class_using_decl): Same.
414         (do_toplevel_using_decl): Same.
415         (do_using_directive): Same.
416         (cp_emit_debug_info_for_using): New function.
417         * Make-lang.in (cp/parser.o): Depend on debug.h
418         (cp/name-lookup.o): Same.
420 2004-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
422         * cp-tree.h (language_function, lang_type_header): Use
423         BOOL_BITFIELD.
424         * name-lookup.h (cp_binding_level): Likewise.
426 2004-01-26  Mark Mitchell  <mark@codesourcery.com>
428         PR c++/13663
429         * semantics.c (finish_for_expr): Check for unresolved overloaded
430         functions.
432         * class.c (add_method): Just check processing_template_decl to
433         determine whether or not we are within a template.
434         * decl2.c (maybe_retrofit_in_chrg): Likewise.
435         * init.c (decl_constant_value): Check the type of the declaration,
436         not TREE_READONLY.
437         * name-lookup.c (maybe_push_to_top_level): Rename to ...
438         (push_to_top_level): ... this.
439         * name-lookup.h (maybe_push_to_top_level): Do not declare it.
440         * pt.c (push_template_decl_real): Reorder condition for speed.
441         (convert_template_argument): Use dependency-checking functions in
442         place of uses_template_parms.
443         (lookup_template_class): Avoid calling uses_template_parms more
444         than once.
445         (uses_template_parms): Reimplement, using dependency-checking
446         functions.
447         (instantiate_class_template): Use push_to_top_level, not
448         maybe_push_to_top_level.
449         (type_unification_real): Simplify.
450         (type_dependent_expression_p): Handle OFFSET_REFs and
451         TEMPLATE_DECLs.
452         (any_dependent_template_arguments_p): Handle multiple levels of
453         template argument.
454         * semantics.c (expand_or_defer_fn): Do not check
455         uses_template_parms for template instantiations.
456         * typeck.c (comptypes): Avoid calling cp_type_quals.
458 2004-01-25  Mark Mitchell  <mark@codesourcery.com>
460         PR c++/13833
461         * call.c (build_over_call): Do not convert arguments when
462         processing a template.
463         * pt.c (build_non_dependent_expr): Do not build a
464         NON_DEPENDENT_EXPR for arithmetic constants.
466 2004-01-25  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
468         PR c++/13810
469         * parser.c (cp_parser_type_parameter): When cp_parser_id_expression
470         returns a TYPE_DECL. no further lookup is required.
471         * semantics.c (check_template_template_default_arg): A TYPE_DECL
472         is invalid. Rework to give better diagnostics.
474 2004-01-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
476         PR c++/13797
477         * pt.c (instantiate_class_template): Add an error_mark_node
478         check.
479         (tsubst_decl) <TEMPLATE_DECL case>: Likewise.
481 2004-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
483         PR c++/13701
484         * decl.c (finish_function): Move the call to
485         finish_fname_decls below the call to
486         finish_eh_spec_block.
488 2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
490         * optimize.c, typeck2.c: Update copyright.
492 2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>
494         * Make-lang.in, call.c, class.c, decl2.c, except.c, expr.c,
495         init.c, mangle.c, typeck.c: Update copyright.
497 2004-01-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
499         * parser.c (cp_parser_class_specifier): Prevent garbage collection.
501 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
503         * Make-lang.in: Replace $(docdir) with doc.
504         (c++.info, c++.srcinfo): Dummy entry.
505         (c++.man, c++.srcman): New rules.
506         (c++.install-man): Revamp rule.
508 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
510         * Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
511         CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
512         immediate $(shell) instead of deferred backquote.
514 2004-01-19  Mark Mitchell  <mark@codesourcery.com>
516         PR c++/13651
517         * parser.c (cp_parser_postfix_expression): When encountering
518         incomplete type on left-hand side of "->" or ".", treat the entire
519         expression as erroneous.
521         PR c++/13592
522         * call.c (build_field_call): Remove.
523         (n_build_method_call): Likewise.
524         (build_method_call): Likewise.
525         (build_new_method_call): Do not call build_field_call.
526         * class.c (n_build_method_call): Remove.
527         (print_class_statistics): Do not print it.
528         * cp-tree.h (build_method_call): Remove declaration.
529         (finish_object_call_expr): Likewise.
530         (build_new_1): Do not use build_method_call.
531         * parser.c (cp_parser_postfix_expression): Use finish_call_expr
532         when the function appearing on the right-hand-side of "." or "->"
533         is not actually a function.
534         * pt.c (tsubst_copy_and_build): Likewise.
535         * semantics.c (finish_object_call_expr): Remove.
537 2004-01-18  Mark Mitchell  <mark@codesourcery.com>
539         PR c++/13710
540         * pt.c (tsubst): Use finish_typeof.
542 2004-01-16  Jason Merrill  <jason@redhat.com>
544         PR c++/11725
545         * except.c (build_throw): In a template, set
546         current_function_returns_abnormally.
548 2004-01-17  Fred Fish  <fnf@intrinsity.com>
550         PR c++/11895
551         * decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
552         except don't call array_type_nelts() with a VECTOR_TYPE.
554 2004-01-16  Jan Hubicka  <jh@suse.cz>
556         * mangle.c (write_mangled_name): Remove inline modifier.
558 2004-01-16  Mark Mitchell  <mark@codesourcery.com>
560         PR c++/13574
561         * decl.c (compute_array_index_type): Fix grammar in comment.
562         * init.c (build_zero_init): Handle zero-sized arrays correctly.
564         PR c++/13178
565         * call.c (name_as_c_string): Print conversion operator names
566         correctly.
568         PR c++/13478
569         * call.c (initialize_reference): Pass -1 for inner parameter to
570         convert_like_real.
572 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
574         PR c++/13407
575         * parser.c (cp_parser_base_specifier): Check for an invalid
576         keyword `typename' and emit an user-friendly error message.
578 2004-01-15  Geoffrey Keating  <geoffk@apple.com>
580         PR pch/13361
581         * cp/lex.c (handle_pragma_interface): Duplicate string from tree.
582         (handle_pragma_implementation): Likewise.
584 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
586         PR c++/9259
587         * typeck.c (build_class_member_access_expr): Allow to access members
588         of the currently open class.
589         (finish_class_member_access_expr): Likewise.
591 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
593         PR c++/13659
594         * name-lookup.c (validate_nonmember_using_decl): Take scope and
595         name by value, instead of computing them.
596         (do_local_using_decl, do_toplevel_using_decl): Add scope and name
597         arguments.  Pass them to validate_nonmember_using_decl.
598         * name-lookup.h (do_local_using_decl): Adjust.
599         (do_toplevel_using_decl): Likewise.
600         * parser.c (cp_parser_using_declaration): Likewise.
601         * pt.c (tsubst_expr): Likewise.
603 2004-01-15  Alexandre Oliva  <aoliva@redhat.com>
605         PR c++/13594
606         PR c++/13658
607         * name-lookup.c (qualified_lookup_using_namespace): Search
608         strongly-associated namespaces first, and only then try other
609         namespaces.
611 2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
613         * Make-lang.in (c++.srcextra): Dummy entry.
615 2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
617         PR c++/8856
618         * parser.c (cp_parser_template_name): Don't try to parse a
619         conversion-function-id, as it cannot be a template-name.
620         (cp_parser_simple_type_specifier): Check for invalid template-ids
621         even after a built-in type.
623 2004-01-14  Jan Hubicka  <jh@suse.cz>
625         PR c++/12850
626         * pt.c (instantiate_decl):  Do not increase function_depth.
628 2004-01-14  Danny Smith  <dannysmith@users,sourceforge.net>
630         PR c++/9021
631         PR c++/11005
632         * parser.c (cp_parser_elaborated_type_specifier): Warn about
633         attributes and discard.
634         * decl.c (xref_tag): Don't overwite existing attributes with
635         NULL_TREE.
637 2004-01-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
639         PR c++/12335
640         * parser.c (cp_parser_lookup_name): Return error_mark_node if there
641         is no destructor while looking up a BIT_NOT_EXPR.
643 2004-01-13  Ian Lance Taylor  <ian@wasabisystems.com>
645         * cxxfilt.c: Remove unused file.
647 2004-01-14  Jan Hubicka  <jh@suse.cz>
649         Partial fix to PR c++/12850
650         * decl2.c (mark_used): Do not proactively instantiate templates
651         when compiling in unit-at-a-time or not optimizing.
652         * optimize.c (maybe_clone_body): Do not increase function depth.
654 2004-01-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
656         PR c++/13474
657         * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.
659 2003-01-12  Steven Bosscher  <stevenb@suse.de>
661         PR c++/13558
662         * parser.c (cp_parser_member_declaration): Any non-type is also
663         not a class or a function.
665 2004-01-12  Jason Merrill  <jason@redhat.com>
667         PR c++/12815
668         * class.c (build_base_path): Do not mark vtable references as
669         TREE_CONSTANT.
670         (build_vtbl_ref_1): Likewise.
672 2004-01-12  Richard Henderson  <rth@redhat.com>
674         PR opt/10776
675         * typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New.
676         (store_init_value): Use it.
677         * decl.c (check_initializer): Expect full initialization code
678         from store_init_value.
679         * init.c (expand_aggr_init_1): Likewise.
680         * decl2.c (maybe_emit_vtables): Abort if runtime init needed.
682 2004-01-12  Mark Mitchell  <mark@codesourcery.com>
684         * class.c (layout_class_type): For non-POD class types, also copy
685         the DECL_SIZE and DECL_MODE of fields to the base class type.
687 2004-01-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
689         PR c++/13289
690         * pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before
691         calling regenerate_decl_from_template.
693 2004-01-12  Scott Brumbaugh  <scottb.lists@verizon.net>
695         PR c++/4100
696         * parser.c (cp_parser_decl_specifier_seq): Add check for a friend
697         decl-specifier occurring along with a class definition.
699 2004-01-12  Ian Lance Taylor  <ian@wasabisystems.com>
701         * parser.c (cp_parser_decl_specifier_seq): Add parenthetical
702         clauses to comments describing declares_class_or_enum.
703         (cp_parser_type_specifier): Set *declares_class_or_enum to 0, not
704         false.
706 2004-01-12  Jan Hubicka  <jh@suse.cz>
708         * pt.c (for_each_template_parm): Do not check for duplicates.
709         (for_each_template_parm): Use walk_tree duplicate checking code.
711 2004-01-11  Ian Lance Taylor  <ian@wasabisystems.com>
713         PR c++/3478
714         * parser.c (cp_parser_decl_specifier_seq): If the first decl_spec
715         is error_mark_node, don't add any more decl_specs.
716         (cp_parser_init_declarator): After committing to a declaration, if
717         the decl_specifiers start with error_mark_node, issue an error and
718         change the type to "int".
720 2004-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
722         PR bootstrap/7817
723         * Make-lang.in: Copy gcc.1 to g++.1 rather than using .so.
725 2004-01-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
727         DR 337
728         PR c++/9256
729         * pt.c (tsubst): Substitution must fail if we are attempting to
730         create an array with element type that is an abstract class type.
731         * decl.c (cp_finish_decl): Strip pointers and array types recursively
732         before calling abstract_virtuals_error.
734 2004-01-09  Alexandre Oliva  <aoliva@redhat.com>
736         * name-lookup.c (qualified_lookup_using_namespace): Consider
737         strong using directives even if we've already found a binding.
739 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
741         * cp-tree.h (cxx_expand_expr): Change prototype.
742         * expr.c (cxx_expand_expr): Add alt_rtl parameter.
744 2004-01-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
746         PR c++/12573
747         * pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
748         looking into them recursively. They can be there because of the
749         new __offsetof__ extension.
751 2004-01-07  Zack Weinberg  <zack@codesourcery.com>
753         * parser.c (cp_parser_save_member_function_body): Mark the
754         definition static.
756 2004-01-05  Mark Mitchell  <mark@codesourcery.com>
758         PR c++/13057
759         * class.c (build_clone): Copy type attributes from the original
760         function to the clone.
762         PR c++/12815
763         * class.c (build_vtbl_ref_1): Do not unconditionally mark vtable
764         references as constant.
766         PR c++/12132
767         * parser.c (cp_parser_explicit_instantiation): Improve error
768         recovery.
769         (cp_parser_require): Improve indication of the error location.
771         PR c++/13451
772         * parser.c (cp_parser_class_head): Reorder logic to check for
773         invalid qualification.
775 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
777         PR c++/13157
778         * name-lookup.c (lookup_using_namespace): Remove spacesp
779         parameter.
780         (unqualified_namespace_lookup): Likewise.
781         (lookup_qualified_name): Adjust accordingly.
782         (lookup_name_real): Likewise.
783         (lookup_arg_dependent): Do not eliminate the namespace of the
784         functions found by unqualified name lookup unless that is the
785         current namespace.
787 2004-01-04  Andrew Pinski  <pinskia@physics.uc.edu>
789         * semantics.c (push_deferring_access_checks): Fix format.
790         (resume_deferring_access_checks): Likewise.
791         (stop_deferring_access_checks): Likewise.
792         (pop_deferring_access_checks): Likewise.
793         (get_deferred_access_checks): Likewise.
794         (pop_to_parent_deferring_access_checks): Likewise.
795         (perform_deferred_access_checks): Likewise.
796         (perform_or_defer_access_check): Likewise.
798 2004-01-04  Richard Henderson  <rth@redhat.com>
800         * call.c (build_over_call): Don't create a save_expr of an
801         aggregate, but rather its address.
803 2004-01-04  Mark Mitchell  <mark@codesourcery.com>
805         PR c++/13529
806         * parser.c (cp_parser_postfix_expression): Allow "." to appear in
807         an offsetof expression.
809         * parser.c (cp_parser_parameter_declaration): Fix comment.
811         PR c++/12226
812         * call.c (CHECK_COPY_CONSTRUCTOR_P): New macro.
813         (reference_binding): Set it when appropriate.
814         (build_temp): New function, split out from ...
815         (convert_like_real): ... here.  Honor CHECK_COPY_CONSTRUCTOR_P.
816         (initialize_reference): Likewise.
818         PR c++/13536
819         * parser.c (cp_parser): Add in_type_id_in_expr_p.
820         (cp_parser_new): Initialize it.
821         (cp_parser_postfix_expression): Set it.
822         (cp_parser_sizeof_operand): Likewise.
823         (cp_parser_parameteR_declaration): Do not commit early to tenative
824         parsers when in_type_id_in_expr_p is set.
826 2004-01-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
828         PR c++/13094
829         * parser.c (cp_parser_template_argument): Don't call
830         make_unbound_class_template directly.
831         (cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
832         UNBOUND_CLASS_TEMPLATE tree node.
834 2004-01-02  Richard Sandiford  <rsandifo@redhat.com>
836         PR target/12729
837         * method.c (use_thunk): Pass the CALL_EXPR through force_target_expr.
839 2004-01-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
841         PR c++/13520
842         * cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro.
843         (DECL_FUNCTION_TEMPLATE_P): Use it.
844         (DECL_CLASS_TEMPLATE_P): Likewise.
845         * parser.c (cp_parser_lookup_name): Add is_template parameter.
846         (cp_parser_type_parameter): Adjust call to cp_parser_lookup_name.
847         (cp_parser_template_name): Likewise.
848         (cp_parser_elaborated_type_specifier): Likewise.
849         (cp_parser_namespace_name): Likewise.
850         (cp_parser_class_name): Likewise.
851         (cp_parser_lookup_name_simple): Likewise.
853 See ChangeLog.3 for earlier changes.