The only extra restriction that I am aware of is that you cannot __builtin_longjmp to a jmpbuf within the current function. Why not? This happens all the time in Ada.