diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2000-03-29 08:22:21 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2000-03-29 08:22:21 +0000 |
commit | 8a4451aa8d563a9b3ac4dd8c7071ac84e78eda18 (patch) | |
tree | 223207314f829c7e3af1daa12a5580da548c52d4 /gcc/except.c | |
parent | ca36f0577c014e672984e6185352ee028dd3b1f6 (diff) | |
download | gcc-8a4451aa8d563a9b3ac4dd8c7071ac84e78eda18.zip gcc-8a4451aa8d563a9b3ac4dd8c7071ac84e78eda18.tar.gz gcc-8a4451aa8d563a9b3ac4dd8c7071ac84e78eda18.tar.bz2 |
except.c (add_eh_table_entry): Mark type_info's as referenced.
gcc:
* except.c (add_eh_table_entry): Mark type_info's as referenced.
gcc/cp:
* rtti.c (get_tinfo_decl): Mark used.
(emit_tinfo_decl): Don't optimize polymorphic type_info. Only
mark as dealt with, if we output it.
From-SVN: r32799
Diffstat (limited to 'gcc/except.c')
-rw-r--r-- | gcc/except.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/except.c b/gcc/except.c index 2d7114a..67bbc40 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -2162,6 +2162,24 @@ add_eh_table_entry (n) } } eh_table[eh_table_size++] = n; + + if (flag_new_exceptions) + { + /* We will output the exception table late in the compilation. That + references type_info objects which should have already been output + by that time. We explicitly mark those objects as being + referenced now so we know to emit them. */ + struct handler_info *handler = get_first_handler (n); + + for (; handler; handler = handler->next) + if (handler->type_info && handler->type_info != CATCH_ALL_TYPE) + { + tree tinfo = (tree)handler->type_info; + + tinfo = TREE_OPERAND (tinfo, 0); + TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (tinfo)) = 1; + } + } #endif } |