This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: alpha sjlj exception handling
- To: Richard Henderson <rth at cygnus dot com>
- Subject: Re: alpha sjlj exception handling
- From: Jim Wilson <wilson at cygnus dot com>
- Date: Fri, 07 Nov 1997 12:09:12 -0800
- cc: egcs at cygnus dot com
And I find that the generated code somehow expects the call-saved
registers to be preserved even though no one seems to save them.
This problem might be related to the recent flow changes.
Where is this supposed to happen in the regular case of non-local goto?
A function that is the target of a non-local goto will have the global variable
current_function_has_nonlocal_label set. local-alloc/global/reload all know
that if this variable is set, then pseudos whose lifetime crosses a function
call must be handled specially. I think this special treatment ends up
generating code in such a way that the call saved register problem goes away.
I am not sure if it is because they are somehow saved/restore though, or
whether they somehow avoid using the registers when they won't be saved and
restored. The builtin setjmp code does not set this variable.
Another consideration here, there is a bit of special code in reload that
handles the NOTE_INSN_SETJMP that used to be generated by the builtin setjmp
code. The code looks suspicious to me, but perhaps it was doing something
important that needs to be reimplemented some other way.
Jim