This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: sjlj exceptions
- To: John David Anglin <dave at hiauly1 dot hia dot nrc dot ca>
- Subject: Re: PATCH: sjlj exceptions
- From: Richard Henderson <rth at cygnus dot com>
- Date: Fri, 27 Oct 2000 16:09:50 -0700
- Cc: gcc-patches at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, law at cygnus dot com
- References: <200010272021.QAA08569@hiauly1.hia.nrc.ca>
On Fri, Oct 27, 2000 at 04:21:27PM -0400, John David Anglin wrote:
> There are two separate parts to the fix. The first part is to define
> a nonlocal goto label after the setjmp call when a library version of
> setjmp. This fixes the basic block reordering problem noted in this post:
> <http://gcc.gnu.org/ml/gcc-bugs/2000-10/msg00526.html>.
This is surely wrong.
The only correct way to fix the edge count problems in sjlj exception
handling is to partition the non-local goto support such that we can
keep track of which labels are used for actual non-local gotos and
which are exception handling targets. To-date, no one has cared,
since dwarf2 exceptions are so much cleaner.
> The second part is to set current_function_calls_setjmp = 1. This causes
> the gcse pass to punt, preventing the memory buildup. I think it is also
> necessary to ensure that registers are properly saved.
This should only be done for DONT_USE_BUILTIN_SETJMP, and it
is only needed if the target defines NON_SAVING_SETJMP. I.e.
it is a problem, but not for pa.
> On the otherhand, I doubt -fno-sjlj-exceptions has ever been
> tested on the pa.
I'd have thought Jeff would have played with it for pa64. But
even if he didn't, it would be a good thing to get this enabled.
> Currently, calls without a REG_EH_REGION note generate edges to
> all nonlocal labels in the function.
This is absolutely correct. The problem is not with this, it is
that non-local labels are being used to represent EH. If you
really did have 60 real non-local goto targets, you really would
have to create all of those edges.
r~