aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/decl2.c
diff options
context:
space:
mode:
authorNathan Sidwell <sidwell@codesourcery.com>2000-01-28 13:30:13 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2000-01-28 13:30:13 +0000
commit7267d6924e8ce13cbb4003cb6fe2a83702f8b0cc (patch)
tree319612614a1a38c46dc5ff15b2d46fd2af2763f8 /gcc/cp/decl2.c
parent73565a7129b32a8b2e3e463c4e8595b499a75de5 (diff)
downloadgcc-7267d6924e8ce13cbb4003cb6fe2a83702f8b0cc.zip
gcc-7267d6924e8ce13cbb4003cb6fe2a83702f8b0cc.tar.gz
gcc-7267d6924e8ce13cbb4003cb6fe2a83702f8b0cc.tar.bz2
Compiler side new abi rtti (not enabled).
* cp-tree.h (new_abi_rtti_p): New macro. (emit_support_tinfos): Prototype new function. (tinfo_decl_p): Likewise. (emit_tinfo_decl): Likwise. * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL): New accessor macros. (doing_runtime): New local static. (init_rtti_processing): Add new-abi initializer. (get_tinfo_decl): Add new-abi logic. (tinfo_from_decl): Likewise. (build_dynamic_cast_1): Likewise. (qualifier_flags): New static function. (tinfo_base_init): Likewise. (generic_initializer): Likewise. (ptr_ref_initializer): Likewise. (ptmd_initializer): Likewise. (class_hint_flags): Likewise. (class_initializer): Likewise. (synthesize_tinfo_var): Likewise. (create_real_tinfo_var): Likewise. (create_pseudo_type_info): Likewise. (get_vmi_pseudo_type_info): Likewise. (create_tinfo_types): Likewise. (emit_support_tinfos): New global function. (tinfo_decl_p): New global predicate. (emit_tinfo_decl): New global function. * class.c (set_rtti_entry): Generalize for old and new rtti. (build_vtbl_initializer): Likewise. * decl2.c (finish_file): Likewise. From-SVN: r31668
Diffstat (limited to 'gcc/cp/decl2.c')
-rw-r--r--gcc/cp/decl2.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 6196963..50a5d31 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -3434,6 +3434,9 @@ finish_file ()
varconst_time += this_time - start_time;
start_time = get_run_time ();
+ if (new_abi_rtti_p ())
+ emit_support_tinfos ();
+
do
{
reconsider = 0;
@@ -3450,6 +3453,12 @@ finish_file ()
/*data=*/0))
reconsider = 1;
+ /* Write out needed type info variables. Writing out one variable
+ might cause others to be needed. */
+ if (new_abi_rtti_p ()
+ && walk_globals (tinfo_decl_p, emit_tinfo_decl, /*data=*/0))
+ reconsider = 1;
+
/* The list of objects with static storage duration is built up
in reverse order. We clear STATIC_AGGREGATES so that any new
aggregates added during the initialization of these will be