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: alpha sjlj exception handling


	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


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