This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] C++ EH question
- From: Jason Merrill <jason at redhat dot com>
- To: law at redhat dot com
- Cc: rth at redhat dot com, gcc at gcc dot gnu dot org
- Date: Tue, 25 Mar 2003 01:58:21 -0500
- Subject: Re: [tree-ssa] C++ EH question
- References: <200303242357.h2ONvVVD021745@speedy.slc.redhat.com>
On Mon, 24 Mar 2003 16:57:31 -0700, law at redhat dot com wrote:
> So I'm sitting here still extremely confused by the code in except.c.
> I'm starting to think that ignoring it for now and simply asking a
> few questions is advisable at this stage.
>
> The second operand of a TRY_CATCH_EXPR has a list of types handled by
> the catch block. These are CATCH_TYPES. Right?
CATCH_TYPES is the first operand of a CATCH_EXPR, which is different from a
TRY_CATCH_EXPR.
There are three cases for the handler operand of a TRY_CATCH_EXPR:
case CATCH_EXPR: (possibly wrapped in a COMPOUND_EXPR)
This is a try/catch construct, with a sequence of CATCH_EXPRs, one for
each catch block.
case EX_FILTER_EXPR:
This is an exception specification.
default:
This is a cleanup.
expand_eh_handler deals with the different possibilities.
> If CATCH_TYPES is null, does the catch block effectively handle all
> types?
Yes.
Jason