http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59039
--- Comment #12 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > %rdi holds the function parameter 'i'. But when __builtin_longjmp is > called, %rdi can have some random value. GCC doesn't save %rdi first. No, __builtin_longjmp doesn't touch %rdi at all. Don't worry too much, the SJLJ mechanism of the C++ and Ada compilers has been piggybacked on this for a couple of decades, this is quite robust.