This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

C++ PATCH: new-abi rtti runtime


Hi,
I've installed the attached patch which contains the runtme support
for the new-abi rtti structures. It also turns on new_abi_rtti_p
to pay attention to the -fnew-abi flag. With this, g++ generates
and uses the new-abi rtti structures when invoked with -fnew-abi.

Some defects/ambiguities in the specification have come to light
with this work and CodeSourcery will be altering the implementation
over the next few weeks as these are resolved.

If you wish to experiment with the new-abi, please do so, but
remember the work is incomplete.

nathan
-- 
Dr Nathan Sidwell :: sidwell@codesourcery.com
nathan@acm.org  http://www.cs.bris.ac.uk/~nathan/  nathan@cs.bris.ac.uk

2000-01-31  Nathan Sidwell  <sidwell@codesourcery.com>

        * cp-tree.h (new_abi_rtti_p): Use flag_new_abi.

        Runtime support for new-abi rtti.
        * inc/typeinfo (type_info::operator!=): Define in class.
        (type_info::before, type_info::name, type_info::operator==,
        type_info::operator!=): Define new ABI implementations.
        (type_info::is_pointer_p, type_info::is_function_p): Declare
        new virtual functions.
        (type_info::do_catch, type_info::do_upcast): Likewise.

        * tinfo.h (__base_class_info): Define new class.
        (__class_type_info): Likewise.
        (__si_class_type_info): Likewise.
        (__vmi_class_type_info): Likewise.
        (__dynamic_cast): Prototype.

        * tinfo.cc: Conditionalize old and new rtti mechanisms.
        (type_info::is_pointer_p): Define new function.
        (type_info::is_function_p): Likewise.
        (type_info::do_catch): Likewise.
        (type_info::do_upcast): Likewise.
        (vtable_prefix): New structure for vtable access.
        (adjust_pointer): Define new template function.
        (contained_p, public_p, virtual_p, contained_public_p,
        contained_nonpublic_p, contained_nonvirtual_p): Define new
        functions.
        (nonvirtual_base_type): New local variable.
        (__class_type_info::~__class_type_info): Define.
        (__si_class_type_info::~__si_class_type_info): Likewise.
        (__vmi_class_type_info::~__vmi_class_type_info): Likewise.
        (__class_type_info::do_catch): Define new function.
        (__class_type_info::do_upcast): Likewise.
        (__class_type_info::find_public_src): Likewise.
        (__class_type_info::do_find_public_src): Likewise.
        (__si_class_type_info::do_find_public_src): Likewise.
        (__vmi_class_type_info::do_find_public_src): Likewise.
        (__class_type_info::do_dyncast): Likewise.
        (__si_class_type_info::do_dyncast): Likewise.
        (__vmi_class_type_info::do_dyncast): Likewise.
        (__class_type_info::do_upcast): Likewise.
        (__si_class_type_info::do_upcast): Likewise.
        (__vmi_class_type_info::do_upcast): Likewise.
        (__dynamic_cast): Likewise.

        * tinfo2.cc (__fundamental_type_info): Define new class.
        (__pointer_type_info): Likewise.
        (__reference_type_info): Likewise.
        (__array_type_info): Likewise.
        (__function_type_info): Likewise.
        (__enum_type_info): Likewise.
        (__ptr_to_member_type_info): Likewise.
        (__fundamental_type_info::~__fundamental_type_info): Define.
        (__pointer_type_info::~__pointer_type_info): Likewise.
        (__reference_type_info::~__reference_type_info): Likewise.
        (__array_type_info::~__array_type_info): Likewise.
        (__function_type_info::~__function_type_info): Likewise.
        (__enum_type_info::~__enum_type_info): Likewise.
        (__ptr_to_member_type_info::~__ptr_to_member_type_info): Likewise.
        (__pointer_type_info::do_catch): Define new function.
        (__ptr_to_member_type_info::do_catch): Define new function.

        (__throw_type_match_rtti_2): Use new ABI interface, if enabled.
        (__is_pointer): Likewise.

        * exception.cc (__cplus_type_matcher): Deal with new-abi rtti.

rtti3.patch.gz


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]