This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Add support for a TREE_LIST of types to expand_start_catch
- From: Richard Henderson <rth at redhat dot com>
- To: Olivier Hainque <hainque at ACT-Europe dot FR>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 15 Nov 2001 17:56:00 -0800
- Subject: Re: Add support for a TREE_LIST of types to expand_start_catch
- References: <ktwv0sqdv4.fsf@berlin.int.act-europe.fr>
On Thu, Nov 15, 2001 at 03:59:27PM +0100, Olivier Hainque wrote:
> Successfully bootstrapped and regression tested for c, c++ on
> i686-pc-linux-gnu. Also basically tested for functionality on a couple
> of Ada testcases.
It'd be nice to test Java as well, since it excercises code
that C++ doesn't (rtl inlining). However, everything looks good.
> * except.c: Support for catching a list of types with a single handler
> (struct eh_region): Change type and filter to lists for catch regions.
> (mark_eh_region): Mark the filter list for GC also.
> (expand_start_catch): Always build a list if argument not NULL and
> register each type of the list through add_type_for_runtime.
> (duplicate_eh_region_1): Change type into type_list for catch regions.
> (assign_filter_values): Assign a filter to each type associated with a
> catch region. Assign filter for NULL types in a unique entry in the
> filter list.
> (build_post_landing_pads): Emit compare and jump for each filter of
> the list associated with a catch region.
> (reachable_next_level): When the type thrown is known, stop the search
> as soon as one type within a catch list matches. Also, a handler is
> potentially reachable only if at least one of the types it catches
> has not been previously caught.
> (collect_one_action_chain): Retrieve the filter for a NULL type list
> from the first filter list entry. For non NULL type lists, add an
> action record for every filter assigned.
>
> * except.h: Reflect changes in comment before expand_start_catch.
Ok.
r~