[LLVMdev] setjmp - longjmp

Eli Friedman eli.friedman at gmail.com
Tue Oct 4 15:53:51 PDT 2011


On Tue, Oct 4, 2011 at 3:10 PM, Khaled ElWazeer
<khalid.alwazeer at gmail.com> wrote:
> Hi,
>
> I have some code which has sigsetjmp / longjmp. After a longjmp, unreachable
> is inserted, which is fine. The problem is that in the backend before
> calling longjmp, some register was spilled to a stack location which is live
> across the jmp. I mean, it will be live after jumping. The stack location
> was initialized before the call to setjmp, and is used afterwards.
>
> Is there any bug in handling such a case? I mean, how do LLVM knows about
> CFG in case of longjmp / setjmp calls?

No, no handling; we just don't inline anything into functions which
call setjmp, and hope we get lucky.  In practice, that's generally
good enough, given the restrictions on functions that call setjmp, but
there are probably some subtle bugs nobody has discovered yet.

-Eli



More information about the llvm-dev mailing list