------- Comment #26 from rguenth at gcc dot gnu dot org 2009-01-20 15:29 ------- Well, ISTR something about local variables need to be marked volatile if you use setjmp/longjmp. Is psim really in compliance with what the standard says here? See 7.13.2.1/3 "..., except that the values of objects of automatic storage duration that are local to the function containing the invocation of the corresponding setjmp macro that do not have volatile-qualified type and have been changed between the setjmp invocation and longjmp call are indeterminate"
Which also means that if GCC may introduce violations of that criterion then GCC needs to stop inlining into setjmp functions and/or disable any other optimization that may result in violations of that. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38587