blob: 2bdb9f1abf500732200ac1d2d2ad2d04d4bacb4e [file] [log] [blame]
2001-12-29 Nathan Sidwell <>
* call.c (build_user_type_conversion_1): Use my_friendly_assert
rather than if ... abort.
* cvt.c (convert_to_reference): Likewise.
* semantics.c (setup_vtbl_ptr): Likewise.
* pt.c (lookup_template_class): Comment typo.
2001-12-29 Nathan Sidwell <>
PR c++/5125
* pt.c (push_template_decl_real): Make sure DECL has
2001-12-29 Nathan Sidwell <>
PR c++/335
* init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
for non-reference fields.
* typeck.c (require_complete_type): Use resolve_offset_ref).
2001-12-26 Nathan Sidwell <>
PR c++/196
* parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
2001-12-24 Nathan Sidwell <>
PR c++/160
* typeck.c (build_modify_expr): Remove old unreachable code & tidy
up. Don't stabilize_references when initializing a reference.
2001-12-23 Kaveh R. Ghazi <>
* decl2.c (lang_f_options): Const-ify.
2001-12-20 Joseph S. Myers <>
* (diff_excludes): Remove.
2001-12-19 Nathan Sidwell <>
PR c++/90
* typeck.c (build_function_call_real): Use original function
expression for errors.
2001-12-18 Jason Merrill <>
PR c++/3242
* class.c (add_method): Do compare 'this' quals when trying to match a
used function. Don't defer to another used function.
2001-12-18 Nathan Sidwell <>
* pt.c (instantiate_clone): Remove, fold into ...
(instantiate_template): ... here. Simplify by removing mutual
* typeck2.c (build_m_component_ref): Don't cv qualify the function
pointed to by a pointer to function.
* class.c (delete_duplicate_fields_1): Typo.
2001-12-18 Jason Merrill <>
C++ ABI change: destroy value arguments in caller.
* semantics.c (genrtl_start_function, genrtl_finish_function): Don't
create an extra binding level for the parameters.
* decl.c (store_parm_decls): Don't do parameter cleanups.
2001-12-18 Nathan Sidwell <>
* call.c (build_new_method_call): Use '%#V'.
* error.c (cv_to_string): Use V parameter to determine padding.
2001-12-18 Joseph S. Myers <>
* call.c, decl2.c, init.c: Use "built-in" and "bit-field"
spellings in messages.
2001-12-17 Zack Weinberg <>
* cp-tree.h: Delete #defines for cp_error, cp_warning,
cp_pedwarn, and cp_compiler_error.
* call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
typeck2.c: Change calls to the above macros to use their
language-independent equivalents: error, warning, pedwarn, and
internal_error respectively.
2001-12-16 Neil Booth <>
* decl2.c (finish_file): Remove back_end_hook.
2001-12-16 Joseph S. Myers <>
* ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.
2001-12-15 Joseph S. Myers <>
* lang-options.h: Use American spelling in messages.
2001-12-13 Jason Merrill <>
* (parse.h): Separate rule, just depend on parse.c.
Use cleanups to run base and member destructors.
* init.c (push_base_cleanups): New function, split out from...
(build_delete): Lose !TYPE_HAS_DESTRUCTOR code.
* decl.c (finish_destructor_body): Move vbase destruction code to
(begin_function_body, finish_function_body): New fns.
(finish_function): Move [cd]tor handling and call_poplevel to
(pushdecl): Skip the new level.
* semantics.c (genrtl_try_block): Don't call end_protect_partials.
(setup_vtbl_ptr): Call push_base_cleanups.
* method.c (synthesize_method): Call {begin,end}_function_body.
* pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
* cp-tree.h: Declare new fns.
* parse.y (function_body, .begin_function_body): New nonterminals.
(fndef, pending_inline, function_try_block): Use function_body.
(ctor_initializer_opt, function_try_block): No longer has a value.
(base_init): Remove .set_base_init token.
(.set_base_init, compstmt_or_error): Remove.
* (parse.c): Expect two fewer s/r conflicts.
* optimize.c (maybe_clone_body): Fix parameter updating.
2001-12-12 Jason Merrill <>
* decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
* semantics.c (genrtl_start_function): Don't pass
parms_have_cleanups or push an extra binding level.
(genrtl_finish_function): Lose cleanup_label cruft.
* cp-tree.h (struct cp_language_function): Remove x_ctor_label.
(ctor_label): Remove.
* semantics.c (finish_return_stmt): Lose ctor_label support.
* decl.c (finish_constructor_body, mark_lang_function): Likewise.
* typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
* call.c (build_new_method_call): Let resolves_to_fixed_type_p
check for [cd]tors.
* class.c (fixed_type_or_null, case INDIRECT_REF): Fix.
* decl.c (finish_function): Check VMS_TARGET, not VMS.
* decl.c (start_cleanup_fn): Remove redundant pushlevel.
(end_cleanup_fn): And poplevel.
* semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
if we're in a template.
2001-12-12 Jakub Jelinek <>
THIS_NAME_P): Delete.
* spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
with internal naming scheme.
* error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.
2001-12-12 Nathan Sidwell <>
* decl.c (grokdeclarator): Deprecated implicit typename use.
2001-12-11 Nathan Sidwell <>
PR g++/51
* parse.y (frob_specs): Indicate it is a language linkage which
contained the extern.
* decl.c (grokdeclarator): Allow extern language linkage with
other specifiers.
2001-12-10 Nathan Sidwell <>
PR g++/72
* decl.c (add_binding): Don't reject duplicate typedefs involving
template parameters.
2001-12-10 Neil Booth <>
* parse.y, semantics.c: Similarly.
2001-12-09 Nathan Sidwell <>
PR g++/87
* cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
(copy_args_p): Rename to ...
(copy_fn_p): ... here.
(grok_special_member_properties): New function.
(grok_op_properties): Lose VIRTUALP parameter.
(copy_assignment_arg_p): Remove.
* call.c (build_over_call): Use copy_fn_p.
* decl.c (grokfndecl): Reformat. Adjust call to
(copy_args_p): Rename to ...
(copy_fn_p): ... here. Reject template functions. Check for pass
by value.
(grok_special_member_properties): Remember special functions.
(grok_ctor_properties): Don't remember them here, just check.
(grok_op_properties): Likewise.
(start_method): Call grok_special_member_properties.
* decl2.c (grokfield): Likewise.
(copy_assignment_arg_p): Remove.
(grok_function_init): Don't remember abstract assignment here.
* pt.c (instantiate_class_template): Call
(tsubst_decl): Adjust grok_op_properties call.
2001-12-08 Aldy Hernandez <>
* lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and
2001-12-08 John David Anglin <>
* semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
call to build_aggr_init.
* cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.
2001-12-08 Neil Booth <>
* parse.y: Replace uses of the string non-terminal with STRING.
Don't perform string concatentaion here.
(string): Remove non-terminal.
* semantics.c (finish_asm_stmt): Don't concatenate strings here.
2001-12-05 Jason Merrill <>
* tree.c (cp_start_inlining, cp_end_inlining): New fns.
* pt.c (push_tinst_level): No longer static.
* cp-tree.h: Declare them.
* init.c (resolve_offset_ref): Don't check access for the base
conversion to access a FIELD_DECL.
* cp-tree.h (TYPE_REFFN_P): New macro.
* decl.c (bad_specifiers): Check it, too.
* rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
on the __*_type_info type if we haven't seen a definition.
2001-12-05 Neil Booth <>
* decl.c: Include c-common.h.
(shadow_warning): Move to c-common.c.
2001-12-05 Richard Kenner <>
* decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.
2001-12-04 Nathan Sidwell <>
* pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.
2001-12-04 Nathan Sidwell <>
PR g++/164
* init.c (sort_base_init): Allow binfos to be directly specified.
* method.c (do_build_copy_constructor): Explicitly convert to the
base instance.
(do_build_assign_ref): Likewise.
2001-12-03 Hans-Peter Nilsson <>
* decl.c (xref_basetypes): Don't use C99 construct in tag_code
declaration and initialization.
2001-12-03 Neil Booth <>
* typeck2.c: Remove leading capital from diagnostic messages, as
per GNU coding standards.
2001-12-03 Mumit Khan <>
PR c++/3394
* decl.c (xref_basetypes): Handle attributes between
'class' and name.
2001-12-03 Nathan Sidwell <>
PR g++/3381
* parse.y (named_complex_class_head_sans_basetype): Add new
* (parse.c): Adjust expected conflict count.
2001-12-03 Jason Merrill <>
* class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
immediate binfos for our virtual bases.
2001-12-02 Neil Booth <>
* call.c (build_java_interface_fn_ref): Similarly.
* except.c (is_admissible_throw_operand): Similarly.
* init.c (build_java_class_ref): Similarly.
* xref.c (open_xref_file): Similarly.
2001-12-01 Neil Booth <>
* class.c (finish_struct): Remove trailing periods from messages.
* decl.c (check_tag_decl): Similarly.
* lex.c (cxx_set_yydebug): Similarly.
* typeck2.c (friendly_abort): Similarly.
2001-11-29 Mark Mitchell <>
PR c++/3048
* cp-tree.h (ovl_member): Remove.
* decl2.c (merge_functions): Handle extern "C" functions
* tree.c (ovl_member): Remove.
2001-11-29 Mark Mitchell <>
PR c++/4842
* class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
FUNCTION_DECL, as input.
(mark_overriders): Remove.
(warn_hidden): Rework for the new ABI.
2001-11-29 Mark Mitchell <>
PR c++/3471
* call.c (convert_like_real): Do not build additional temporaries
for rvalues of class type.
2001-11-28 Nathan Sidwell <>
* cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
(DERIVED_FROM_P): Likewise.
(enum base_access): Renumber, add ba_quiet bit mask.
(get_binfo): Remove.
(get_base_distance): Remove.
(binfo_value): Remove.
* call.c (standard_conversion): Use lookup_base.
* class.c (strictly_overrides): Likewise.
(layout_virtual_bases): Likewise.
(warn_about_ambiguous_direct_bases): Likewise.
(is_base_of_enclosing_class): Likewise.
(add_vcall_offset_vtbl_entries_1): Likewise.
* cvt.c (build_up_reference): Adjust comment.
* init.c (build_member_call): Reformat.
* search.c (get_binfo): Remove.
(get_base_distance_recursive): Remove.
(get_base_distance): Remove.
(lookup_base_r): Tweak.
(lookup_base): Add ba_quiet control. Complete the types here.
(covariant_return_p): Use lookup_base.
* tree.c (binfo_value): Remove.
(maybe_dummy_object): Use lookup_base.
* typeck.c (build_static_cast): Use lookup_base.
(get_delta_difference): Likewise.
* typeck2.c (binfo_or_else): Use lookup_base.
(build_scoped_ref): Add back error_mark_check.
(build_m_component_ref): Use lookup_base.
2001-11-29 Joseph S. Myers <>
* (c++.generated-manpages): New dummy target.
2001-11-27 Richard Kenner <>
* (cp-lang.o): Depends on c-common.h.
* cp-lang.c (c-common.h): Include.
* decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
* expr.c (init_cplus_expand): Don't set lang_expand_constant.
2001-11-26 Neil Booth <>
* decl2.c (c_language): Move to c-common.c.
* lex.c (cxx_post_options, cxx_init_options): Use c-common.c
(cxx_init): Update.
2001-11-26 Jason Merrill <>
* call.c (joust): Remove COND_EXPR hack.
2001-11-25 Aldy Hernandez <>
* search.c (lookup_base_r): Declare bk in variable declaration
2001-11-25 Nathan Sidwell <>
PR g++/3145
* class.c (build_vbase_pointer): Remove.
(build_vbase_path): Remove.
(build_base_path): New function.
* cp-tree.h (base_access, base_kind): New enumerations.
(build_base_path): Declare.
(convert_pointer_to_real): Remove.
(convert_pointer_to): Remove.
(lookup_base): Declare.
(convert_pointer_to_vbase): Remove.
* call.c (build_scoped_method_call): Use lookup_base &
build_base_path instead of convert_pointer_to_real,
get_base_distance & get_binfo.
(build_over_call): Likewise.
* cvt.c (cp_convert_to_pointer): Likewise.
(convert_to_pointer_force): Likewise.
(build_up_reference): Likewise.
(convert_pointer_to_real): Remove.
(convert_pointer_to): Remove.
* init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
instead of convert_pointer_to_vbase & build_vbase_path.
(emit_base_init): Use build_base_path instead of
(expand_virtual_init): Lose unrequired conversions.
(resolve_offset_ref): Use lookup_base and build_base_path
instead of convert_pointer_to.
* rtti.c (build_dynamic_cast_1): Use lookup_base &
build_base_path instead of get_base_distance & build_vbase_path.
* search.c (get_vbase_1): Remove.
(get_vbase): Remove.
(convert_pointer_to_vbase): Remove.
(lookup_base_r): New function.
(lookup_base): New function.
* typeck.c (require_complete_type): Use lookup_base &
build_base_path instead of convert_pointer_to.
(build_component_ref): Likewise.
(build_x_function_call): Likewise.
(get_member_function_from_ptrfunc): Likewise.
(build_component_addr): Likewise.
* typeck2.c (build_scoped_ref): Likewise.
2001-11-22 Bryce McKinlay <>
* cp-tree.h (CP_TYPE_QUALS): Removed.
* decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
* dump.c (cp_dump_tree): Use void* dump_info argument to match
lang-hooks prototype.
* call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
CP_TYPE_QUALS changed to cp_type_quals.
* References to c-dump.h changed to tree-dump.h.
(CXX_C_OBJS): Remove c-dump.o.
2001-11-21 Mark Mitchell <>
PR c++/3637
* pt.c (lookup_template_class): Ensure that all specializations
are registered on the list corresponding to the most general
2001-11-20 Mark Mitchell <>
* call.c (non_reference): Add documentation.
(convert_class_to_reference): Do not strip reference types
from conversion operators.
(maybe_handle_ref_bind): Simplify.
(compare_ics): Correct handling of references.
2001-11-19 John Wilkinson <>
* dump.c (dump_op): New function.
dump_op. Dump DECL_MUTABLE, access and staticness for VAR_DECLs.
2001-11-19 Mark Mitchell <>
* semantics.c (finish_sizeof): Make sure that expression created
while processing a template do not have a type.
(finish_alignof): Likewise.
* typeck.c (c_sizeof): Likewise.
(expr_sizeof): Likewise.
2001-11-18 Neil Booth <>
* lex.c (cxx_finish): Call c_common_finish.
(finish_parse): Remove.
2001-11-17 Kriang Lerdsuwanakij <>
* decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
when displaying error message about missing array bounds.
2001-11-17 Kriang Lerdsuwanakij <>
* mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
2001-11-16 Neil Booth <>
* cp-tree.h (print_class_statistics): Restore.
2001-11-15 Jason Merrill <>
* method.c (use_thunk): Don't emit debugging information for thunks.
* parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
* decl.c (make_typename_type): Handle getting a class template.
* search.c (lookup_field_r): A class template is good enough for
* call.c (convert_like_real): Only use cp_convert for the bad part.
(standard_conversion): Also allow bad int->enum.
* typeck.c (ptr_reasonably_similar): Also allow functions to
interconvert. Pointers to same-size integers are reasonably
* cvt.c (convert_to_void): If we build a new COND_EXPR, always
give it void type.
2001-11-15 Nathan Sidwell <>
PR g++/3154
* init.c (sort_base_init): Remove unreachable code.
(expand_member_init): Adjust comment to reflect reality. Simplify
and remove unreachable code.
2001-11-15 Neil Booth <>
* cp-tree.h (init_reswords, cxx_init_decl_processing): New.
(cxx_init): Update prototype.
* decl.c (init_decl_processing): Rename. Move null node init
to its creation time.
* lex.c (cxx_init_options): Update.
(cxx_init): Combine with old init_parse; also call
2001-11-14 Richard Sandiford <>
* decl.c (check_initializer): Try to complete the type of an
array element before checking whether it's complete. Don't
complain about arrays with complete element types but an
unknown size.
(cp_finish_decl): Build the hierarchical constructor before
calling maybe_deduce_size_from_array_init.
2001-11-14 Joseph S. Myers <>
* Change all uses of $(manext) to $(man1ext).
2001-11-13 Nathan Sidwell <>
PR g++/4206
* parse.y (already_scoped_stmt): Remove.
(simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.
2001-11-12 H.J. Lu <>
* cvt.c (ocp_convert): Don't warn the address of a weak
function is always `true'.
2001-11-09 Neil Booth <>
* cp-tree.h (print_class_statistics): Remove.
(cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
cxx_print_identifier, cxx_set_yydebug): New.
* lex.c (set_yydebug): Rename c_set_yydebug.
* ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
lang_print_xnode): Rename.
* tree.c (print_lang_statistics): Rename.
2001-11-09 Kaveh R. Ghazi <>
* class.c (dump_array): Fix format specifier warning.
2001-11-09 Neil Booth <>
* cp-lang.c (LANG_HOOKS_NAME): Override.
(struct lang_hooks): Constify.
* lex.c (cxx_init_options): Update.
(lang_identify): Remove.
* parse.y (language_string): Remove.
2001-11-08 Andreas Franck <>
DEMANGLER_CROSS_NAME): Handle program_transform_name the way
suggested by autoconf.
(c++.install-common): Use the transformed target alias names.
2001-11-06 Neil Booth <>
* Update.
* cp-lang.c: Include langhooks-def.h.
2001-11-04 Kriang Lerdsuwanakij <>
* pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
2001-11-03 Kaveh R. Ghazi <>
* lex.c (copy_lang_type): Add static prototype.
2001-11-02 Kriang Lerdsuwanakij <>
* pt.c (unify): Handle SCOPE_REF.
2001-11-01 Jakub Jelinek <>
* tree.c (cp_copy_res_decl_for_inlining): Adjust
DECL_ABSTRACT_ORIGIN for the return variable.
2001-10-31 Zack Weinberg <>
* Replace $(INTL_TARGETS) with po-generated.
2001-10-28 Joseph S. Myers <>
* ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
semantics.c, spew.c: Fix spelling errors.
2001-10-27 Kriang Lerdsuwanakij <>
* decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.
2001-10-25 Zack Weinberg <>
* cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
2001-10-23 Richard Kenner <>
* cp-lang.c (cxx_get_alias_set): New function.
2001-10-23 Kriang Lerdsuwanakij <>
* cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
* cp-tree.h (make_unbound_class_template): Prototype new function.
* decl.c (make_unbound_class_template): New function.
* decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
* error.c (dump_type): Likewise.
* mangle.c (write_type): Likewise.
* parse.y (template_parm): Likewise.
(template_argument): Use make_unbound_class_template.
* pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
(tsubst): Likewise.
(tsubst_copy): Likewise.
(unify): Likewise.
* tree.c (walk_tree): Likewise.
* typeck.c (comptypes): Likewise.
2001-10-21 Kaveh R. Ghazi <>
* xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
extra calls into fewer ones.
2001-10-18 Alexandre Oliva <>
* decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
Warn when merging inline with attribute noinline.
(start_decl, start_function): Warn if inline and attribute
noinline appear in the same declaration.
2001-10-16 H.J. Lu <>
for tree checking disabled.
2001-10-16 Hans-Peter Nilsson <>
NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.
2001-10-15 Richard Sandiford <>
(unify): Only handle MINUS_EXPR specially if the above flag is set
and the subtracted constant is 1. Clear the flag on recursive calls.
Set it when unifying the maximum value in an INTEGER_TYPE's range.
2001-10-15 Richard Sandiford <>
* decl.c (bad_specifiers): Don't allow exception specifications
on any typedefs.
2001-10-14 Neil Booth <>
* cp/lex.c (init_cp_pragma): Similarly.
2001-10-13 Kriang Lerdsuwanakij <>
* pt.c (lookup_template_class): Build complete template arguments
2001-10-12 Kriang Lerdsuwanakij <>
* cp-tree.h (TYPE_BINFO): Update comment.
(copy_type): Prototype new function.
* lex.c (copy_lang_decl): Gather tree node statistics.
(copy_lang_type): New function.
(copy_type): Likewise.
(cp_make_lang_type): Create lang_type for
* pt.c (tsubst): Use copy_type instead of copy_node.
* search.c (lookup_field_1): Ignore TYPENAME_TYPE.
2001-10-12 Kriang Lerdsuwanakij <>
* pt.c (determine_specialization): Ignore functions without
2001-10-12 Nathan Sidwell <>
PR g++/4476
* typeck2.c (abstract_virtuals_error): Ignore incomplete classes.
2001-10-11 Jason Merrill <>
* typeck2.c (store_init_value): Don't re-digest a bracketed
* class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
2001-10-11 Richard Henderson <>
* class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
of an asm statement.
(build_vtbl_ref_1): Split out from build_vtbl_ref.
(build_vfn_ref): Use it to handle vtable descriptors before
calling build_vtable_entry_ref.
* decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.
2001-10-10 Richard Henderson <>
* parse.y (asm_operand): Allow named operands.
* semantics.c (finish_asm_stmt): Tweek for changed location
of the operand constraint.
2001-10-09 Jason Merrill <>
* call.c (standard_conversion): Add bad conversion between
integers and pointers.
(convert_like_real): Don't use convert_for_initialization for bad
conversions; complain here and use cp_convert.
(build_over_call): Don't handle bad conversions specially.
(perform_implicit_conversion): Allow bad conversions.
(can_convert_arg_bad): New fn.
* cp-tree.h: Declare it.
* typeck.c (convert_for_assignment): Use it.
(ptr_reasonably_similar): Any target type is similar to void.
2001-10-08 Alexandre Oliva <>
* (CXX_OBJS): Added cp-lang.o.
(cp/cp-lang.o): New rule.
* cp-tree.h: Declare hooks.
* tree.c: Make hooks non-static.
(init_tree): Don't initialize hooks here.
* lex.c: Likewise. Move definition of lang_hooks to...
* cp-lang.c: ... new file.
2001-10-08 Richard Henderson <>
* cp-tree.h (struct lang_decl_flags): Remove declared_inline.
(DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.
2001-10-07 Kaveh R. Ghazi <>
* class.c (build_vtable_entry_ref): Const-ify.
* decl.c (predefined_identifier,
initialize_predefined_identifiers): Likewise.
* init.c (build_new_1): Likewise.
* lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
2001-10-05 Alexandre Oliva <>
* optimize.c (struct inline_data): Moved to ../tree-inline.c.
(INSNS_PER_STMT): Likewise.
(remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
(copy_body, initialize_inlined_parameters): Likewise.
(declare_return_variable, inlinable_function_p): Likewise.
(expand_call_inline, expand_calls_inline): Likewise.
(optimize_inline_calls, clone_body): Likewise.
* tree.c (walk_tree): Moved to ../tree-inline.c.
(walk_tree_without_duplicates): Likewise.
(copy_tree_r, remap_save_expr): Likewise.
2001-10-04 Alexandre Oliva <>
* (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
(cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
* cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
(flag_inline_trees): Moved declaration to ../tree-inline.h.
(walk_tree): Moved declaration to ../tree-inline.h.
(walk_tree_without_duplicates, copy_tree_r): Likewise.
(remap_save_expr): Likewise.
* decl.c: Include tree-inline.h.
(lang_mark_tree): Don't mark inlined_fns.
* decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
* optimize.c: Include tree-inline.h.
(optimize_inline_calls): Move declaration to ../tree.h, as
(remap_decl): Use language-independent constructs and hooks.
(remap_block, copy_body_r, declare_return_variable): Likewise.
(inlinable_function_p): Likewise. Don't test for
DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
no longer language-specific.
(optimize_inline_calls): Likewise. Make it non-static. Moved
call of dump_function to...
(optimize_function): Here...
(clone_body): New function, extracted from...
(maybe_clone_body): ... here. Build decl_map locally and pass
it on to clone_body.
* pt.c, semantics.c: Include tree-inline.h.
* tree.c: Likewise.
(cp_walk_subtrees): New language-specific hook for tree inlining.
(cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
cp_is_overload_p, cp_auto_var_in_fn_p,
cp_copy_res_decl_for_inlining): Likewise.
(walk_tree): Move language-specific constructs into...
(cp_walk_subtrees): this new function.
(copy_tree_r): Use language-independent constructs and hooks.
(init_tree): Initialize tree inlining hooks.
(remap_save_expr): Adjust prototype so that the declaration
does not require the definition of splay_tree.
2001-10-03 John David Anglin <>
* rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
to build the declaration instead of the declaration itself.
2001-10-02 Jason Merrill <>
* decl2.c (cxx_decode_option): Add 'else'.
* spew.c (end_input): No longer static.
* cp-tree.h: Declare it.
* parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.
2001-10-02 Joseph S. Myers <>
* call.c (build_over_call), typeck.c (build_function_call_real):
Pass type attributes to check_function_format rather than name or
assembler name. Don't require there to be a name or assembler
name to check formats.
2001-10-02 Joseph S. Myers <>
* decl.c (init_decl_processing): Don't call
init_function_format_info. Initialize lang_attribute_table
(builtin_function): Call decl_attributes.
(insert_default_attributes): New.
2001-10-01 Jason Merrill <>
* decl.c (grokdeclarator): Copy array typedef handling from C
* decl.c (grokdeclarator): Copy too-large array handling from C
2001-09-29 Alexandre Oliva <>
* (target_libs): Added target-gperf, so that we
don't try to build it if C++ is disabled.
2001-09-23 Zack Weinberg <>
* (CXX_OBJS): Take out cp/errfn.o.
(cp/errfn.o): Delete rule.
(cp/error.o): Depend on flags.h.
* errfn.c: Delete file.
* cp-tree.h: Declare warn_deprecated. Remove definitions of
and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
internal_error respectively. Make cp_deprecated into a macro.
Don't define cp_printer typedef or declare cp_printers.
* error.c: Include flags.h.
Delete: struct tree_formatting_info, print_function_argument_list,
print_declaration, print_expression, print_function_declaration,
print_function_parameter, print_type_id, print_cv_qualifier_seq,
print_type_specifier_seq, print_simple_type_specifier,
print_elaborated_type_specifier, print_rest_of_abstract_declarator,
print_parameter_declaration_clause, print_exception_specification,
print_nested_name_specifier, and definition of cp_printers.
(locate_error): New function.
(cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
rewritten in terms of locate_error and diagnostic.c.
(cp_tree_printer): Rename cp_printer; wire up to *_to_string
instead of deleted print_* routines. Handle %C, %L, %O, %Q also.
(init_error): Adjust to match.
2001-09-22 Richard Kenner <>
* (CXX_C_OBJS): Add attribs.o.
2001-09-21 Richard Henderson <>
* class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
(build_vtbl_initializer): Likewise.
(build_vfn_ref): New.
* cp-tree.h: Declare it.
* call.c (build_over_call): Use it.
* decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
* typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
2001-09-21 J"orn Rennecke <>
* decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
2001-09-21 Joseph S. Myers <>
Table-driven attributes.
* decl2.c (cplus_decl_attributes): Only take one attributes
* cp-tree.c (cplus_decl_attributes): Update prototype.
* class.c (finish_struct), decl.c (start_decl, start_function),
decl2.c (grokfield), friend.c (do_friend), parse.y
(parse_bitfield): Update calls to cplus_decl_attributes.
* decl.c (grokdeclarator): Take a pointer to a single ordinary
attribute list.
* decl.h (grokdeclarator): Update prototype.
* decl2.c (grokfield): Take a single ordinary attribute list.
* friend.c (do_friend): Likewise.
* decl.c (shadow_tag, groktypename, start_decl,
start_handler_parms, grokdeclarator, grokparms, start_function,
start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
(process_template_parm, do_decl_instantiation): Pass single
ordinary attribute lists around.
* decl.c (grokdeclarator): Correct handling of nested attributes.
Revert the patch
1998-10-18 Jason Merrill <>
* decl.c (grokdeclarator): Embedded attrs bind to the right,
not the left.
* cp-tree.h (cp_valid_lang_attribute): Remove declaration
(cp_attribute_table): Declare.
* decl.c (valid_lang_attribute): Don't define.
(lang_attribute_table): Define.
(init_decl_processing): Initialize lang_attribute_table instead of
* tree.c (cp_valid_lang_attribute): Remove.
(handle_java_interface_attribute, handle_com_interface_attribute,
handle_init_priority_attribute): New functions.
(cp_attribute_table): New array.
* decl2.c (import_export_class): Don't use
2001-09-15 Gabriel Dos Reis <>
* (cp/error.o): Depend on real.h
* error.c: #include "real.h"
2001-09-15 Kaveh R. Ghazi <>
* mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
2001-09-13 Kaveh R. Ghazi <>
* decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
* pt.c (tsubst_decl): Likewise.
2001-09-12 Kaveh R. Ghazi <>
* decl2.c (lang_f_options): Const-ification.
* lex.c (cplus_tree_code_name): Likewise.
* spew.c (yyerror): Likewise.
2001-09-06 Nathan Sidwell <>
PR c++/3986
* class.c (force_canonical_binfo_r): Check & move an indirect
primary base first.
(force_canonical_binfo): Check that it's not already
(mark_primary_virtual_base): Remove BINFO parameter.
(mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
2001-09-06 Nathan Sidwell <>
* cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
* class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
(layout_class_type): Don't call fixup_inline_methods here ...
(finish_struct_1): ... call it here.
2001-09-04 Mark Mitchell <>
* decl.c (duplicate_decls): Remove code deadling with
* decl2.c (finish_file): Likewise.
* pt.c (instantiate_decl): Likewise.
* semantics.c (expand_body): Don't defer local functions if
they wouldn't be deferred for some other reason. Don't
generate RTL for functions that will not be emitted.
(genrtl_start_function): Remove code deadling with
(genrtl_finish_function): Likewise.
2001-09-04 Nathan Sidwell <>
PR c++/4203
* call.c (build_over_call): Do not optimize any empty base
2001-08-31 Kriang Lerdsuwanakij <>
* error.c (dump_template_decl): Output template parameters
together with their specifiers.
Output `class' prefix for template template parameter.
(dump_decl): Fix formatting.
2001-08-30 Kurt Garloff <>
* optimize.c (inlinable_function_p): Allow only smaller single
functions. Halve inline limit after reaching recursive limit.
2001-08-30 Joern Rennecke <>
Jason Merrill <>
* class.c (build_vtable_entry_ref): Subtract in char*, not
2001-08-23 Jason Merrill <>
* tree.c (cp_build_qualified_type_real): Use get_qualified_type.
(build_cplus_array_type): Use cp_build_qualified_type, not
TYPE_MAIN_VARIANT, to get an unqualified version.
* decl2.c (grok_alignof): Lose.
(build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
* typeck.c (c_alignof): Lose.
* semantics.c (finish_sizeof, finish_alignof): New.
* parse.y: Use them.
* cp-tree.h: Declare them.
2001-08-22 Jason Merrill <>
* pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
* tree.c (cp_statement_code_p): A TAG_DEFN is a statement.
2001-08-19 Jakub Jelinek <>
* typeck2.c (add_exception_specifier): Only require complete type if
not in processing template declaration.
2001-08-18 Kaveh R. Ghazi <>
* decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
GNU_xref_start_scope and GNU_xref_end_scope.
* tree.c (TYPE_HASH): Moved to ../tree.h.
2001-08-16 Mark Mitchell <>
* cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS
2001-08-14 Richard Henderson <>
* class.c, cp-tree.h (build_vfn_ref): Remove.
* call.c, rtti.c: Replace all refernces with build_vtbl_ref.
2001-08-13 Mark Mitchell <>
* call.c (build_over_call): Mark COMPOUND_EXPRs generated for
empty class assignment as having side-effects to avoid
spurious warnings.
2001-08-13 Zack Weinberg <>
* (cp/except.o): Add libfuncs.h to dependencies.
* except.c: Include libfuncs.h.
2001-08-11 Gabriel Dos Reis <>
* decl.c (grokdeclarator): Clarify diagnostic message.
2001-08-13 Kriang Lerdsuwanakij <>
* decl2.c (do_nonmember_using_decl): Replace using directive
with using declaration in the error message.
2001-08-11 Kriang Lerdsuwanakij <>
* pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
criterion to avoid rebuilding expression tree instead of
2001-08-07 Jason Merrill <>
Support named return value optimization for inlines, too.
* decl.c (finish_function): Nullify returns here.
* semantics.c (genrtl_start_function): Not here.
(cp_expand_stmt): Don't mess with CLEANUP_STMTs.
(nullify_returns_r): No longer static. Just clear RETURN_EXPR.
Also nullify the CLEANUP_STMT for the nrv.
* cp-tree.h: Declare it.
* optimize.c (declare_return_variable): Replace the nrv with the
return variable.
* typeck.c (check_return_expr): Be more flexible on alignment check.
Ignore cv-quals when checking for a matching type.
2001-08-09 Richard Henderson <>
* decl2.c (finish_objects): Use target hooks instead of
assemble_constructor and assemble_destructor.
2001-08-08 John David Anglin <>
* g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.
2001-08-07 Nathan Sidwell <>
PR c++/3820
* call.c (build_over_call): Be careful when copy constructing
or assigning to an empty class.
* class.c (check_bases_and_members): It has a
COMPLEX_ASSIGN_REF if it has a vptr.
(layout_class_type): Don't add empty class padding to
(finish_struct_1): Don't add the VFIELD either.
* cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
2001-08-07 Jason Merrill <>
* tree.c (walk_tree): Walk siblings even if !walk_subtrees.
2001-08-06 Richard Henderson <>
* decl2.c (finish_objects): Pass a symbol_ref and priority to
assemble_{constructor,destructor}. Remove priority handling.
2001-08-05 Gabriel Dos Reis <>
Don't allow template-id in using-declaration.
* decl2.c (validate_nonmember_using_decl): Handle template-ids.
(do_class_using_decl): Likewise.
2001-08-04 Neil Booth <>
* cp/spew.c (read_token): No need to pop buffers.
2001-08-02 Stan Shebs <>
* cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
(fnaddr_from_vtable_entry): Remove decl.
* method.c (use_thunk): Update comment.
2001-08-01 Andrew Cagney <>
* repo.c (get_base_filename): Change return value to const char
2001-08-02 Nathan Sidwell <>
Kill -fhonor-std.
* NEWS: Document.
* cp-tree.h (flag_honor_std): Remove.
(CPTI_FAKE_STD): Remove.
(std_node): Remove comment about it being NULL.
(fake_std_node): Remove.
* decl.c (in_fake_std): Remove.
(walk_namespaces_r): Remove fake_std_node check.
(push_namespace): Remove in_fake_std code.
(pop_namespace): Likewise.
(lookup_name_real): Remove fake_std_node check.
(init_decl_processing): Always create std_node. Always add
std:: things there.
(builtin_function): Always put non '_' fns in std.
* decl2.c (flag_honor_std): Remove.
(lang_f_options): Remove honor-std.
(unsupported_options): Add honor-std.
(set_decl_namespace): Remove fake_std_node check.
(validate_nonmember_using_decl): Likewise.
(do_using_directive): Likewise.
(handle_class_head): Likewise.
* dump.c (cp_dump_tree): Likewise.
* except.c (init_exception_processing): Adjust.
* init.c (build_member_call): Remove fake_std_node check.
(build_offset_ref): Likewise.
* lang-options.h: Remove -fhonor-std, -fno-honor-std.
* rtti.c (init_rtti_processing): Adjust.
2001-07-31 Alexandre Petit-Bianco <>
* tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
operand while calling cp_tree_equal.
2001-07-31 Nathan Sidwell <>
The 3.0 ABI no longer has vbase pointer fields.
* method.c (do_build_copy_constructor): Adjust.
(do_build_assign_ref): Adjust.
* search.c (lookup_field_r): Adjust.
* typeck.c (build_component_ref): Adjust.
The 3.0 ABI always has a vtable pointer at the start of every
polymorphic class.
* rtti.c (build_headof_sub): Remove.
(build_headof): Adjust.
(get_tinfo_decl_dynamic): No need to check flag_rtti
here. Adjust.
(create_real_tinfo_var): Explain why we need a hidden name.
2001-07-31 Nathan Sidwell <>
PR c++/3631
* class.c (update_vtable_entry_for_fn): The fixed adjustment
of a virtual thunk should be from declaring base.
2001-07-31 Nathan Sidwell <>
* class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
the shared virtual base, so preserving inheritance graph order.
2001-07-30 Andreas Jaeger <>
* decl2.c: Remove unused var global_temp_name_counter.
2001-07-28 Richard Henderson <>
* method.c (pending_inlines): Remove.
2001-07-27 Nathan Sidwell <>
* class.c (mark_primary_virtual_base): Don't adjust base
offsets here.
(dfs_unshared_virtual_bases): Adjust them here.
(mark_primary_bases): Explain why we adjust at the end.
2001-07-27 Nathan Sidwell <>
* class.c (finish_struct_1): When copying the primary base's
VFIELD, make sure we find it is at offset zero.
2001-07-26 Kriang Lerdsuwanakij <>
* pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
tsubst_expr for default template arguments.
2001-07-26 Nathan Sidwell <>
PR c++/3621
* spew.c (yylex): Only copy the token's lineno, if it is
2001-07-26 Nathan Sidwell <>
PR c++/3624
* call.c (resolve_args): Simplify, call
(build_new_op): Resolve and convert from reference ARG1
earlier. Adjust ARG2 & ARG3 resolve and conversion.
2001-07-26 Nathan Sidwell <>
* decl.c (last_function_parm_tags): Remove.
(current_function_parm_tags): Remove.
(init_decl_processing): Adjust.
(start_function): Adjust.
(store_parm_decls): Adjust.
PR c++/3152
* decl.c (grokdeclarator): Detect when a function typedef is
declaring a function, and create last_function_parms correctly.
2001-07-25 Jason Merrill <>
* call.c (joust): Only prefer a non-builtin candidate to a builtin
one if they have the same signature.
* cvt.c (build_up_reference): Take DECL parm. Check TREE_STATIC on
it rather than toplevel_bindings_p. Give it a mangled name if static.
(convert_to_reference): Adjust.
* decl2.c (get_temp_name): Lose.
* mangle.c (mangle_ref_init_variable): New fn.
(mangle_guard_variable): Strip the ref-init header.
* cp-tree.h: Adjust.
* decl.c (cp_finish_decl): Add the DECL_STMT after processing the
(grok_reference_init): Always use DECL_INITIAL.
2001-07-25 Nathan Sidwell <>
PR c++/3416
* call.c (build_conditional_expr): Recheck args after
* cp-tree.h (build_conditional_expr): Move to correct file.
* typeck.c (decay_conversion): Diagnose any unknown types
reaching here.
(build_binary_op): Don't do initial decay or default
conversions on overloaded functions.
(build_static_cast): Don't do a decay conversion here.
2001-07-25 Nathan Sidwell <>
PR c++/3543
* typeck.c (condition_conversion): Resolve an OFFSET_REF.
* expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
2001-07-25 Nathan Sidwell <>
* class.c (build_vtbl_or_vbase_field): Remove, move into ...
(create_vtbl_ptr): ... here.
2001-07-25 Nathan Sidwell <>
* class.c (build_vbase_offset_vbtl_entries): Look for
non-primary base of which we are a sub vtable.
2001-07-24 Phil Edwards <>
* semantics.c (finish_this_expr): Remove unused code.
2001-07-24 Nathan Sidwell <>
Simplify rtti, now we've only one ABI.
* cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
(tinfo_decl_id, tinfo_var_id): Remove.
(get_typeid_1): Remove.
* rtti.c
(init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
(typeid_ok_p): New function.
(build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
(get_tinfo_decl): Remove old abi documentation.
(tinfo_from_decl): Remove.
(get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
(get_typeid_1): Remove.
(get_base_offset): Remove.
(synthesize_tinfo_var): Absorb get_base_offset.
(create_real_tinfo_var): Don't use tinfo_decl_id.
2001-07-23 Graham Stott <>
* cp/class.c (type_requires_array_cookie): Fix use of uninitialized
variable has_two_argument_delete_p.
2001-07-21 Nathan Sidwell <>
Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
* cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
(delta2_identifier): Remove.
(index_identifier): Remove.
(pfn_or_delta2_identifier): Remove.
(flag_vtable_thunks): Remove.
(vfunc_ptr_type_node): Adjust.
(build_vfn_ref): Lose first parameter.
(fixup_all_virtual_upcast_offsets): Remove.
* decl.c (initialize_predefined_identifiers): Remove
delta2_identifier, index_identifier, pfn_or_delta2_identifier.
(init_decl_processing): Remove no-vtable-thunk code.
* decl2.c (flag_vtable_thunks): Remove.
(mark_vtable_entries): Remove no-vtable-thunk code.
* error.c (dump_decl): Remove no-vtable-thunk code.
(dump_expr): Adjust ptr to member function code.
* init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
* rtti.c (build_headof): Remove no-vtable-thunk code.
(get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
* search.c (get_base_distance): Remove expand_upcast_fixups case.
(virtual_context) Remove.
(expand_upcast_fixups): Remove.
(fixup_virtual_upcast_offsets): Remove.
(fixup_all_virtual_upcast_offsets): Remove.
* typeck.c (get_member_function_from_ptrfunc): Remove
no-vtable-thunk code.
* call.c (build_over_call): Adjust call to build_vfn_ref.
* class.c (build_vfn_ref): Lose first parameter. Remove
no-vtable-thunk code.
(build_rtti_vtbl_entries): Remove no-vtable-thunk code.
(build_vtable_entry): Remove no-vtable-thunk code.
2001-07-20 Nathan Sidwell <>
Remove old-abi remnants. Remove comments about old abi
behavior. Remove references to 'new-abi' in comments.
* cp-tree.h: Adjust comments.
(vbase_offsets_in_vtable_p): Delete.
(vcall_offsets_in_vtable_p): Delete.
(vptrs_present_everywhere_p): Delete.
(all_overridden_vfuns_in_vtables_p): Delete.
(merge_primary_and_secondary_vtables_p): Delete.
(init_vbase_pointers): Remove.
* class.c: Adjust coments.
(build_vbase_pointer_fields): Delete.
(build_vbase_pointer): Remove old-abi code.
(build_secondary_vtable): Likewise.
(modify_all_vtables): Likewise.
(create_vtable_ptr): Likewise.
(layout_class_type): Likewise.
(finish_struct_1): Likewise.
(finish_vtbls): Likewise.
(dfs_finish_vtbls): Delete.
(build_vbase_offset_vtbl_entries): Remove old-abi code.
* cvt.c: Adjust comments.
* decl.c: Adjust comments.
* decl2.c: Adjust comments.
* init.c: Adjust comments.
(construct_virtual_bases): Remove old-abi code.
* lang-specs.h: Remove -fno-new-abi.
* mangle.c: Adjust comments.
* rtti.c: Adjust comments.
(get_base_offset): Remove old-abi-code.
* search.c: Adjust comments.
(dfs_init_vbase_pointers): Remove.
(dfs_vtable_path_unmark): Remove.
(init_vbase_pointers): Remove.
* semantics.c: Adjust comments.
(emit_associated_thunks): Remove old-abi code.
* typeck.c: Adjust comments.
2001-07-20 Daniel Berlin <>
* (cp/optimize.o): Depend on $(PARAMS_H), not
2001-07-19 Mark Mitchell <>
* class.c (finish_struct_anon): Forbid nested classes.
2001-07-19 Neil Booth <>
* decl2.c: Don't include dwarfout.h and dwarf2out.h.
* optimize.c: Include debug.h.
(maybe_clone_body): Use debug hook.
* semantics.c: Include debug.h.
(expand_body): Use debug hook.
2001-07-19 Neil Booth <>
* spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
2001-07-18 Mark Mitchell <>
* class.c (type_requires_array_cookie): New function.
(check_methods): Don't try to figure out whether the type needs a
cookie here.
(check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
* cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
* pt.c (instantiate_class_template): Don't set
* NEWS: Document ABI changes from GCC 3.0.
2001-07-18 Xavier Delacour <>,
Gerald Pfeifer <>
* NEWS (Changes in GCC 3.0): Fix typo.
2001-07-13 Joseph S. Myers <>
* decl2.c (cplus_decl_attributes): Take a pointer to the node to
which attributes are to be attached, and a flags argument. Update
call to decl_attributes.
(grokfield): Update call to decl_attributes.
* class.c (finish_struct): Update call to cplus_decl_attributes.
* cp-tree.h (cplus_decl_attributes): Update prototype.
* decl.c (start_decl, grokdeclarator, start_function): Update
calls to decl_attributes and cplus_decl_attributes.
* friend.c (do_friend): Update call to cplus_decl_attributes.
* parse.y (parse_bitfield): Update call to cplus_decl_attributes.
2001-07-12 Mark Mitchell <>
* decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
for `register' variables with an asm-specification.
2001-07-11 Mark Mitchell <>
* semantics.c (finish_asm_stmt): Mark the output operands
to an asm addressable, if necessary.
2001-07-11 Ben Elliston <>
* Revert this change -- there is a subtle bug.
PR c++/80
* decl.c (finish_enum): New "attributes" argument; pass it to
cplus_decl_attributes. Use a narrower type if the enum is packed.
* cp-tree.h (finish_enum): Adjust prototype.
* parse.y (enum_head): New non-terminal.
(structsp): Use it. Enums now may be preceded or followed by
optional attributes -- pass their chained tree to finish_enum().
* pt.c (tsubst_enum): Pass NULL_TREE for the new argument.
2001-07-10 Mark Mitchell <>
* pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope
2001-07-10 Jason Merrill <>
* semantics.c (cp_expand_stmt): Fix for null
2001-07-10 Jan van Male <>
* call.c (build_op_delete_call): Initialize fn.
(convert_like_real): Delete conditional.
(joust): Initialize *w and *l.
* class.c: Add prototype for binfo_ctor_vtable.
(get_primary_binfo): Initialize result.
* init.c (build_java_class_ref): Initialize name.
2001-07-09 Erik Rozendaal <>
* typeck.c (unary_complex_lvalue): Do not duplicate the
argument to modify, pre-, or post-increment when used as an
lvalue and when the argument has side-effects.
2001-07-08 Joseph S. Myers <>
* decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
(start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES. Call
cplus_decl_attributes even if attrs is NULL.
* friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
2001-07-08 Joseph S. Myers <>
* decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
calls to decl_attributes.
2001-07-06 Ira Ruben <>
* cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should
2001-07-05 Kriang Lerdsuwanakij <>
* cp-tree.h (copy_template_template_parm): Rename to ...
(bind_template_template_parm): ... here.
* tree.c (copy_template_template_parm): Rename to ...
(bind_template_template_parm): ... here. Remove the case when
(copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
* pt.c (lookup_template_class): Adjust.
2001-07-05 Jason Merrill <>
* cvt.c (convert_lvalue): New fn.
* cp-tree.h: Declare it.
* method.c (do_build_assign_ref): Use it.
(do_build_copy_constructor): Convert parm to base types
before calling base constructors.
* typeck.c (check_return_expr): Check DECL_ALIGN instead of
DECL_USER_ALIGN. Check flag_elide_constructors instead of
* semantics.c (cp_expand_stmt): Don't destroy the named return value.
2001-07-02 Nathan Sidwell <>
* optimize.c (optimize_inline_calls): New function, broken out
of ...
(optimize_function): ... here. Call it. Don't inline if it is
a thunk.
(dump_function): Print name of dump flag causing this dump.
* semantics.c (expand_body): Move thunk inline check to
2001-06-29 Joseph S. Myers <>
* typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
(comptypes): Use target.comp_type_attributes.
2001-06-29 Nathan Sidwell <>
* cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.
2001-06-28 Gabriel Dos Reis <>
* error.c (lang_print_error_function): Add a `diagnostic_context *'
parameter. Tweak.
2001-06-27 Neil Booth <>
* decl2.c (import_export_class): Update.
2001-06-26 Gabriel Dos Reis <>
* error.c (init_error): Adjust settings.
2001-06-26 Gabriel Dos Reis <>
* error.c (init_error): Adjust settings.
2001-06-19 Richard Sandiford <>
* except.c (initialize_handler_parm): Expect __cxa_begin_catch to
return pointers to data members by reference rather than by value.
2001-06-18 Jason Merrill <>
Implement the Named Return Value optimization.
* cp-tree.h (struct cp_language_function): Add x_return_value.
(current_function_return_value): Now a macro.
* decl.c: Don't define it.
(define_label, finish_case_label): Don't clear it.
(init_decl_processing): Don't register it with GC.
* semantics.c (genrtl_finish_function): Don't check it for
no_return_label. Copy the RTL from the return value to
current_function_return_value and walk, calling...
(nullify_returns_r): ...this new fn.
* typeck.c (check_return_expr): Set current_function_return_value.
2001-06-15 Jason Merrill <>
* class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
sharing a ctor vtable with. Merge code for cases 1 and 2.
(binfo_ctor_vtable): New fn.
(build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.
2001-06-14 Jason Merrill <>
* class.c (dfs_find_final_overrider): Fix logic.
* class.c (update_vtable_entry_for_fn): Uncomment optimization to use
virtual thunk instead of non-virtual.
(get_matching_virtual): Uncomment.
* pt.c (unify): Don't recurse between the POINTER_TYPE and the
OFFSET_TYPE. If we're adding cv-quals, the extra ones would be on
PARM, not ARG.
2001-06-14 Nathan Sidwell <>
* class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
we've not emerged from the hierarchy of RTTI_BINFO on reaching
a non-virtual base.
2001-06-13 Mark Mitchell <>
* NEWS: Update release number.
2001-06-12 Nathan Sidwell <>
PR c++/3130, c++/3131, c++/3132
* cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
* class.c (force_canonical_binfo_r): Move
virtual bases unless they're primary and what they're primary
too has been moved.
(dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
derived binfo.
(mark_primary_bases): Use BINFO_UNSHARED_MARKED.
(layout_nonempty_base_or_field): Add most derived type
parameter. Adjust.
(layout_empty_base): Likewise.
(build_base_field): Likewise.
(build_base_fields): Likewise.
(propagate_binfo_offsets): Add most derived type
parameter. Skip non canonical virtual bases too.
(dfs_set_offset_for_unshared_vbases): Don't skip primary
bases. Do skip canonical bases.
(layout_virtual_bases): Adjust.
(layout_class_type): Adjust.
(dfs_get_primary_binfo): Build list of virtual primary base
(get_primary_binfo): Check that the shared virtual primary
base candidate was found first.
(accumulate_vtbl_inits): Don't do anything for non-vptr
containing binfos. For case 1 primary virtual bases, keep
checking that we've not emerged from the hierarchy of RTTI_BINFO.
2001-06-12 Nathan Sidwell <>
PR c++/3089
* class.c (dfs_accumulate_vtbl_inits): Always walk down the
hierarchy looking for primary bases for a ctor
vtable. Recursively call oneself, if we meet our primary via
this route and haven't met it yet via inheritance graph order.
2001-06-11 Mark Mitchell <>
* lang-options.h: Emit documentation for -fno-honor-std, not
2001-06-10 Alexandre Oliva <>
* typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
Don't clobber delta.
(expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
2001-06-10 Mark Mitchell <>
Gabriel Dos Reis <>
* (cp/call.o): Depend on diagnostic.h
(cp/typeck.o): Depend on diagnostic.h
(cp/typeck2.o): Depend on diagnostic.h
(cp/repo.o): Depend on dignostic.h
* typeck.c: #include diagnostic.h
(convert_for_initialization): Remove extern declaration for
warningcount and errorcount.
* call.c: #include diagnostic.h
(convert_like_real): Remove extern declaration for warnincount and
* repo.c: #include diagnostic.h
* typeck2.c: #include diagnostic.h
2001-06-08 Nathan Sidwell <>
* decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
in previous change.
2001-06-08 Nathan Sidwell <>
PR c++/2929
* friend.c (do_friend): Use push_decl_namespace for classes at
namespace scope.
2001-06-08 Nathan Sidwell <>
Jason Merrill <>
PR c++/3061
* class.c (build_secondary_vtable): Use assert, rather than an error
(dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
(dfs_accumulate_vtbl_inits): A lost primary virtual base may
be between ORIG_BINFO and RTTI_BINFO, but neither of them.
Don't set BINFO_VTABLE for a primary virtual base.
2001-06-07 Mark Mitchell <>
* decl.c (duplicate_decls): Update source position information
when a template function is defined.
2001-06-07 Phil Edwards <>
* lang-specs.h: Move -D_GNU_SOURCE to config/linux.h.
2001-06-07 Nathan Sidwell <>
PR c++/2914
* decl.c (pushtag): Don't push into a complete type's scope.
2001-06-06 Jason Merrill <>
(struct lang_decl_flags): Lose generate_with_vtable_p.
* class.c (copy_virtuals): Adjust.
* decl2.c (mark_vtable_entries): Adjust.
* method.c (make_thunk, build_vtable_entry): Adjust.
* class.c (update_vtable_entry_for_fn): Only look as far as the
first defining class.
(build_vtbl_initializer): Put nothing in the slot for a function only
defined in a lost primary virtual base.
(add_vcall_offset_vtbl_entries_1): Use the same code for
the lost primary case and the normal case.
(dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
(get_vfield_offset, get_derived_offset): Lose.
(dfs_find_final_overrider): Use look_for_overrides_here.
(get_matching_virtual): New fn.
* semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
* search.c (look_for_overrides_here): Split out from...
(look_for_overrides_r): Here.
* class.c (find_final_overrider): Return error_mark_node on error.
* decl2.c (key_method): #if 0 accidental change.
2001-06-06 John David Anglin <>
* call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
(build_over_call): Likewise.
* decl.c (grokparms): Likewise.
* pt.c (tsubst_decl): Likewise.
* typeck.c (convert_arguments): Likewise.
2001-06-05 Mark Mitchell <>
* semantics.c (begin_class_definition): Robustify.
* pt.c (instantiate_decl): Tell the repository code about the
clones, not the cloned functions.
* repo.c (repo_template_used): Explicitly instantiate the cloned
function, not the clones.
2001-06-05 Nathan Sidwell <>
* call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
ICS_BAD_FLAG on created conversion.
(compare_ics): Break out rank.
2001-06-05 Nathan Sidwell <>
* decl.c (xref_tag): Remove extraneous %s on dependent name
lookup warning.
2001-06-05 Nathan Sidwell <>
* class.c (layout_vtable_decl): Fix off by one error on
(build_vtt): Likewise.
(build_ctor_vtbl_group): Likewise.
2001-06-05 Nathan Sidwell <>
* class.c (maybe_indent_hierarchy): New function.
(dump_class_hierarchy_r): Add flags. Dump extra binfo
information, if enabled. Use maybe_indent_hierarchy. Adjust
output format.
(dump_class_hierarchy): Adjust prototype. Adjust output format.
(dump_array, dump_vtable, dump_vtt): New functions.
(finish_struct_1): Adjust hierarchy dumping.
(initialize_vtable): Call dump_vtable.
(build_vtt): Call dump_vtt.
(build_ctor_vtbl_group): Call dump_vtable.
* decl2.c (flag_dump_class_layout): Remove.
(cxx_decode_option): Remove dump translation unit
and dump class hierarchy check. Call dump_switch_p.
(finish_file): Adjust dumping.
(dump.c): Only dump base classes if not TDF_SLIM.
Only dump namespace members if not TDF_SLIM.
* optimize.c (dump_function): New function.
(optimize_function): Call dump_function.
* semantics.c (expand_body): Use dump_enabled_p.
2001-06-01 Nathan Sidwell <>
PR g++/2936
Part missed from first commit
* decl2.c (finish_anon_union): Copy context.
2001-05-30 Nathan Sidwell <>
PR g++/2936
* optimize.c (remap_decl): Remap anonymous aggregate members too.
2001-05-26 Nathan Sidwell <>
PR g++/2823
* semantics.c (expand_body): Don't optimize thunks.
2001-05-25 Sam TH <>
* cp-tree.h lex.h: Fix header include guards.
2001-05-25 Mark Mitchell <>
* decl.c (init_decl_processing): Tweak.
2001-05-24 Mark Mitchell <>
* decl.c (duplicate_decls): Tidy.
(init_decl_processing): Always set flag_no_builtin.
2001-05-24 Nathan Sidwell <>
PR c++/2184
* decl2.c (do_local_using_decl): Push the decls, even in a
2001-05-22 Mark Mitchell <>
* optimize.c (initialize_inlined_parameters): Don't set
TREE_READONLY for a VAR_DECL taking the place of an inlined
2001-05-22 Jason Merrill <>
* class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
* tree.c (cp_valid_lang_attribute): Warn about use of com_interface
2001-05-22 Joseph S. Myers <>
* parse.y: Refer to compound literals as such, not as
2001-05-21 Mark Mitchell <>
* call.c (build_op_delete_call): Ignore exception-specifications
when looking for matching delete operators.
* init.c (build_new_1): Compute whether or not the allocation
function used is a placement allocation function or not, and
communicate this information to build_op_delete_call.
2001-05-21 Jason Merrill <>
* class.c (build_vtable_entry_ref): Lose vtbl parm. Fix for new abi.
(build_vtbl_ref): Adjust.
(dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
* decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
Re-add vtable-gc.
(unsupported_options): Correspondingly.
* decl2.c (maybe_make_one_only): Check flag_weak, not
* cp-tree.def (START_CATCH_STMT): Lose.
* dump.c (cp_dump_tree): Don't dump it. Do dump HANDLER_PARMS.
* tree.c (cp_statement_code_p): Don't case it.
* semantics.c (cp_expand_stmt): Likewise.
* cp-tree.h (START_CATCH_TYPE): Lose.
* except.c (expand_start_catch_block): Don't start any blocks.
Return the type.
(expand_end_catch_block): Don't end any blocks.
* parse.y (handler): Don't pass anything from finish_handler_parms
to finish_handler.
* pt.c (tsubst_expr): Likewise.
* semantics.c (begin_handler): Call note_level_for_catch here.
(finish_handler_parms): Don't return anything.
(genrtl_catch_block, begin_catch_block): Lose.
(genrtl_handler): Call expand_start_catch here.
2001-05-18 Jason Merrill <>
* class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
(get_vtable_decl, build_vtt): Not here.
2001-05-20 Nathan Sidwell <>
PR c++/2781
* optimize.c (update_cloned_parm): Copy addressability and other
2001-05-20 Kriang Lerdsuwanakij <>
* pt.c (determine_specialization): Ignore artificial functions.
2001-05-20 Neil Booth <>
* cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
(C_RID_CODE): Remove.
* lex.c (cxx_init_options): Call set_identifier_size. Update.
(init_parse): Don't do it here.
2001-05-18 Diego Novillo <>
* decl2.c (finish_objects): Use the original SYMBOL_REF from the
function declaration to avoid stripping the symbol's attributes.
2001-05-18 Nathan Sidwell <>
* decl.c (pushdecl): Adjust error string.
(xref_tag): Adjust friend class injection warning. Remove the
inherited name from the class shadowed scope.
2001-05-17 Mark Mitchell <>
* except.c (cp_protect_cleanup_actions): New function.
(init_exception_processing): Don't set protect_cleanup_actions
here. Do set lang_protect_cleanup_actions.
2001-05-16 Nathan Sidwell <>
* spew.c (read_token): Call yyerror on all unexpected tokens.
2001-05-16 Nathan Sidwell <>
* init.c (member_init_ok_or_else): Take a tree rather than
string for name.
(expand_member_init): Adjust.
2001-05-14 Nick Clifton <>
* decl.c (duplicate_decls): Suppress warning about duplicate
decls if the first decl is a friend.
2001-05-12 Zack Weinberg <>
* except.c (choose_personality_routine): Export. Add
explanatory comment. Take an enum languages, not a boolean.
(initialize_handler_parm): Adjust to match.
* cp-tree.h: Prototype choose_personality_routine.
* lex.c (handle_pragma_java_exceptions): New function.
(init_cp_pragma): Register #pragma GCC java_exceptions.
2001-05-12 Neil Booth <>
* method.c (build_mangled_C99_name): Remove unused prototype.
2001-05-12 Alexandre Oliva <>
* cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
* typeck.c (get_member_function_from_ptrfunc,
build_ptrmemfunc, expand_ptrmemfunc_cst): Take
Reverted Geoff Keating's 2001-05-03's patch.
2001-05-11 Ira Ruben <>
* cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
2001-05-11 Neil Booth <>
* cp-tree.h (finish_label_expr, lookup_label): Delete.
* parse.y: Update for '&&'; don't issue warning here.
* semantics.c (finish_label_expr): Delete.
2001-05-07 Mark Mitchell <>
* splay-tree.h (splay_tree_max): New function.
(splay_tree_min): Likewise.
2001-05-03 Geoffrey Keating <>
* cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
(pfn_vflag_identifier): Define.
Update comment about layout of pointer functions.
(build_ptrmemfunc1): Update prototype.
(expand_ptrmemfunc_cst): Update prototype.
* decl.c (initialize_predefined_identifiers): Initialize
(build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
an extra field to the type.
* expr.c (cplus_expand_constant): Pass 'flag' between
expand_ptrmemfunc_cst and build_ptrmemfunc1.
* typeck.c (get_member_function_from_ptrfunc): When
FUNCTION_BOUNDARY < 16, look at additional field to determine
if a pointer-to-member is a real pointer or a vtable offset.
(build_ptrmemfunc1): Add new parameter to contain extra field.
(build_ptrmemfunc): Pass the extra field around.
(expand_ptrmemfunc_cst): Add new parameter to return extra field.
(pfn_from_ptrmemfunc): Ignore the extra field.
2001-05-03 Mark Mitchell <>
* cp-tree.h (flag_inline_trees): Update documentation.
* decl.c (init_decl_processing): Adjust handling of
flag_inline_functions and flag_inline_trees to support -O3.
(grokfndecl): Set DECL_INLINE on all functions if that's what
the user requested.
(save_function_data): Clear DECL_INLINE in
current_function_cannot_inline is non-NULL.
* decl2.c (flag_inline_trees): Update documentation.
2001-05-03 Nathan Sidwell <>
* dump.c (cp_dump_tree, USING_STMT case): New case.
* tree.c (cp_statement_code_p): Add USING_STMT.
* decl2.c (do_using_directive): Add the using directive statement.
* tree.c (walk_tree): Reformat an if block.
2001-05-02 Mark Mitchell <>
* decl.c (compute_array_index_type): Don't try to do anything with
the indices when processing a template.
2001-05-02 Kaveh R. Ghazi <>
* call.c: NULL_PTR -> NULL.
* class.c: Likewise.
* cvt.c: Likewise.
* decl.c: Likewise.
* decl2.c: Likewise.
* except.c: Likewise.
* init.c: Likewise.
* rtti.c: Likewise.
* search.c: Likewise.
* tree.c: Likewise.
* typeck.c: Likewise.
* typeck2.c: Likewise.
2001-05-02 Mark Mitchell <>
* decl2.c (do_using_directive): Revert previous patch.
2001-05-01 Nathan Sidwell <>
* cp-tree.def (USING_STMT): New statement node.
* cp-tree.h (USING_STMT_NAMESPACE): New macro.
* decl2.c (do_using_directive): Add USING_STMT to statement
tree. Don't emit errors when processing template decl.
* pt.c (tsubst_expr, USING_STMT case): New case.
* semantics.c (cp_expand_stmt, USING_STMT case): New case.
2001-05-01 Nathan Sidwell <>
* call.c (build_new_op): Convert args from reference here.
(build_conditional_expr): Don't convert here.
2001-05-01 Nathan Sidwell <>
* spew.c (last_token_id): New static variable.
(read_token): Set it here.
(yyerror): Use it here.
2001-04-30 Richard Henderson <>
* cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
* decl.c: Likewise.
2001-04-30 Mark Mitchell <>
* gxxint.texi: Remove.
* Remove all traces of gxxint.texi.
2001-04-30 Mark P Mitchell <>
* decl2.c (start_static_initialization_or_destruction): Correct
logic to handle the -fno-use-cxa-atexit case.
2001-04-30 Mark Mitchell <>
* optimize.c (update_cloned_parm): New function.
(maybe_clone_body): Use it. Update the `this' parameter too.
2001-04-29 Joseph S. Myers <>
* decl2.c (unsupported_options): Add new-abi.
* lang-options.h: Remove no longer supported options.
2001-04-27 Nathan Sidwell <>
* except.c (can_convert_eh): Don't check template parms,
typename types etc.
2001-04-27 Nathan Sidwell <>
* optimize.c (maybe_clone_body): Copy parameter names and locations.
2001-04-27 Nathan Sidwell <>
* cp-tree.h (adjust_clone_args): Prototype new function.
* class.c (adjust_clone_args): New function.
* decl.c (start_function): Call it for in charge ctors.
2001-04-26 Mark Mitchell <>
* method.c (use_thunk): Make sure that thunks really are emitted
when requested.
2001-04-26 Nathan Sidwell <>
* mangle.c (write_chars): New macro.
(hwint_to_ascii): New function
(write_number): Use it.
(write_integer_cst): Deal with really big numbers.
2001-04-25 Mark Mitchell <>
* optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
the clone.
2001-04-25 Nathan Sidwell <>
* decl.c (grokdeclarator): Set context of namespace scope
2001-04-24 Zack Weinberg <>
* cp/optimize.c: Include hashtab.h.
(struct inline_data): Add tree_pruner.
(expand_call_inline, expand_calls_inline): Use it when calling
(optimize_function): Initialize and free tree_pruner.
2001-04-24 Nathan Sidwell <>
Lazy __FUNCTION__ generation.
* cp-tree.def (FUNCTION_NAME): Remove.
* cp-tree.h (function_name_declared_p): Remove.
(cp_fname_init): Prototype.
* decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
don't call declare_function_name. Call start_fname_decls.
(cp_make_fname_decl): Adjust parameters. Generate the name. Don't
clobber the line number.
(cp_fname_init): New function.
(start_function): Call start_fname_decls.
(finish_function): Call finish_fname_decls.
* lex.c (reswords): Add slots for __FUNCTION__ et al.
(rid_to_yy): Add mappings for __FUNCTION__ et al.
* optimize.c (maybe_clone_body): Remove function_name_declared_p.
* parse.y (VAR_FUNC_NAME): New token.
(primary): Add VAR_FUNC_NAME.
* pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
(tsubst, FUNCTION_NAME case): Remove.
(tsubst_copy, FUNCTION_NAME case): Remove.
(tsubst_expr, DECL_STMT case): Be careful with a
(instantiate_decl): Remove function_name_declared_p.
* semantics.c (begin_compound_statement): Don't call
declare_function_name here.
(setup_vtbl_ptr). Don't save & restore function_name_declared_p.
(finish_translation_unit): Call finish_fname_decls.
(expand_body): Remove function_name_declared_p.
* typeck2.c (digest_init): Allow any ERROR_MARK.
2001-04-24 Nathan Sidwell <>
* pt.c (tsubst_decl): Use VOID_TYPE_P.
* semantics.c: Fix some typos.
2001-04-23 Phil Edwards <>
* cp/decl2.c (flag_honor_std): Always initialize to 1.
2001-04-22 Kaveh R. Ghazi <>
* xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
2001-04-23 Jason Merrill <>
* except.c (build_throw): Wrap the initialization of the exception
object in a MUST_NOT_THROW_EXPR.
(do_free_exception): #if 0.
2001-04-20 Mark Mitchell <>
* cp-tree.h (finish_enum): Change prototype.
* decl.c (finish_enum): Reorganize.
* parse.y (structsp): Adjust calls to finish_enum.
2001-04-20 Nathan Sidwell <>
* tree.c (cp_tree_equal): Adjust final switch formatting. Add
't' case.
2001-04-20 Nathan Sidwell <>
* class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
(layout_empty_base): Return at end flag.
(build_base_field): Likewise.
(build_base_fields): Likewise.
(layout_virtual_bases): Don't add 1 to eoc value.
(end_of_class): Use full size for empty bases.
(layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
empty bases. Don't add 1 to eoc value. Only add trailing padding
if we're an empty class with no empty bases.
(dump_class_hierarchy): Dump size and alignment.
2001-04-20 Jakub Jelinek <>
* call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
2001-04-20 Jakub Jelinek <>
* search.c (lookup_field_r): If looking for type and non-TYPE_DECL
is found, look first if name does not match the structure name.
2001-04-19 Mark Mitchell <>
* cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
* decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
(pushdecl): Likewise.
(build_library_fn_1): Likewise.
(build_cp_library_fn): Likewise.
(grokfndecl): Likewise.
(grokvardecl): Mark `extern "C"' variables as having C linkage.
* decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
* lex.c (retrofit_lang_decl): Likewise.
* mangle.c (mangle_decl_string): Don't mangle the names of
variables declared with C language linkage.
* semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
2001-04-18 John David Anglin <>
* semantics.c (simplify_aggr_init_exprs_r): Don't restore
flag_access_control from uninitialized storage.
2001-04-15 Mark Mitchell <>
* cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
* mangle.c (write_pointer_to_member_type): Fix mangling of
pointers to cv-qualified member function types.
* init.c (build_delete): Create a SAVE_EXPR for the address if
we're going to use it more than once.
2001-04-13 Mark Mitchell <>
* cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
(expand_ptremfunc_cst): Change prototype.
(delta2_from_ptrmemfunc): Remove.
* expr.c (cplus_expand_constant): Adjust call to
* typeck.c (build_ptrmemfunc1): Simplify.
(build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
results in a constant.
(expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
(delta2_from_ptrmemfunc): Remove.
(pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
2001-04-12 Jason Merrill <>
* cp-tree.h (decl_namespace_list): New macro.
(struct saved_scope): Add decl_ns_list.
* decl.c (mark_saved_scope): Mark it.
* decl2.c: Lose static decl_namespace_list.
(init_decl2): Don't save it.
2001-04-12 Kaveh R. Ghazi <>
* cp-tree.h (warn_return_type, yylex): Delete redundant
* decl.c (current_class_depth, global_namespace): Likewise.
* decl2.c (current_class_depth, flag_gnu_xref): Likewise
* repo.c (flag_use_repository): Likewise.
2001-04-12 Kaveh R. Ghazi <>
* cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
set_block, pushdecl, getdecls, gettags, init_decl_processing,
maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
lvalue_or_else, print_lang_statistics, comp_target_types,
unsigned_type, signed_type, signed_or_unsigned_type,
build_function_call, mark_addressable, incomplete_type_error):
Delete redundant declarations.
2001-04-11 Jason Merrill <>
* cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
(TYPE_ANONYMOUS_P): New macro.
(TAGGED_TYPE_P): New macro.
* decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
(grokfndecl, grokvardecl, grokdeclarator): Likewise.
* tree.c (no_linkage_helper): Likewise.
* semantics.c (begin_class_definition): Likewise.
* pt.c (convert_template_argument): Likewise.
* lex.c (check_for_missing_semicolon): Likewise.
2001-04-12 Nathan Sidwell <>
* class.c (dfs_unshared_virtual_bases): New function.
(mark_primary_bases): Call it.
(check_bases): Ignore virtual bases when determining
2001-04-12 Nathan Sidwell <>
* method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
2001-04-11 Mark Mitchell <>
* optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
cloned function to the clone.
2001-04-11 Kaveh R. Ghazi <>
* (cp/semantics.o): Depend on $(EXPR_H).
* semantics.c: Include expr.h.
2001-04-11 Nathan Sidwell <>
* method.c (implicitly_declare_fn): Commonize code for copy ctor
and assignment op. Set TREE_USED for parameter.
2001-04-10 Mark Mitchell <>
* class.c (find_final_overrider_data): Add `candidates'.
(dfs_find_final_overrider): Don't issue error messages
(find_final_overrider): Issue error messages here.
(build_base_field): Don't warn about amgibuous direct bases here.
(warn_about_ambiguous_direct_bases): New function.
(layout_class_type): Use it.
2001-04-10 Richard Henderson <>
* typeck.c (build_array_ref): Push the array reference inside
2001-04-05 Mark Mitchell <>
* decl.c (duplicate_decls): Adjust accordingly.
(maybe_commonize_var): Likewise.
(grokfndecl): Likewise.
(start_function): Likewise.
(start_method): Likewise.
* decl2.c (key_method): Likewise.
(import_export_decl): Likewise.
* method.c (implicitly_declare_fn): Likewise.
* optimize.c (maybe_clone_body): Likewise.
2001-04-05 Benjamin Kosnik <>
* lang-specs.h: Add __DEPRECATED.
2001-04-05 J"orn Rennecke <>
* search.c (get_dynamic_cast_base_type): When building a new
constant, set its type to ssizetype.
2001-04-04 Jakub Jelinek <>
* optimize.c (expand_call_inline): Only add newly inlined statements
into inlined_stmts.
2001-04-03 Mark Mitchell <>
* cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
* operators.def: Remove old name-mangling information.
* decl.c (grok_op_properties): Adjust accordingly.
* lex.c (init_operators): Likewise.
* rtti.c (get_tinfo_decl): Issue error messages about types that
have variable size.
2001-04-03 Mark Mitchell <>
* decl2.c (import_export_decl): Don't call import_export_class
when processing an inline member function.
* semantics.c (expand_body): Call import_export_decl before
emitting inline functions.
2001-03-28 Richard Henderson <>
IA-64 ABI Exception Handling:
* cp-tree.def (EH_SPEC_BLOCK): New.
* cp-tree.h: Update changed function declarations.
(struct cp_language_function): Rename x_eh_spec_try_block
to x_eh_spec_block.
* decl.c (current_binding_level): If no current function
bindings, revert to scope_chain.
(initialize_predefined_identifiers): Remove __cp_push_exception.
(store_parm_decls): Use begin_eh_spec_block.
(finish_function): Use finish_eh_spec_block.
(mark_lang_function): Update for name changes.
* decl2.c (finish_file): No mark_all_runtime_matches.
* dump.c (cp_dump_tree): Handle new tree codes.
* error.c (dump_expr) [BIND_EXPR]: Fix typo.
* except.c (catch_language_init, catch_language): Remove.
(init_exception_processing): Don't set language code.
Initialize call_unexpected_node, protect_cleanup_actions,
eh_personality_libfunc, lang_eh_runtime_type.
(call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
(get_eh_type, get_eh_caught, get_eh_handlers): Remove.
(prepare_eh_type): Split out type canonicalizations ...
(build_eh_type_type): ... from here.
(build_eh_type_type_ref): Remove.
(mark_all_runtime_matches): Remove.
(build_exc_ptr): New.
(do_begin_catch, do_end_catch): New.
(do_pop_exception): Remove.
(build_terminate_handler): Remove.
(choose_personality_routine): Split out language choice from ...
(initialize_handler_parm): ... here.
(expand_start_catch_block): Use do_begin_catch. Simplify Java
exception object handling.
(expand_start_eh_spec, expand_end_eh_spec): Remove.
(expand_exception_blocks, alloc_eh_object): Remove.
(begin_eh_spec_block, finish_eh_spec_block): New.
(do_allocate_exception, do_free_exception): New.
(expand_throw): Merge into ...
(build_throw): ... here. Update for abi.
* expr.c (cplus_expand_expr): No expand_internal_throw.
* pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
* semantics.c (*) Update for except.h name changes.
(genrtl_try_block): No protect_with_terminate.
(genrtl_eh_spec_block): New.
(genrtl_handler): Don't emit the goto here.
(cp_expand_stmt): Handle EH_SPEC_BLOCK.
(genrtl_finish_function): Don't expand_exception_blocks.
* tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
2001-03-28 Richard Henderson <>
* decl.c (struct named_label_list): Rename eh_region to
in_try_scope, add in_catch_scope.
(struct binding_level): Rename eh_region to is_try_scope,
add is_catch_scope.
(note_level_for_try): Rename from note_level_for_eh.
(note_level_for_catch): New.
(poplevel): Copy both is_try_scope and is_catch_scope to
the named_label_list struct.
(check_previous_goto_1): Don't check for catch block via
DECL_ARTIFICIAL; use in_try_scope instead.
(check_goto): Likewise.
* cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
* except.c (expand_start_catch_block): Call note_level_for_catch.
* semantics.c (begin_compound_stmt): Update for note_level_for_try.
2001-03-27 Richard Henderson <>
* except.c: Use USING_SJLJ_EXCEPTIONS instead of
2001-03-27 Phil Edwards <>
* pt.c (check_default_tmpl_args): Make error messages clearer.
2001-03-26 Phil Edwards <>
* error.c: Also undefine 'A' macro used for cp_printers definition.
2001-03-27 Kaveh R. Ghazi <>
* Depend on $(SYSTEM_H), not system.h.
2001-03-26 Mike Yang <>
Mark Mitchell <>
* dump.c (dump_access): New function.
(cp_dump_tree): Use it. Dump basetype information for class
2001-03-26 Mark Mitchell <>
* (optimize.o): Depend on params.h.
(duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
(init_decl_processing): Set flag_no_inline when doing
* optimize.c: Include params.h.
(struct inline_data): Improve documentation of FNS. Add
(INSNS_PER_STMT): New macro.
(remap_block): Use CLONING_P.
(inlinable_function_p): Don't inline big functions.
(expand_call_inline): Keep track of how much inlining we've done.
(optimize_function): Set FIRST_INLINED_FN.
(maybe_clone_body): Set CLONING_P.
* semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
tree nodes.
(genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
rest_of_compilation. Clear DECL_RTL for local variables
(clear_decl_rtl): New function.
2001-03-26 Nathan Sidwell <>
Implement DR 209
* cp-tree.h (skip_type_access_control,
reset_type_access_control): Prototype.
* decl.c (grokdeclarator): Access of friends is not checked.
* parse.y (component_decl_list): Reset type access control.
* semantics.c (decl_type_access_control): Clear
(save_type_access_control): Don't save if not deferring.
(skip_type_access_control, reset_type_access_control): New
(begin_class_definition): Do type access control for basetypes.
Start deferred access control.
(finish_class_definition): Resume immediate access control if
this is a local class.
2001-03-25 Kaveh R. Ghazi <>
* class.c (add_method): Use memcpy/memmove, not bcopy.
* decl.c (duplicate_decls): Likewise.
2001-03-23 Jakub Jelinek <>
* mangle.c (write_discriminator): Use `_0' for discriminator 1,
not `_'.
2001-03-23 Jakub Jelinek <>
* decl.c (local_names): Define.
(push_local_name): New.
(grok_reference_init): Return init if initializing static reference
variable with non-constant instead of emitting it.
Move expand_static_init call to cp_finish_decl.
(layout_var_decl): Call push_local_name.
(maybe_commonize_var): Allow inlining functions even if they have
static local variables, use comdat_linkage for them if flag_weak.
(check_initializer): Call obscure_complex_init if
grok_reference_init returned nonzero.
(save_function_data): Clear x_local_names.
(pop_cp_function_context): Free x_local_names.
(mark_inlined_fns): Remove.
(mark_lang_function): Mark x_local_names.
(lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
Mark inlined_fns as tree, remove call to mark_inlined_fns.
* class.c (alter_access): Ensure DECL_ACCESS is never set if
* cp-tree.h (cp_language_function): Add x_local_names.
(lang_decl_flags): Add discriminator into u2.
(lang_decl_inlined_fns): Remove.
(lang_decl): inlined_fns is now a TREE_VEC.
* optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
TREE_VEC, not a custom structure.
(optimize_function): Likewise.
* mangle.c (discriminator_for_local_entity): Discriminate among
VAR_DECL local entities.
* search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
is not valid.
2001-03-22 Bryce McKinlay <>
Add support for Java interface method calls.
* cp-tree.h (struct lang_type): Add java_interface flag.
* tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
* call.c (java_iface_lookup_fn): New static.
(build_over_call): If calling a method declared in a
TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
expression which resolves the function address.
(build_java_interface_fn_ref): New function.
2001-03-22 Richard Henderson <>
* (cp/except.o): Don't depend on insn-flags.h.
* except.c: Don't include it.
2001-03-22 Gerald Pfeifer <>
based on an idea from Joe Buck <>
* parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
New nonterminals.
(data_def, component_decl): Add reductions to bad_decl.
2001-03-22 Jakub Jelinek <>
* method.c (do_build_assign_ref): Don't use build_modify_expr for
anonymous aggregates, since they don't have assignment operator
* decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
assignment operators for anonymous structure fields.
2001-03-21 Jason Merrill <>
* pt.c (instantiate_decl): Abort if we see a member constant
instantiation that doesn't already have its initializer.
Downgrade explicit instantiation without definition to pedwarn.
* cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
* class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
(import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
(pending_vtables): Remove.
* decl2.c (pending_vtables): Remove.
(import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
(import_export_class): Likewise.
(init_decl2): Don't mark pending_vtables.
* lex.c (handle_pragma_vtable): Just sorry.
* pt.c (instantiate_class_template): Don't mess with
(mark_class_instantiated): Likewise.
* ptree.c (print_lang_type): Don't print it.
* semantics.c (begin_class_definition): Don't set it.
* pt.c (template_tail): Replace with last_pending_template.
(maybe_templates, maybe_template_tail): Remove.
(add_pending_template): Adjust.
(instantiate_pending_templates): Adjust.
* cp-tree.h (struct saved_scope): Remove lang_stack field.
(current_lang_stack): Remove.
* decl.c (maybe_push_to_top_level): Don't initialize it.
(duplicate_decls): Use current_lang_depth.
(xref_basetypes): Likewise.
* class.c (current_lang_depth): New fn.
(push_lang_context): Use more varray functionality.
(pop_lang_context): Likewise.
* error.c (GLOBAL_THING): Always use '__'.
2001-03-21 Mark Mitchell <>
* class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
* mangle.c (mangle_decl_string): Mangle the names of overloaded
operators, even when they have `extern "C"' linkage.
2001-03-19 Mark Mitchell <>
* class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
where it's not necessary.
(add_method): Remove optimization involving comparison of
(build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
where it's not necessary.
(check_methods): Likewise.
(build_clone): Likewise.
(built_vtt): Likewise.
* cp-tree.h (DECL_NEEDED_P): Likewise.
* decl.c (pushtag): Likewise.
(duplicate_decls): Likewise.
(pushdecl): Likewise.
(builtin_function): Likewise.
(build_library_fn_1): Set DECL_LANGUAGE for library functions.
(build_cp_library_fn): Likewise.
(maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
where it's not necessary.
(make_rtl_for_nonlocal_decl): Likewise.
(cp_finish_decl): Likewise.
(grokfndecl): Likewise.
(grokvardecl): Likewise.
(grokdeclarator): Likewise.
(start_function): Likewise.
(cp_missing_return_ok_p): Likewise.
* decl2.c (grokclassfn): Likewise.
(check_classfn): Likewise.
(finish_static_data_member_decl): Likewise.
(grokfield): Likewise.
* error.c (GLOBAL_IORD_P): Remove.
(dump_global_iord): Improve output.
(dump_decl): Avoid using DECL_ASSEMBLER_NAME.
* except.c (nothrow_libfn_p): Summarily reject any function not in
* init.c (build_java_class_ref): Don't explicitly set
DECL_ASSEMBLER_NAME after calling mangle_decl.
* mangle.c (mangle_decl_string): Handle extern "C" functions.
(mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
* method.c (set_mangled_name_for_decl): Don't explicitly set
DECL_ASSEMBLER_NAME after calling mangle_decl.
(make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
* pt.c (set_mangled_name_for_template_decl): Remove.
(check_explicit_specialization): Don't use it.
(looup_template_class): Don't set DECL_ASSEMBLER_NAME.
(tsubst_friend_function): Likewise.
(tsubst_decl): Likewise.
(regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
* rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
where it's not necessary.
(tinfo_base_init): Likewise.
(create_real_tinfo_var): Likewise.
* search.c (looup_field_1): Likewise.
* semantics.c (finish_named_return_value): Likewise.
* tree.c (init_tree): Set lang_set_decl_assembler_name.
2001-03-15 Gabriel Dos Reis <>
Correct semantics restrictions checking in throw-expression.
* except.c (is_admissible_throw_operand): New function.
(build_throw): Use it.
2001-03-14 Mark Mitchell <>
* decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
and its ilk.
2001-03-14 Mark Mitchell <>
* class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
* cp-tree.h (DECL_IN_MEMORY_P): Likewise.
* decl.c (duplicate_decls): Likewise.
(builtin_function): Likewise.
(build_library_fn): Likewise.
(build_cp_library_fn): Likewise.
(check_initializer): Likewise.
(cp_finish_decl): Likewise.
* decl2.c (grokfield): Likewise.
(grok_function_init): Remove #if 0'd code.
(finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
* friend.c (do_friend): Likewise.
* init.c (get_temp_regvar): Likewise.
* method.c (make_thunk): Likewise.
* pt.c (tsubst_friend_function): Likewise.
(tsubst_decl): Likewise.
(regenerate_decl_from_template): Likewise.
* semantics.c (genrtl_named_return_value): Likewise.
(expand_body): Likewise.
(genrtl_finish_function): Likewise.
* tree.c (cp_tree_equal): Likewise.
2001-03-12 Nathan Sidwell <>
* call.c (convert_like_real): Add extra semantics to INNER
parameter. Don't convert to temporary if a user conversion
gives us an lvalue that we're about to bind to a reference.
Set INNER to indicate pending reference binding on recursive
2001-03-10 Neil Booth <>
* cp/lex.c: Delete duplicate pending_lang_change.
2001-03-10 Neil Booth <>
* cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
* cp/repo.c (get_base_filename, open_repo_file): Similarly.
* cp/cp-tree.h: Remove file_name_nondirectory prototype.
2001-03-09 Zack Weinberg <>
* Add dependencies on $(TM_P_H) as appropriate.
2001-03-08 Stan Shebs <>
* cp-tree.h (set_identifier_local_value): Remove unused decl.
2001-03-06 Zack Weinberg <>
* spew.c: Remove references to CPP_OSTRING.
2001-03-06 Andrew Haley <>
* typeck.c (convert_arguments): Check that we have an fndecl.
2001-03-05 Andrew Haley <>
* typeck.c (convert_arguments): Don't do ellipsis conversion for
2001-03-02 Nathan Sidwell <>
* typeck.c (build_static_cast): Allow enum to enum conversions
as per DR 128.
2001-03-02 Nathan Sidwell <>
* class.c (check_field_decls): Pointers to member do not a
non-pod struct make, as per DR 148.
2001-03-02 Nathan Sidwell <>
* call.c (joust): cp_pedwarn when using gnu extension concerning
worst conversion sequences.
2001-03-01 Zack Weinberg <>
* decl.c: Replace all uses of 'boolean' with 'bool'.
2001-03-01 Zack Weinberg <>
* lang-specs.h: Add zero initializer for cpp_spec field to
all array elements that need one. Don't put an #ifdef inside
the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
use it.
2001-03-01 Nathan Sidwell <>
Implement using decls inside template functions.
* decl2.c (validate_nonmember_using_decl): Don't special case
fake_std_node in the global namespace. Don't reject early when
processing a template.
(do_local_using_decl): Add to statement tree. Don't do further
processing when building a template.
* pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
2001-03-01 Nathan Sidwell <>
* decl2.c (do_nonmember_using_decl): Don't complain if we find
same function. Do complain about ambiguating extern "C"
2001-02-28 Nathan Sidwell <>
Remove floating point and complex type template constant parms.
* pt.c (convert_nontype_argument): Remove REAL_TYPE and
COMPLEX_TYPE extensions.
(invalid_nontype_parm_type_p): Likewise.
2001-02-27 Jeffrey Oldham <>
* except.c (call_eh_info): Revert "match_function"'s type.
2001-02-27 Nathan Sidwell <>
Fix ctor vtable vcall offsets.
* class.c (struct vtbl_init_data_s): Add rtti_binfo member.
(build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
(get_matching_base): Remove.
(get_original_base): New function.
(build_vtbl_initializer): Initialize vid.rtti_binfo.
Use a virtual thunk for a ctor vtable with an index
(add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
primary base within a constructor vtable. Only set
BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
when primary base has been lost.
* cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
2001-02-26 Jeffrey Oldham <>
* call.c (joust): Ensure more_specialized()'s argument length
parameter has correct value for constructors.
2001-02-26 Nathan Sidwell <>
* except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
* decl.c (mark_inlined_fns): Prototype.
2001-02-22 Mark Mitchell <>
* spew.c (yylex): Correct handling of friends.
2001-02-22 Mark Mitchell <>
* mangle.c (write_encoding): Pass write_function_type the
FUNCTION_DECL for the function being encoded.
(write_function_type): Pass it along to write_bare_function_type.
(write_bare_function_type): Pass it along to write_method_parms.
(write_method_parms): Don't mangle the compiler-generated
parameters to a constructor or destructor.
2001-02-22 Andreas Jaeger <>
* optimize.c: Include toplev.h for
note_deferral_of_defined_inline_function prototype.
2001-02-22 Jakub Jelinek <>
* cp-tree.h (struct lang_decl_inlined_fns): New.
(struct lang_decls): Add inlined_fns.
(DECL_INLINED_FNS): New macro.
* optimize.c (struct inline_data): Add inlined_fns.
(declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
(inlinable_function_p): Likewise, fix typo in comment,
function is not inlinable if it already inlined function currently
being optimized.
(expand_call_inline): Add fn to inlined_fns if necessary.
(optimize_function): Initialize inlined_fns.
Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
* decl.c (mark_inlined_fns): New function.
(lang_mark_tree): Call it.
2001-02-21 Jason Merrill <>
* cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
(DECL_UNINLINABLE): Move to middle-end.
* class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
* decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
* class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
* optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
parms and outer BLOCK. note_deferral_of_defined_inline_function.
* method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
second parm of op=.
2001-02-19 Mark Mitchell <>
* decl2.c (set_decl_namespace): Allow explicit instantiations in
any namespace.
2001-02-18 Kriang Lerdsuwanakij <>
* optimize.c (expand_call_inline): Don't walk subtrees of type
2001-02-18 Mark Mitchell <>
* class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
for a destructor.
2001-02-18 Jason Merrill <>
Do put the VTT parameter in DECL_ARGUMENTS.
* cp-tree.h (struct cp_language_function): Add x_vtt_parm.
(current_vtt_parm): New macro.
(struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
(DECL_HAS_VTT_PARM_P): New macro.
(DECL_VTT_PARM): Remove.
* decl.c (duplicate_decls): Only copy the operator code if
(start_function): Set current_vtt_parm.
(lang_mark_tree): Don't mark vtt_parm.
* decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
* class.c (build_clone): Maybe remove the VTT parm.
* optimize.c (maybe_clone_body): Set up the VTT parm.
* pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
* call.c (build_over_call): Just allow the VTT arg.
* method.c (make_thunk): Don't set DECL_VTT_PARM.
(do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
(synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
* decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
* error.c (dump_function_decl): Likewise.
* call.c (build_user_type_conversion_1, convert_like_real): Abort
if we try to call a constructor with in-charge or VTT parms.
* method.c (skip_artificial_parms_for): New fn.
* call.c (add_function_candidate, build_over_call): Call it.
* call.c (build_new_method_call): Use current_vtt_parm.
* init.c (expand_virtual_init): Likewise.
* class.c (same_signature_p): No longer static.
* cp-tree.h: Declare it.
* search.c (look_for_overrides_r): Use it.
2001-02-17 Mark Mitchell <>
* cp-tree.h (new_abi_rtti_p): Remove.
(name_mangling_version): Likewise.
(flag_do_squangling): Likewise.
* class.c (build_rtti_vtbl_entries): Remove old ABI support.
* decl.c (grokfndecl): Likewise.
* decl2.c (name_mangling_version): Remove.
(flag_do_squangling): Likewise.
(lang_f_options): Remove `squangle'.
(unsupported_options): Add `squangle'.
(cxx_decode_option): Issue a warning about uses of
(finish_file): Remove old ABI support.
* pt.c (check_explicit_specialization): Likewise.
(tsubst_decl): Likewise.
* rtti.c (init_rtti_processing): Likewise.
(build_headof): Likewise.
(get_tinfo_decl_dynamic): Likewise.
(tinfo_from_decl): Likewise.
(build_dynamic_cast_1): Likewise.
(synthesize_tinfo_var): Likewise.
* init.c (build_new): Allow enumeration types for the array-bounds
in a direct-new-declarator.
* semantics.c (finish_typeof): Resolve OFFSET_REFs.
* pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
TREE_PROTECTED from the template being specialized.
2001-02-17 Jason Merrill <>
* decl2.c (build_artificial_parm): Set TREE_READONLY.
* decl.c (bad_specifiers): Allow throw specs on things with
pointer-to-function or -member-function type.
* init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
a pmf.
2001-02-17 Mark Mitchell <>
* call.c (check_dtor_name): Handle template names correctly.
2001-02-16 Jason Merrill <>
* cp-tree.h (DECL_USE_VTT_PARM): Remove.
* decl2.c (maybe_retrofit_in_chrg): Don't create it.
* optimize.c (maybe_clone_body): Don't substitute it.
* call.c (build_new_method_call): Check in_chrg instead.
* init.c (expand_virtual_init): Likewise.
2001-02-16 Gabriel Dos Reis <>
* decl.c (check_tag_decl): Make sure a typedef for an anonymous
class-type introduces at least a type-name.
2001-02-16 Jakub Jelinek <>
* call.c (convert_like_real): Create a temporary for non-lvalue.
2001-02-16 Jeffrey Oldham <>
* cp-tree.h: Fix typos in comments.
2001-02-16 Jason Merrill <>
* optimize.c (remap_block): If we're compiling a clone, pass the
new block to insert_block.
2001-02-16 Mark Mitchell <>
* semantics.c (finish_asm_stmt): Robustify.
2001-02-15 Mark Mitchell <>
* pt.c (push_template_decl_real): Don't remangle the name of a
class template.
2001-02-15 Jim Meyering <>
* (c++.install-common): Depend on installdirs.
(c++.install-info): Likewise.
(c++.install-man): Likewise.
2001-02-15 Mark Mitchell <>
* typeck2.c (build_m_component_ref): Robustify.
2001-02-15 Alexandre Oliva <>
* friend.c (do_friend): Don't take the nested [template] class
into account when deciding whether to warn about the friend
function not referring to a template function.
2001-02-14 Jakub Jelinek <>
* typeck.c (build_unary_op): Clarify error message.
2001-02-08 Aldy Hernandez <>
* parse.y (component_constructor_declarator): allow optional
parentheses around constructor class name.
2001-02-14 Nathan Sidwell <>
* cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
* init.c (emit_base_init): Remove incorrect comment about
virtual bases.
* method.c (make_thunk): Fix comment alignment.
2001-02-14 Nathan Sidwell <>
Kill remnants of this is variable.
* cp-tree.h (flag_this_is_variable): Remove.
* decl2.c (flag_this_is_variable): Remove.
* class.c (fixed_type_or_null): Add cdtor parm. Adjust.
(build_vbase_path): The path is non-static, even in a cdtor.
(resolves_to_fixed_type_p): Add additional return value.
* search.c (init_vbase_pointers): Adjust.
* tree.c (lvalue_p_1): Adjust.
* typeck.c (mark_addressable): Adjust.
2001-02-14 Nathan Sidwell <>
* pt.c (unify): Don't check cv quals of array types.
2001-02-14 Nathan Sidwell <>
* tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
check whether we already have the type.
2001-02-13 Mark Mitchell <>
* cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
* call.c (build_op_delete_call): Simplify to remove duplicate
* class.c (clone_function_decl): Don't build the deleting variant
of a non-virtual destructor.
* decl.c (finish_destructor_body): Don't call delete if this is a
non-virtual destructor.
* init.c (build_delete): Explicitly call `operator delete' when
deleting an object with a non-virtual destructor.
2001-02-13 Jason Merrill <>
* lang-specs.h: Add more __EXCEPTIONS.
2001-02-12 Nathan Sidwell <>
* typeck2.c (process_init_constructor): Check
TREE_HAS_CONSTRUCTOR before issuing missing init warning.
2001-02-12 Nathan Sidwell <>
* pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
Remove spurious information in comment. Allow further
adjustments of REFERENCE_TYPE args.
2001-02-12 Nathan Sidwell <>
* errfn.c (cp_deprecated): Tweak diagnostic text.
* parse.y (new_initializer): Deprecate initializer lists
2001-02-12 Mark Mitchell <>
Remove old ABI support.
2001-02-11 Mark Mitchell <>
* decl2.c (flag_vtable_thunks): Always set it to 1.
(flag_new_abi): Likewise.
* lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.
* (g++spec.o): Fix typo.
2001-02-09 Jason Merrill <>
* lang-specs.h: Restore definition of __EXCEPTIONS.
2001-02-08 Jason Merrill <>
* search.c (shared_member_p): New function.
(lookup_field_r): Use it.
* cp-tree.h (SHARED_MEMBER_P): Remove.
* method.c (process_overload_item): Handle template-dependent array
* pt.c (type_unification_real): If we end up with undeduced nontype
parms, try again.
* decl.c (lookup_name_real): Tweak warning to refer to decls, not
* typeck2.c (friendly_abort): Don't say anything if we have
earlier errors or sorries.
* decl.c (check_tag_decl): Notice attempts to redefine bool and
wchar_t. Ignore if in_system_header.
* decl.c (maybe_push_cleanup_level): New fn...
(start_decl_1): ...split out from here.
* cvt.c (build_up_reference): Use it.
* cp-tree.h: Declare it.
2001-02-07 Mark Mitchell <>
* lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
2001-02-06 Nathan Sidwell <>
* pt.c (lookup_template_class): Make sure it's a primary
template or template_template_parm when called from the parser.
(instantiate_template_class): Add assertion.
2001-02-05 Alexandre Oliva <>
* method.c (build_mangled_name) [old abi]: Protect flush_repeats()
from error_mark_node.
2001-02-05 Nathan Sidwell <>
Fix specification and implementation bugs in V3 ABI
construction vtables.
* cp-tree.h (flag_dump_class_layout): New flag.
(BINFO_PRIMARY_P): ... here.
(binfo_via_virtual): New prototype.
* decl2.c (flag_dump_class_layout): New flag.
(cxx_decode_option): Set it. Adjust -fdump-translation-unit to
use `=' as a file name separator.
* init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
(build_vtbl_address): If this is a virtual primary base, then
get the vtbl of what it is ultimately primary for.
* search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
(dfs_skip_nonprimary_vbases_markedp): Likewise.
(get_shared_vbase_if_not_primary): Likewise.
(dfs_get_pure_virtuals): Likewise.
(expand_upcast_fixups): Likewise.
(fixup_virtual_upcast_offsets): Likewise.
(dfs_find_vbase_instance): Likewise.
(find_vbase_instance): Likewise.
(binfo_from_vbase): Adjust comment to reflect reality.
(binfo_via_virtual): New function.
* class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
for binfo walking during VTT construction.
(dfs_mark_primary_bases): Remove.
(force_canonical_binfo_r): New function.
(force_canonical_binfo): New function.
(mark_primary_virtual_base): New function.
(mark_primary_bases): Walk in inheritance graph order, use
(determine_primary_base): Use some more intermediate variables.
(dfs_find_final_overrider): Don't check for overriding along a
virtual path.
(dfs_modify_vtables): Walk into primary virtual bases too.
(walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
(build_base_fields): Likewise.
(dfs_set_offset_for_unshared_vbases): Likewise.
(layout_virtual_bases): Likewise.
(end_of_class): Likewise.
(finish_struct_1): Call dump_class_hierarchy, if requested.
(dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
(dump_class_hierarchy_r): Add stream parameter. Emit more information.
(dump_class_hierarchy): Add file parameter. Append to file, if
(finish_vtbls): Adjust accumulate_vtbl_inits call.
Use canonical base for virtual bases.
(build_vtt): Add more comments. Adjust build_vtt_inits call.
(build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
virtual VTTs.
(dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
from DATA. We want virtual primary bases and all bases via virtual.
Only set BINFO_VPTR_INDEX for top level. Look up from a primary
virtual base when not a construction vtable.
(dfs_ctor_vtable_bases_queue_p): New DFS predicate.
(build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
Use canonical bases when processing virtual bases.
(accumulate_vtbl_inits): We're interested in any base via a
virtual path.
(dfs_accumulate_vtbl_inits): If this is a primary virtual base
within a construction vtable, determine what is being overridden.
(build_vtbl_initializer): Add more comments
(add_vcall_offset_vtbl_entries_1): Adjust comment.
(build_rtti_vtbl_entries): Check if the base has lost its
2001-02-05 Mark Mitchell <>
* (g++spec.o): Adjust use of DRIVER_DEFINES.
2001-02-04 Richard Kenner <>
* decl.c (pushdecl): Call abort instead of fatal.
* except.c (decl_is_java_type): Call fatal_error instead of fatal.
* init.c (build_new_1): Likewise.
(build_java_class_ref): Call internal_error and fatal_error, not fatal.
* decl.c (build_typename_type): hash_table_init now returns void.
decl.c (init_decl_processing): Make an error non-fatal.
2001-02-04 Mark Mitchell <>
* cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
* decl.c (maybe_commonize_var): Use the new name-mangling where
* decl2.c (comdat_linkage): Enhance comments. Make all
compiler-generated things static, if COMDAT is not available.
(get_tinfo_decl): Do not make typeinfo objects that belong in the
library COMDAT.
(tinfo_base_init): Use the correct mangled name for typeinfo
strings, and push them into the global scope.
(typeinfo_in_lib_p): New function.
(synthesize_tinfo_var): Use it.
(create_real_tinfo_var): Likewise.
2001-02-03 Jakub Jelinek <>
* decl.c (push_class_binding): Use context_for_name_lookup instead
* search.c (context_for_name_lookup): Remove static. Check for NULL
context in the loop.
* cp-tree.h (context_for_name_lookup): Add prototype.
2001-02-02 Jakub Jelinek <>
* cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
* tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
* call.c (convert_class_to_reference, build_user_type_conversion_1,
add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.
2001-02-02 Mark Mitchell <>
* (g++spec.o): Add DRIVER_DEFINES to the list
of macros used when compiling g++spec.c.
* g++spec.c (lang_specific_driver): Link with the shared
libgcc by default.
2001-01-29 Joseph S. Myers <>
* decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
make_reference_declarator, make_call_declarator), method.c
(implicitly_declare_fn), parse.y (namespace_using_decl,
notype_unqualified_id, expr_or_declarator, new_type_id,
after_type_declarator, direct_after_type_declarator,
notype_declarator, complex_notype_declarator,
complex_direct_notype_declarator, qualified_id,
notype_qualified_id, overqualified_id, direct_new_declarator,
absdcl, direct_abstract_declarator, conversion_declarator), pt.c
(tsubst), semantics.c (begin_constructor_declarator): Use build_nt
instead of build_parse_node.
2001-01-28 Kaveh R. Ghazi <>
* cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
(minus_one_node): Moved to top level gcc directory. Renamed
to integer_minus_one_node.
* init.c (init_init_processing): Don't set minus_one_node.
(build_vec_init): Use integer_minus_one_node.
* rtti.c (get_tinfo_decl_dynamic): Likewise.
2001-01-28 Jakub Jelinek <>
* optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
identical and they would be replaced with constant, remove
MODIFY_EXPR from the tree.
2001-01-27 Kaveh R. Ghazi <>
* Remove all dependencies on defaults.h.
* call.c: Don't include defaults.h.
* decl.c: Likewise.
* decl2.c: Likewise.
* except.c: Likewise.
* pt.c: Likewise.
* rtti.c: Likewise.
* tree.c: Likewise.
* typeck.c: Likewise.
2001-01-25 Jakub Jelinek <>
* mangle.c (write_mangled_name, write_encoding): Mangle overloaded
operators even in "C" linkage.
* method.c (set_mangled_name_for_decl): Likewise.
* decl.c (grokfndecl): Call set_mangled_name_for_decl even for
overloaded operators in "C" linkage.
2001-01-24 Nathan Sidwell <>
* pt.c (tsubst_decl): Remove IN_DECL parameter.
(tsubst_arg_types): Check parameter is not void.
(tsubst): Adjust tsubst_decl call.
2001-01-24 Nathan Sidwell <>
* call.c (add_builtin_candidate): Quote std properly, from
previous change.
2001-01-23 Kriang Lerdsuwanakij <>
* pt.c (check_explicit_specialization): Clone constructors and
2001-01-23 Nathan Sidwell <>
* decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
indicates anything special about template depth. Make sure we
only count the user visible template classes.
2001-01-23 Nathan Sidwell <>
* call.c (build_conv): Typo in comment.
(add_builtin_candidate): Add more explanation.
Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
when we have enumeral types.
(add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
candidates for relops and eqops.
(joust): Simplify control flow. Allow a non-template user
function to hide a builtin.
2001-01-22 Nathan Sidwell <>
* cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
(more_specialized): Add deduction parameter.
* call.c (joust): Adjust more_specialized call.
(get_bindings_order): Remove.
(get_bindings_real): Add DEDUCE parameter.
(maybe_adjust_types_for_deduction): Return extra unify flags. Do
(type_unification_real): Deal with DEDUCE_ORDER. Use result of
(more_specialized): Add DEDUCE parameter. Call get_bindings_real
(try_one_overload): Use result of maybe_adjust_types_for_deduction.
(check_cv_quals_for_unify): Use new unify qualifier flags.
(unify): Clear new unify qualifier flags.
(get_bindings_real): Add DEDUCE parameter.
(get_bindings): Adjust call to get_bindings_real.
(get_bindings_overload): Likewise.
(most_specialized_instantiation): Adjust call to
2001-01-19 Jason Merrill <>
* decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.
* decl.c (init_decl_processing): Just force -fvtable-thunks on if
2001-01-19 Ute Pelkmann <>
* decl2.c (arg_assoc_class): Fix double iteration logic.
2001-01-19 Jason Merrill <>
* init.c (build_delete): Always call convert_force to strip cv-quals.
* decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
* lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
* g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.
2001-01-19 Nathan Sidwell <>
* search.c (get_vbase_1): Count only virtual bases.
2001-01-19 Nathan Sidwell <>
* class.c (duplicate_tag_error): Robustify flag clearing.
2001-01-19 Nathan Sidwell <>
* cp-tree.h (lookup_template_class): Add complain parm.
* decl.c (lookup_namespace_name): Adjust call to
(make_typename_type): Likewise.
* semantics.c (finish_template_type): Likewise.
* pt.c (lookup_template_class): Add complain parm. Adjust.
(tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
(tsubst): Likewise.
2001-01-19 Nathan Sidwell <>
* pt.c (copy_default_args_to_explicit_spec): Preserve
object's CV quals. Reorganize.
2001-01-18 Nathan Sidwell <>
* typeck.c (build_modify_expr): Say `initialization' for
* init.c (build_default_init): Convert to enumeral type, if
2001-01-18 Jakub Jelinek <>
* parse.y (nomods_initdcl0): Properly set things up for
2001-01-18 Nathan Sidwell <>
* pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
(type_unification_real): Set it.
(unify): Use it.
2001-01-18 Nathan Sidwell <>
* decl.c (finish_destructor_body): Convert to vbase pointer here.
2001-01-18 Nathan Sidwell <>
* semantics.c (begin_class_definition): Check we're not inside a
template parm list.
2001-01-18 Nathan Sidwell <>
* tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
2001-01-16 Kriang Lerdsuwanakij <>
* typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
* call.c (build_over_call): Add comment.
2001-01-16 Daniel Berlin <>
* cvt.c (ocp_convert): Handle vector type conversion
* typeck2.c (digest_init): Handle vector type initializations
2001-01-16 Phil Edwards <>
* g++spec.c: Don't add libraries needlessly if -fsyntax-only
was given.
2001-01-15 Nathan Sidwell <>
* pt.c (check_nontype_parm): Rename to ...
(invalid_nontype_parm_type_p): ... here.
(process_template_parm): Adjust.
(convert_template_argument): Adjust.
2001-01-15 Nathan Sidwell <>
* pt.c (check_nontype_parm): New function.
(process_template_parm): Use it.
(convert_template_argument): Use it.
(convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to
2001-01-14 Jeffrey Oldham <>
* tree.c: Add defaults.h
(cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
* (cp/tree.o): Add defaults.h.
2001-01-13 Joseph S. Myers <>
* (CXX_C_OBJS): Add c-format.o.
2001-01-13 Joseph S. Myers <>
* g++.1: Change to be ".so man1/gcc.1".
2001-01-13 Joseph S. Myers <>
* (, c++.install-info): Build and install g++
internals info.
(c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
($(srcdir)/cp/ New target.
* gxxint.texi: Add info directory entry. Use @@ in email address.
* .cvsignore: Update.
2001-01-12 Nathan Sidwell <>
* typeck.c (build_c_cast): Do template processing earlier.
Always pedwarn on array casts.
2001-01-12 Nathan Sidwell <>
* friend.c (make_friend_class): Make sure a templated class is
actually a template.
2001-01-11 Nathan Sidwell <>
* decl2.c (get_guard): Set linkage from guarded decl.
2001-01-11 Nathan Sidwell <>
* call.c (convert_default_arg): Check for unprocessed
* cp-tree.h (replace_defarg): Move to spew.c.
(maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
spew.c, which is where they really are.
(done_pending_defargs): Declare.
(unprocessed_defarg_fn): Declare.
* decl.c (replace_defarg): Move to spew.c
* parse.y (structsp): Call done_pending_defargs.
* spew.c (defarg_fns): Rearrange list structure.
(defarg_fnsdone): New static variable.
(defarg_depfns): New static variable.
(init_spew): Adjust.
(add_defarg_fn): Store the type in TREE_TYPE.
(do_pending_defargs): Detect and deal with ordering constraints
and circularity.
(done_pending_defargs): New function.
(unprocessed_defarg_fn): New function.
(replace_defarg): Moved from decl.c. Robustify. Don't save
if circularity detected.
2001-01-11 Nathan Sidwell <>
* pt.c (unify): Check array has a domain, before checking
whether it is variable sized.
2001-01-11 Nathan Sidwell <>
* decl.c (grokparms): Unobfuscate and get correct diagnostic for
parameters with pointers to arrays of unknown bound.
2001-01-11 Nathan Sidwell <>
* parse.y (template_parm_header, template_spec_header): New
reductions. Split out from ...
(template_header): ... here. Use them.
(template_template_parm): Use template_parm_header.
* semantics.c (finish_template_template_parm): Add assert.
2001-01-10 Mark Mitchell <>
* mangle.c (write_builtin_type): Fix thinko.
* pt.c (copy_default_args_to_explicit_spec_1): New function.
(copy_default_args_to_explicit_spec): Likewise.
(check_explicit_specialization): Use it.
* class.c (finish_struct_1): Remove last argument in call to
make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
* decl.c (builtin_function): Likewise.
(build_cp_library_fn): Likewise.
(check_initializer): Likewise.
(make_rtl_for_nonlocal_decl): Likewise.
(cp_finish_decl): Likewise.
(start_function): Likewise.
* decl2.c (finish_anon_union): Likewise.
* friend.c (do_friend): Likewise.
* init.c (build_java_class_ref): Likewise.
* method.c (make_thunk): Likewise.
* pt.c (tsubst_friend_function): Likewise.
* semantics.c (expand_body): Likewise.
2001-01-10 Mark Mitchell <>
* cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
looking at DECL_CLONED_FUNCTION for non-functions.
2001-01-10 Nathan Sidwell <>
* error.c (dump_template_parameter): Use parm to determine how
to print default value.
2001-01-10 Nathan Sidwell <>
* class.c (duplicate_tag_error): Clear more flags.
2001-01-10 Nathan Sidwell <>
* call.c (build_new_method_call): Use binfo_for_vbase.
2001-01-10 Joseph S. Myers <>
* cp-tree.h (flag_cond_mismatch): Don't declare.
* decl2.c (flag_cond_mismatch): Don't define.
(lang_f_options): Remove cond-mismatch.
(unsupported_options): Add cond-mismatch.
2001-01-09 Nathan Sidwell <>
* class.c (handle_using_decl): Reject using of constructor name
of sourcing class. Allow injecting of a method with same name as
nested class. Fixup error messages.
2001-01-09 Joseph S. Myers <>
* decl2.c (lang_decode_option): Handle -Wformat=2.
2001-01-08 Nathan Sidwell <>
* cp-tree.h (lang_decl_flags): Rename defined_in_class to
(DECL_DEFINED_IN_CLASS_P): Rename to ...
(DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
* decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
(cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
* pt.c (check_default_tmpl_args): Adjust for
(instantiate_class_template): Likewise.
(instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.
* class.c (finish_struct): Constify saved_filename.
2001-01-08 Nathan Sidwell <>
* class.c (duplicate_tag_error): Adjust diagnostic.
(finish_struct): Locally set location to start of struct.
* decl.c (fixup_anonymous_aggr): Use cp_error_at.
2001-01-08 Nathan Sidwell <>
* decl.c (struct binding_level): Adjust class_shadowed comments
to reflect reality.
(push_class_level_binding): Adjust comments to reflect reality.
Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
Don't set TREE_VALUE on the class_shadowed list.
2001-01-07 Alexandre Petit-Bianco <>
* decl2.c (acceptable_java_type): Allow references too.
* init.c (build_java_class_ref): When using the new ABI, search
`class$' and have it mangled with `mangle_decl.'
* mangle.c (write_java_integer_type_codes): New function.
(write_builtin_type): Detect and mangle Java integer and real
2001-01-07 Mark Mitchell <>
* decl2.c (grokfield): Don't accept `asm' specifiers for
non-static data members.
2001-01-07 Kaveh R. Ghazi <>
* expr.c (cplus_expand_expr): Don't reset `target'.
2001-01-07 Neil Booth <>
* cp/decl2.c (cxx_post_options): Call cpp_post_options.
2001-01-05 Nathan Sidwell <>
* parse.y (template_datadef): Check for error_mark_node.
2001-01-05 Nathan Sidwell <>
* cp-tree.def (DEFAULT_ARG): Make `x' class.
2001-01-04 Joseph S. Myers <>
* decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
(record_builtin_type): Make non-static.
(flag_short_double): Don't declare.
(init_decl_processing): Remove the creation of many tree nodes now
in c_common_nodes_and_builtins.
(build_void_list_node): New function.
* decl2.c (flag_short_double, flag_short_wchar): Don't define.
* cp-tree.h (flag_short_wchar): Don't declare.
2001-01-04 Mark Mitchell <>
* call.c (build_conv): Don't use build1 for USER_CONV.
* pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.
2001-01-03 Joseph S. Myers <>
* lex.c (lang_init): Call c_common_lang_init.
2001-01-03 Nathan Sidwell <>
* search.c (lookup_fnfields_here): Remove.
(look_for_overrides_r): Use lookup_fnfields_1.
Ignore functions from using declarations.
2001-01-03 Nathan Sidwell <>
Implement exceptions specifiers for implicit member functions.
* cp-tree.h (merge_exceptions_specifiers): Declare new function.
* method.c (synthesize_exception_spec): New function.
(locate_dtor, locate_ctor, locate_copy): New functions.
(implicitly_declare_fn): Generate the exception spec too.
* search.c (check_final_overrider): Check artificial functions
* typeck2.c (merge_exception_specifiers): New function.
2001-01-03 Jason Merrill <>
* init.c (build_default_init): New fn.
(perform_member_init): Split out from here.
(build_new_1): Use it. Simplify initialization logic.
(build_vec_init): Take an array, rather than a pointer and maxindex.
Speed up simple initializations. Don't clean up if we're assigning.
* cp-tree.h: Adjust.
* decl2.c (do_static_initialization): Remove TREE_VEC case.
* parse.y (new_initializer): Return void_zero_node for ().
* typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
* typeck2.c (digest_init): Only complain about user-written
2000-12-22 Mike Stump <>
* decl2.c: (max_tinst_depth): Increase to 50.
2001-01-02 Mark Mitchell <>
* class.c (invalidate_class_lookup_cache): Zero the
* cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
* decl.c (free_bindings): New variable.
(push_binding): Don't create a new binding if we have one on the
free list.
(pop_binding): Put old bindings on the free list.
(init_decl_processing): Use size_int, not build_int_2.
Register free_bindings as a GC root.
(cp_make_fname_decl): Use size_int, not build_int_2.
(push_inline_template_parms_recursive): Likewise.
(end_template_parm_list): Likewise.
(for_each_template_parm): Do not use walk_tree_without_duplicates.
(tsubst_template_parms): Use size_int, not build_int_2.
(tsubst): Likewise.
* rtti.c (get_vmi_pseudo_type_info): Likewise.
2001-01-02 Richard Henderson <>
* parse.y (asm): Set ASM_INPUT_P.
2001-01-02 Jason Merrill <>
* tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
for v3 ABI.
* typeck.c (cp_truthvalue_conversion): New fn.
* cvt.c (ocp_convert): Use it.
* cp-tree.h: Lose c-common.c decls.
* typeck.c (build_unary_op): Restore old &a.f diagnostic code.
* cvt.c (convert_to_void): Use type_unknown_p.
* typeck.c (strip_all_pointer_quals): Also strip quals from
pointer-to-member types.
* (cp/TAGS): Use --no-globals. Ignore parse.c, and treat
parse.y as C.
* call.c (build_new_method_call): Do evaluate the object parameter
when accessing a static member.
* typeck.c (build_component_ref): Likewise.
2001-01-02 Andreas Jaeger <>
* decl.c (cp_missing_noreturn_ok_p): New.
(init_decl_processing): Set lang_missing_noreturn_ok_p.
Copyright (C) 2001 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.