From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Wilson To: Richard Henderson Cc: egcs@cygnus.com Subject: Re: alpha sjlj exception handling Date: Fri, 07 Nov 1997 13:05:00 -0000 Message-id: <199711072009.MAA10173@cygnus.com> References: <19971107022442.37969@dot.cygnus.com> X-SW-Source: 1997-11/msg00273.html 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