Craig Rodrigues
a98facb0de
call.c, [...]: Change my_fancy_abort() to abort().
...
2002-01-23 Craig Rodrigues <rodrigc@gcc.gnu.org>
* call.c, class.c, decl.c, decl2.c, error.c, expr.c, friend.c,
init.c, lex.c, mangle.c, method.c, pt.c, repo.c, rtti.c, search.c,
semantics.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c:
Change my_fancy_abort() to abort().
From-SVN: r49139
2002-01-23 14:26:07 +00:00
Jason Merrill
608afcc5e9
re PR c++/5453 (Compiled program crash - inheritance/template/friend class problem)
...
PR c++/5453
* class.c (fixed_type_or_null): Fix thinko.
From-SVN: r49133
2002-01-23 07:45:30 -05:00
Jason Merrill
6bc34b14ef
* class.c (build_base_path): Tweak formatting.
...
From-SVN: r49075
2002-01-22 09:37:29 -05:00
Ira Ruben
e23bd2185f
Added __attribute__((deprecated)) patches.
...
From-SVN: r48743
2002-01-10 18:51:24 +00:00
Graham Stott
12f50451ab
class.c (VTT_TOP_LEVEL_P): Uppercase macro parameter and whitespace.
...
* class.c (VTT_TOP_LEVEL_P): Uppercase macro parameter and
whitespace.
(VTT_MARKED_BINFO_P): Likewise.
From-SVN: r48635
2002-01-08 10:18:40 +00:00
Jason Merrill
f11ee281f7
class.c (update_vtable_entry_for_fn): Set delta to zero for a lost primary.
...
* class.c (update_vtable_entry_for_fn): Set delta to zero for a
lost primary.
* class.c (build_vtbl_initializer): Check for a lost primary
before calculating the vtable entry to throw away.
From-SVN: r48535
2002-01-04 09:02:14 -05:00
Jason Merrill
00e4119c09
class.c (add_method): Do compare 'this' quals when trying to match a used function.
...
* class.c (add_method): Do compare 'this' quals when trying to match a
used function. Don't defer to another used function.
From-SVN: r48157
2001-12-18 10:18:20 -05:00
Nathan Sidwell
3ad9778947
pt.c (instantiate_clone): Remove, fold into ...
...
* pt.c (instantiate_clone): Remove, fold into ...
(instantiate_template): ... here. Simplify by removing mutual
recursion.
* 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.
From-SVN: r48155
2001-12-18 14:13:46 +00:00
Zack Weinberg
33bd39a26a
cp-tree.h: Delete #defines for cp_error, cp_warning, cp_pedwarn, and cp_compiler_error.
...
* 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.
From-SVN: r48140
2001-12-18 03:35:42 +00:00
Joseph Myers
aba649ba4d
ChangeLog.1, [...]: Fix spelling errors.
...
* 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.
From-SVN: r48072
2001-12-16 16:07:01 +00:00
Jason Merrill
a0de9d2025
decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
...
* 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
dtor_label.
* 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.
From-SVN: r47962
2001-12-12 20:37:52 -05:00
Jason Merrill
bc46bade63
tweak decl syntax
...
From-SVN: r47704
2001-12-05 19:42:07 -05:00
Jason Merrill
ff6685064f
class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the immediate binfos for our virtual bases.
...
* class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
immediate binfos for our virtual bases.
From-SVN: r47543
2001-12-02 21:43:18 -05:00
Neil Booth
357351e5a7
c-decl.c (duplicate_decls, [...]): Remove trailing period from diagnostics.
...
* c-decl.c (duplicate_decls, parmlist_tags_warning): Remove
trailing period from diagnostics.
* c-lex.c (cb_file_change): Similarly.
* cppmacro.c (check_trad_stringification): Similarly.
* gcc.c (do_spec_1): Similarly.
* genattr.c (main): Similarly.
* genattrtab.c (main, operate_exp, make_length_attrs): Similarly.
* gencodes.c (main): Similarly.
* genconfig.c (main): Similarly.
* genconstants.c (main): Similarly.
* genemit.c (main): Similarly.
* genextract.c (main): Similarly.
* genopinit.c (main): Similarly.
* genoutput.c (main): Similarly.
* genpeep.c (main): Similarly.
* genrecog.c (main): Similarly.
* mips-tfile.c (add_file, error): Similarly.
* profile.c (init_branch_prob): Similarly.
* reload1.c (spill_failure): Similarly.
* stmt.c (parse_output_constraint): Similarly.
* varasm.c (assemble_variable): Similarly.
cp:
* class.c (finish_struct): Similarly.
* decl.c (check_tag_decl): Similarly.
* lex.c (cxx_set_yydebug): Similarly.
* typeck2.c (friendly_abort): Similarly.
java:
* expr.c (expand_byte_code): Similarly.
* jcf-parse.c (load_class, jcf_parse): Similarly.
* jcf-write.c (generate_classfile): Similarly.
* lex.c (java_lex): Similarly.
From-SVN: r47517
2001-12-01 18:42:49 +00:00
Mark Mitchell
7d5b8b116e
re PR c++/4842 (-Woverloaded-virtual does not work)
...
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.
From-SVN: r47458
2001-11-29 22:01:58 +00:00
Nathan Sidwell
2db1ab2d04
cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
...
cp:
* cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
(ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
(PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
(DERIVED_FROM_P): Likewise.
(enum base_access): Renumber, add ba_quiet bit mask.
(get_binfo): Remove.
(get_base_distance): Remove.
(binfo_value): Remove.
(ACCESSIBLY_DERIVED_FROM_P): 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.
From-SVN: r47444
2001-11-29 17:15:56 +00:00
Nathan Sidwell
338d90b89f
re PR c++/3145 (virtual inheritance still creates wrong code)
...
cp:
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
convert_pointer_to_real.
(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_recursive): 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.
testsuite:
* g++.dg/abi/vbase8-4.C: New test.
From-SVN: r47316
2001-11-25 13:21:45 +00:00
Kaveh R. Ghazi
4fdc14caaa
* class.c (dump_array): Fix format specifier warning.
...
From-SVN: r46903
2001-11-09 23:08:36 +00:00
Joseph Myers
306ef64467
ChangeLog.1, [...]: Fix spelling errors.
...
* ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
semantics.c, spew.c: Fix spelling errors.
From-SVN: r46593
2001-10-28 19:25:00 +00:00
Jason Merrill
6f32162af6
typeck2.c (store_init_value): Don't re-digest a bracketed initializer.
...
* typeck2.c (store_init_value): Don't re-digest a bracketed
initializer.
* class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
ANON_AGGR_TYPE_P.
From-SVN: r46202
2001-10-11 17:33:09 -04:00
Richard Henderson
4a8d0c9c68
rtl.h (REG_VTABLE_REF): New.
...
* rtl.h (REG_VTABLE_REF): New.
* rtl.c (reg_note_name): Add it.
* combine.c (distribute_notes): Handle it.
* final.c (final_scan_insn): Handle it.
* tree.def (VTABLE_REF): New.
* expr.c (expand_expr): Handle it.
* varasm.c (assemble_vtable_entry, assemble_vtable_inherit): New.
* output.h: Declare them.
cp/
* 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.
testsuite/
* g++.old-deja/g++.other/crash18.C: Add -S to options.
From-SVN: r46195
2001-10-11 11:48:42 -07:00
Kaveh R. Ghazi
8b60264b0d
builtins.c (expand_builtin_setjmp_receiver): Const-ify.
...
* builtins.c (expand_builtin_setjmp_receiver): Const-ify.
* c-common.c (fname_var_t, c_tree_code_type, c_tree_code_length):
Likewise.
* c-dump.c (dump_option_value_info): Likewise.
* c-format.c (format_length_info, format_char_info,
format_flag_spec, format_flag_pair, format_kind_info): Likewise.
* collect2.c (names): Likewise.
* cppdefault.h (default_include): Likewise.
* cppexp.c (suffix, vsuf_1, vsuf_2, vsuf_3): Likewise.
* flow.c (life_analysis): Likewise.
* gcc.c (dir_separator_str, modify_target, option_map,
target_option_translations, spec_list_1, extra_specs_1,
init_spec): Likewise.
* gcov.c (gcov_version_string): Likewise.
* genattr.c (write_units): Likewise.
* genattrtab.c (make_length_attrs, write_function_unit_info): Likewise.
* gengenrtl.c (rtx_definition, defs): Likewise.
* genrecog.c (pred_table): Likewise.
* global.c (global_alloc): Likewise.
* lcm.c (optimize_mode_switching): Likewise.
* local-alloc.c (find_free_reg): Likewise.
* params.h (param_info): Likewise.
* predict.c (predictor_info): Likewise.
* protoize.c (unexpansion_struct): Likewise.
* real.c (bmask): Likewise.
* recog.h (insn_operand_data, insn_data): Likewise.
* regclass.c (initial_fixed_regs, initial_call_used_regs): Likewise.
* stmt.c (expand_nl_goto_receiver): Likewise.
* toplev.c (da, debug_args, lang_opt, documented_lang_options,
target_switches, target_options): Likewise.
* tradcif.y (token, tokentab2, yylex): Likewise.
* tree.h (attribute_spec): Likewise.
* alpha.c (override_options, alpha_lookup_xfloating_lib_func):
Likewise.
* arc.c (arc_output_function_epilogue): Likewise.
* arm.c (processors, all_cores, all_architectures,
arm_override_options, isr_attribute_arg, isr_attribute_args,
arm_isr_value): Likewise.
* avr.c (mcu_type_s, reg_class_tab, order_regs_for_local_alloc):
Likewise.
* c4x.c (c4x_int_reglist): Likewise.
* d30v.c (override_options): Likewise.
* h8300.c (shift_insn): Likewise.
* i386.c (size_cost, i386_cost, i486_cost, pentium_cost,
pentiumpro_cost, k6_cost, athlon_cost, pentium4_cost, ix86_cost,
ix86_expand_sse_comi, ix86_expand_sse_compare, override_options,
builtin_description, bdesc_comi, bdesc_2arg, bdesc_1arg,
ix86_init_mmx_sse_builtins, ix86_expand_builtin): Likewise.
* i386.h (processor_costs, ix86_cost): Likewise.
* m68hc11.c (m68hc11_cost, m6811_cost, m6812_cost): Likewise.
* m68hc11.h (processor_costs, m68hc11_cost): Likewise.
* m68k.c (codes_68881, codes_FPA): Likewise.
* m88k.c (mode_from_align, max_from_align, all_from_align,
best_from_align, m_options): Likewise.
* m88k.h (ORDER_REGS_FOR_LOCAL_ALLOC): Likewise.
* mcore.c (mode_from_align): Likewise.
* mips/elf64.h (UNIQUE_SECTION): Likewise.
* mips/iris6gld.h (UNIQUE_SECTION): Likewise.
* mips.c (mips_sw_reg_names, mips_regno_to_class): Likewise.
* mips.h (mips_regno_to_class): Likewise.
* ns32k.c (scales): Likewise.
* pa.c (import_string, magic_milli): Likewise.
* rs6000.c (alt_reg_names, rs6000_override_options): Likewise.
* sparc.c (leaf_reg_remap, sparc_override_options,
reg_leaf_alloc_order, reg_nonleaf_alloc_order, reg_alloc_orders):
Likewise.
* sparc.h (sparc_cpu_select, leaf_reg_remap): Likewise.
cp:
* 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):
Likewise.
f:
* bad.c (_ffebad_message_, ffebad_messages_): Const-ify.
* bld.c (ffebld_arity_op_): Likewise.
* bld.h (ffebld_arity_op_): Likewise.
* com.c (ffecom_init_0): Likewise.
* intdoc.c (_ffeintrin_name_, _ffeintrin_gen_, _ffeintrin_spec_,
_ffeintrin_imp_, names, gens, imps, specs, cc_pair,
cc_descriptions, cc_summaries): Likewise.
* intrin.c (_ffeintrin_name_, _ffeintrin_gen_, _ffeintrin_spec_,
_ffeintrin_imp_, ffeintrin_names_, ffeintrin_gens_,
ffeintrin_imps_, ffeintrin_specs_): Likewise.
java:
* jcf-io.c (format_uint): Const-ify.
* lang.c (java_tree_code_type, java_tree_code_length): Likewise.
* lex.c (java_get_line_col): Likewise.
* parse.y (build_incdec): Likewise.
From-SVN: r46062
2001-10-07 16:51:11 +00:00
Richard Henderson
6723181663
tree.def (FDESC_EXPR): New.
...
gcc/
* tree.def (FDESC_EXPR): New.
* expr.c (expand_expr): Handle it.
* varasm.c (initializer_constant_valid_p): Likewise.
(output_constant): Likewise.
* defaults.h (TARGET_VTABLE_USES_DESCRIPTORS): New.
* config/ia64/ia64.h (TARGET_VTABLE_USES_DESCRIPTORS): New.
(ASM_OUTPUT_FDESC): New.
* doc/tm.texi: Document the new macros.
gcc/cp/
* 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.
gcc/java/
* class.c (get_dispatch_table): Handle function descriptors.
(build_dtable_decl): Likewise.
* expr.c (build_invokevirtual): Likewise.
gcc/testsuite/
* g++.old-deja/g++.abi/ptrmem.C: Update for ia64 c++ abi.
* g++.old-deja/g++.abi/vtable2.C: Likewise.
From-SVN: r45733
2001-09-21 09:58:22 -07:00
Joseph Myers
91d231cb91
Table-driven attributes.
...
* c-decl.c, config/alpha/alpha.c, config/arc/arc.c,
config/arm/arm.c, config/arm/pe.c, config/avr/avr.c,
config/avr/avr.h, config/d30v/d30v.h, config/fr30/fr30.h,
config/h8300/h8300.c, config/i386/cygwin.h, config/i386/winnt.c,
config/m32r/m32r.c, config/mcore/mcore.c, config/sh/sh.c,
config/stormy16/stormy16.h, config/v850/v850.c, doc/c-tree.texi,
doc/tm.texi, ggc-common.c, integrate.c, print-tree.c, tree.c,
tree.h: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
* tree.h (struct tree_decl): Change machine_attributes to
attributes.
* doc/c-tree.texi: Document that all attributes are now attached
to decls and types.
* c-common.c (add_attribute, attrtab, attrtab_idx,
default_valid_lang_attribute, valid_lang_attribute): Remove.
(attribute_tables, attributes_initialized,
c_common_attribute_table, default_lang_attribute_table): New
variables.
(handle_packed_attribute, handle_nocommon_attribute,
handle_common_attribute, handle_noreturn_attribute,
handle_unused_attribute, handle_const_attribute,
handle_transparent_union_attribute, handle_constructor_attribute,
handle_destructor_attribute, handle_mode_attribute,
handle_section_attribute, handle_aligned_attribute,
handle_weak_attribute, handle_alias_attribute,
handle_no_instrument_function_attribute,
handle_no_check_memory_usage_attribute, handle_malloc_attribute,
handle_no_limit_stack_attribute, handle_pure_attribute): New
functions.
(init_attributes, decl_attributes): Rewrite to implement
table-driven attributes.
* c-common.h (enum attribute_flags): Move to tree.h.
* c-format.c (decl_handle_format_attribute,
decl_handle_format_arg_attribute): Rename to
handle_format_attribute and handle_format_arg_attribute. Update
for table-driven attributes.
* c-common.h (decl_handle_format_attribute,
decl_handle_format_arg_attribute): Remove prototypes.
(handle_format_attribute, handle_format_arg_attribute): Add
prototypes.
* c-decl.c (grokdeclarator): Handle attributes nested inside
declarators.
* c-parse.in (setattrs, maybe_setattrs): Remove.
(maybe_type_quals_setattrs): Rename to maybe_type_quals_attrs.
Update to handle nested attributes properly.
(maybe_resetattrs, after_type_declarator,
parm_declarator_nostarttypename, notype_declarator, absdcl1_noea,
absdcl1_ea, direct_absdcl1): Update to handle nested attributes
properly.
(make_pointer_declarator): Update to handle nested attributes
properly.
* doc/extend.texi: Update documentation of limits of attributes
syntax. Warn about problems with attribute semantics in C++.
* target.h (struct target): Remove valid_decl_attribute and
valid_type_attribute. Add attribute_table and
function_attribute_inlinable_p.
* target-def.h (TARGET_VALID_DECL_ATTRIBUTE,
TARGET_VALID_TYPE_ATTRIBUTE): Remove.
(TARGET_ATTRIBUTE_TABLE, TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P):
Add.
(TARGET_INITIALIZER): Update.
* integrate.c (FUNCTION_ATTRIBUTE_INLINABLE_P): Remove default
definition.
(function_attribute_inlinable_p): New function. Check for the
presence of any machine attributes before using
targetm.function_attribute_inlinable_p.
(function_cannot_inline_p): Update.
* Makefile.in (integrate.o): Update dependencies.
* doc/tm.texi: Update documentation of target attributes and
example definition of TARGET_VALID_TYPE_ATTRIBUTE.
* tree.c (default_valid_attribute_p, valid_machine_attribute):
Remove.
(default_target_attribute_table,
default_function_attribute_inlinable_p): New.
(lookup_attribute): Update comment to clarify handling of multiple
attributes with the same name.
(merge_attributes, attribute_list_contained): Allow multiple
attributes with the same name but different arguments to appear in
the same attribute list.
* tree.h (default_valid_attribute_p): Remove prototype.
(struct attribute_spec): New.
(default_target_attribute_table): Declare.
(enum attribute_flags): Move from c-common.h. Add
ATTR_FLAG_TYPE_IN_PLACE.
(default_function_attribute_inlinable_p): Declare.
* config/alpha/alpha.c (vms_valid_decl_attribute_p): Remove.
(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(vms_attribute_table): New.
* config/arc/arc.c (arc_valid_decl_attribute): Remove.
(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(arc_attribute_table, arc_handle_interrupt_attribute): New.
* config/arm/arm.c (arm_valid_type_attribute_p,
arm_valid_decl_attribute_p, arm_pe_valid_decl_attribute_p):
Remove.
(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
define.
(TARGET_ATTRIBUTE_TABLE): Define.
(arm_attribute_table, arm_handle_fndecl_attribute,
arm_handle_isr_attribute): New.
* config/avr/avr.c (avr_valid_type_attribute,
avr_valid_decl_attribute): Remove.
(TARGET_VALID_DECL_ATTRIBUTE, TARGET_VALID_TYPE_ATTRIBUTE): Don't
define.
(TARGET_ATTRIBUTE_TABLE): Define.
(avr_attribute_table, avr_handle_progmem_attribute,
avr_handle_fndecl_attribute): New.
* config/c4x/c4x.c (c4x_valid_type_attribute_p): Remove.
(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(c4x_attribute_table, c4x_handle_fntype_attribute): New.
* config/h8300/h8300.c (h8300_valid_decl_attribute): Remove.
(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(h8300_attribute_table, h8300_handle_fndecl_attribute,
h8300_handle_eightbit_data_attribute,
h8300_handle_tiny_data_attribute): New.
* config/i386/i386-protos.h (ix86_valid_type_attribute_p,
i386_pe_valid_decl_attribute_p, i386_pe_valid_type_attribute_p):
Remove prototypes.
(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New
declarations.
* config/i386/i386.c (ix86_valid_type_attribute_p: Remove.
(TARGET_VALID_TYPE_ATTRIBUTE, TARGET_VALID_DECL_ATTRIBUTE): Don't
define.
(TARGET_ATTRIBUTE_TABLE): Define.
(ix86_attribute_table, ix86_handle_cdecl_attribute,
ix86_handle_regparm_attribute): New.
* config/i386/winnt.c (i386_pe_valid_decl_attribute_p,
i386_pe_valid_type_attribute_p): Remove.
(ix86_handle_dll_attribute, ix86_handle_shared_attribute): New.
* config/ia64/ia64.c (ia64_valid_type_attribute): Remove.
(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(ia64_attribute_table): New.
* config/m32r/m32r.c (m32r_valid_decl_attribute, interrupt_ident1,
interrupt_ident2, model_ident1, model_ident2): Remove.
(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(init_idents): Update.
(m32r_attribute_table, m32r_handle_model_attribute): New.
* config/m68hc11/m68hc11.c (m68hc11_valid_type_attribute_p):
Remove.
(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(m68hc11_attribute_table, m68hc11_handle_fntype_attribute): New.
* config/mcore/mcore.c (mcore_valid_decl_attribute): Remove.
(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(mcore_attribute_table, mcore_handle_naked_attribute): New.
* config/ns32k/ns32k.c (ns32k_valid_type_attribute_p): Remove.
(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(ns32k_attribute_table, ns32k_handle_fntype_attribute): New.
* config/rs6000/rs6000.c (rs6000_valid_type_attribute_p): Remove.
(TARGET_VALID_TYPE_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(rs6000_attribute_table, rs6000_handle_longcall_attribute): New.
* config/sh/sh.c (sh_valid_decl_attribute): Remove.
(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(sh_attribute_table, sh_handle_interrupt_handler_attribute,
sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
New.
* config/stormy16/stormy16.c (stormy16_valid_type_attribute):
Remove.
(TARGET_VALID_TYPE_ATTRIBUTE): Don't define
(TARGET_ATTRIBUTE_TABLE): Define.
(stormy16_attribute_table, stormy16_handle_interrupt_attribute):
New.
* config/v850/v850.c (v850_valid_decl_attribute): Remove.
(TARGET_VALID_DECL_ATTRIBUTE): Don't define.
(TARGET_ATTRIBUTE_TABLE): Define.
(v850_attribute_table, v850_handle_interrupt_attribute,
v850_handle_data_area_attribute): New.
* config/v850/v850-c.c (mark_current_function_as_interrupt):
Return void. Call decl_attributes instead of
valid_machine_attribute.
cp:
Table-driven attributes.
* decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
* decl2.c (cplus_decl_attributes): Only take one attributes
parameter.
* 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 <jason@yorick.cygnus.com>
* 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
valid_lang_attribute.
* 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
targetm.valid_type_attribute.
testsuite:
Table-driven attributes.
* g++.dg/ext/attrib1.C: New test.
From-SVN: r45718
2001-09-21 02:27:06 +01:00
Nathan Sidwell
5234e23b11
oops, missed a bit in previous commit
...
From-SVN: r45436
2001-09-06 09:41:29 +00:00
Nathan Sidwell
39e78d8bfc
re PR c++/3986 (ICE in build_rtti_vtbl_entries)
...
cp:
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
canonical.
(mark_primary_virtual_base): Remove BINFO parameter.
(mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
testsuite:
PR c++/3986
* g++.dg/abi/vbase1.C: New test.
From-SVN: r45435
2001-09-06 09:03:31 +00:00
Nathan Sidwell
6d0a3f67bb
Remove TYPE_NONCOPIED_PARTS.
...
* tree.h (TYPE_NONCOPIED_PARTS): Remove.
(struct tree_type): Remove noncopied_parts.
* c-tree.h (TYPE_ACTUAL_ARG_TYPES): Map onto TYPE_BINFO.
* expr.c (save_noncopied_parts, init_noncopied_parts): Remove.
(fixed_type_p): Remove.
(expand_expr, INIT_EXPR): Don't deal with noncopied parts.
(expand_expr, MODIFY_EXPR): Likewise.
* ggc-common.c (ggc_mark_trees): Remove TYPE_NONCOPIED_PARTS.
* doc/c-tree.texi: Remove TYPE_NONCOPIED_PARTS FIXME.
cp:
Remove TYPE_NONCOPIED_PARTS.
* cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
CLASSTYPE_PURE_VIRTUALS.
(TYPE_RAISES_EXCEPTIONS): Map onto TYPE_BINFO.
* class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
(layout_class_type): Don't call fixup_inlin_methods here ...
(finish_struct_1): ... call it here.
From-SVN: r45434
2001-09-06 08:59:39 +00:00
Joern Rennecke
f232e4a500
class.c (build_vtable_entry_ref): Subtract in char*, not ptrdiff_t.
...
* class.c (build_vtable_entry_ref): Subtract in char*, not
ptrdiff_t.
Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r45284
2001-08-30 08:44:22 -04:00
Richard Henderson
b5d1cbd2fa
class.c, cp-tree.h (build_vfn_ref): Remove.
...
* class.c, cp-tree.h (build_vfn_ref): Remove.
* call.c, rtti.c: Replace all refernces with build_vtbl_ref.
From-SVN: r44913
2001-08-14 16:51:27 -07:00
Nathan Sidwell
0830ae44cd
re PR c++/3820 (GCC 3.0 crashes with empty base class)
...
cp:
PR c++/3820
Stop using TYPE_NONCOPIED_PARTS.
* 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
TYPE_NONCOPIED_PARTS.
(finish_struct_1): Don't add the VFIELD either.
* cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
initialization.
testsuite:
* g++.dg/abi/empty4.C: New test.
From-SVN: r44691
2001-08-07 13:57:06 +00:00
Nathan Sidwell
20dde49d1f
re PR c++/3631 (another linking problem with virtual derivation)
...
cp:
PR c++/3631
* class.c (update_vtable_entry_for_fn): The fixed adjustment
of a virtual thunk should be from declaring base.
testsuite:
* g++.dg/abi/vthunk1.C: New test.
From-SVN: r44509
2001-07-31 08:56:09 +00:00
Nathan Sidwell
b7ad2f8bac
class.c (dfs_ctor_vtable_bases_queue_p): Always walk into the shared virtual base, so preserving inheritance graph order.
...
cp:
* class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
the shared virtual base, so preserving inheritance graph order.
testsuite:
* g++.dg/abi/vbase8-22.C: New test.
From-SVN: r44506
2001-07-31 08:49:00 +00:00
Nathan Sidwell
0ab142b027
class.c (mark_primary_virtual_base): Don't adjust base offsets here.
...
cp:
* 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.
testsuite:
* g++.dg/abi/vbase8-21.C: New test.
From-SVN: r44425
2001-07-27 15:12:49 +00:00
Nathan Sidwell
d60d223b17
class.c (finish_struct_1): When copying the primary base's VFIELD, make sure we find it is at offset zero.
...
cp:
* class.c (finish_struct_1): When copying the primary base's
VFIELD, make sure we find it is at offset zero.
testsuite:
* g++.dg/abi/vbase8-10.C: New test.
From-SVN: r44421
2001-07-27 15:07:40 +00:00
Nathan Sidwell
0abe00c528
class.c (build_vtbl_or_vbase_field): Remove, move into ...
...
cp:
* class.c (build_vtbl_or_vbase_field): Remove, move into ...
(create_vtbl_ptr): ... here.
From-SVN: r44337
2001-07-25 08:54:06 +00:00
Nathan Sidwell
90b1ca2f52
class.c (build_vbase_offset_vbtl_entries): Look for non-primary base of which we are a sub vtable.
...
cp:
* class.c (build_vbase_offset_vbtl_entries): Look for
non-primary base of which we are a sub vtable.
testsuite:
* g++.old-deja/g++.abi/vbase8-5.C: New test.
From-SVN: r44336
2001-07-25 08:52:32 +00:00
Graham Stott
18fee3ee73
class.c (type_requires_array_cookie): Fix use of uninitialised variable has_two_argument_delete_p.
...
* cp/class.c (type_requires_array_cookie): Fix use of uninitialised
variable has_two_argument_delete_p.
From-SVN: r44256
2001-07-23 06:34:51 +00:00
Nathan Sidwell
c4372ef4c6
tm.texi: Remove DEFAULT_VTABLE_THUNKS.
...
gcc:
* doc/tm.texi: Remove DEFAULT_VTABLE_THUNKS.
* config/freebsd.h: Likewise.
* config/linux.h: Likewise.
* config/openbsd.h: Likewise.
* config/alpha/linux-elf.h: Likewise.
* config/arm/linux-elf.h: Likewise.
* config/d30v/d30v.h: Likewise.
* config/fr30/fr30.h: Likewise.
* config/ia64/aix.h: Likewise.
* config/ia64/ia64.h: Likewise.
* config/mips/linux.h: Likewise.
* config/pj/pj.h: Likewise.
* config/rs6000/linux.h: Likewise.
* config/sparc/linux.h: Likewise.
* config/sparc/linux64.h: Likewise.
cp:
Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
* cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
(CPTI_INDEX_IDENTIFIER): Remove.
(CPT_PFN_OR_DELTA2_IDENTIFIER): Remove.
(delta2_identifier): Remove.
(index_identifier): Remove.
(pfn_or_delta2_identifier): Remove.
(flag_vtable_thunks): Remove.
(VTABLE_DELTA2_NAME): Remove.
(VTABLE_INDEX_NAME): Remove.
(FNADDR_FROM_VTABLE_ENTRY): Adjust.
(vfunc_ptr_type_node): Adjust.
(VTABLE_NAME_PREFIX): 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
code.
* 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.
From-SVN: r44227
2001-07-21 09:42:21 +00:00
Nathan Sidwell
3461fba7ad
Remove old-abi remnants.
...
Remove old-abi remnants. Remove comments about old abi
behaviour. Remove refences 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.
(TYPE_CONTAINS_VPTR_P): Adjust.
(VTT_NAME_PREFIX): Remove.
(CTOR_VTBL_NAME_PREFIX): Remove.
(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.
From-SVN: r44215
2001-07-21 00:03:21 +00:00
Mark Mitchell
b7076960b3
* class.c (finish_struct_anon): Forbid nested classes.
...
From-SVN: r44148
2001-07-19 07:22:40 +00:00
Mark Mitchell
dbc957f103
class.c (type_requires_array_cookie): New function.
...
* 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.
(TYPE_VEC_NEW_USES_COOKIE): Reimplement.
* pt.c (instantiate_class_template): Don't set
TYPE_VEC_DELETE_TAKES_SIZE.
* NEWS: Document ABI changes from GCC 3.0.
From-SVN: r44142
2001-07-19 04:27:16 +00:00
Joseph Myers
59387d2e31
c-common.c (decl_attributes): Take a pointer to the node to which attributes are to be attached...
...
* c-common.c (decl_attributes): Take a pointer to the node to
which attributes are to be attached, and a flags argument.
* c-common.h (enum attribute_flags): New.
(decl_attributes): Update prototype.
* c-decl.c (start_decl, push_parm_decl, finish_struct,
finish_enum, start_function): Update calls to decl_attributes.
* c-parse.in (component_declarator, component_notype_declarator,
label): Update calls to decl_attributes.
cp:
* 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.
From-SVN: r43995
2001-07-13 21:40:43 +01:00
Jan van Male
ae0ed63adc
regmove.c (replace_in_call_usage): Fix warnings.
...
2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl>
* regmove.c (replace_in_call_usage): Fix warnings.
* sched-deps.c (add_dependence): Fix warnings.
* simplify-rtx.c (simplify_subreg): Likewise.
Return NULL_RTX instead of NULL.
* reg-stack.c (emit_swap_insn): Eliminate warnings.
(subst_asm_stack_regs): Likewise.
* combine.c (num_sign_bit_copies): Cast bitwidth to int to avoid
warnings.
* dwarf2out.c (output_call_frame_info): Declare i as int.
(build_abbrev_table): Declare n_alloc as int.
(dwarf2out_finish): Initialize die.
* except.c: Declare sjlj_funcdef_number as unsigned.
(connect_post_landing_pads): Declare j as unsigned.
(convert_to_eh_region_ranges): Initialize call_site.
(output_function_exception_table): Initialize tt_format_size.
* expr.c (move_by_pieces_1): Initialize to1.
(store_constructor): Initialize minelt and maxelt.
* flow.c (mark_regs_live_at_end): Declare i as unsigned.
* function.c (instantiate_decls): Avoid signed/unsigned warning.
* c-decl.c (combine_parm_decls): Unused, remove.
* c-tree.h: Remove prototype for combine_parm_decls.
* reload.c (push_reload): Fix warning.
(regno_clobbered_p): Likewise.
* reload1.c (replace_pseudos_in_call_usage): Likewise.
(reload_combine): Likewise.
* bitmap.c: Rename bitmap_zero to bitmap_zero_bits to fix warnings.
* bitmap.h: Rename bitmap_zero to bitmap_zero_bits to fix
warnings.
* bitmap.c (bitmap_operation): Change user.
* bitmap.h (EXECUTE_IF_AND_COMPL_IN_BITMAP): Likewise.
For cp/:
2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl>
* 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.
* 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.
For ch/:
2001-07-10 Jan van Male <jan.vanmale@fenk.wau.nl>
* ch-tree.h: Remove prototype for combine_parm_decls, unused
function.
From-SVN: r43893
2001-07-10 12:38:10 +02:00
Jason Merrill
049d2def48
tidy
...
From-SVN: r43440
2001-06-18 07:17:53 -04:00
Jason Merrill
13de7ec4a5
class.c (dfs_accumulate_vtbl_inits): Just point to the base we're sharing a ctor vtable with.
...
* 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.
From-SVN: r43399
2001-06-15 10:03:09 -04:00
Jason Merrill
3ea099f179
class.c (dfs_find_final_overrider): Fix logic.
...
* 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.
From-SVN: r43372
2001-06-14 08:59:40 -04:00
Nathan Sidwell
87326ba888
class.c (dfs_accumulate_vtbl_inits): For case 2 & 3...
...
cp:
* 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.
testsuite:
* g++.old-deja/g++.abi/vbase8-9.C: New test.
From-SVN: r43368
2001-06-14 10:48:20 +00:00
Nathan Sidwell
623fe76a4c
PR c++/3130, c++/3131, c++/3132
...
cp:
PR c++/3130, c++/3131, c++/3132
* cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
* class.c (force_canonical_binfo_r): Move
BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't 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
candidates.
(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.
testsuite:
* g++.old-deja/g++.abi/vbase5.C: New test.
* g++.old-deja/g++.abi/vbase6.C: New test.
* g++.old-deja/g++.abi/vbase7.C: New test.
From-SVN: r43266
2001-06-12 18:08:05 +00:00
Nathan Sidwell
7bdcf888aa
re PR c++/3089 (ICE in dfs_accumulate_vtbl_inits)
...
cp:
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.
testsuite:
* g++.old-deja/g++.abi/vbase4.C: New test.
From-SVN: r43248
2001-06-12 08:47:48 +00:00
Nathan Sidwell
85a9a0a28b
re PR c++/3061 (kde2/artsd miscompilation (part 2))
...
PR c++/3061
* class.c (build_secondary_vtable): Use assert, rather than an error
message.
(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.
Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r43006
2001-06-08 07:10:29 -04:00