This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: ia64 unwind thoughts
- To: Richard Henderson <rth at redhat dot com>
- Subject: Re: ia64 unwind thoughts
- From: Jason Merrill <jason at redhat dot com>
- Date: 23 Feb 2001 10:52:13 +0000
- Cc: mark at codesourcery dot com, gcc at gcc dot gnu dot org, Jason Merrill <jason at redhat dot com>
- References: <20010222185552.A2898@redhat.com>
>>>>> "Richard" == Richard Henderson <rth@redhat.com> writes:
> One concern I have is that you can't tell the difference in the
> action table between a pure cleanup and a catch(...). If I read
> things properly, both have a call-site record with a non-zero
> action, and an action record with a filter of zero.
I believe that the intent is that a pure cleanup will have no action
record, just a landing pad.
> Not to mention the fact that the IA-64 unwind info record for a
> function is set up to pre-filter for pass1 vs pass2, meaning that
> an out-of-line function with a cleanup would be passed over in
> pass1, properly treating its handlers as cleanup only. If that
> same function were inlined into a function that really had try
> blocks (and so the enclosing function is processed in pass1) then
> those cleanups suddenly become (...) handlers.
The cleanups don't became handlers; call sites within the inlined function
gain action records that refer to the handlers for the enclosing try
blocks.
> We also might want to think about how to annotate a dwarf2 fde
> with pass1 vs pass2 indicators. I suspect that quite a lot of
> c++ functions that do exception handling at all are for cleanup
> only, and do not have catch handlers.
So we wouldn't bother scanning the LSDA for such a function, you mean?
Sounds reasonable.
Jason