This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: ia64 unwind thoughts


>>>>> "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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]