https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119628
--- Comment #24 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Ken Jin from comment #22) > Hi H.J, > > Thanks a lot for your work on this. I get a crash due to a possible > miscompile on the latest GCC commit > (7c67f7f8d4c8aadbe8efd733c29d13bfcbb0f50f). > > Unfortunately, I cannot create a minimal reproducer right now, but something > strange is going at the boundary where a normal function calls a > preserve_none function, and where a preserve_none function returns back to > the non preserve_none function. An interesting observation: passing > `-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer` seems to produce a > working binary that doesn't crash. > > The call stack at the crash is something like _PyEval_EvalFrameDefault (not > tail call, not preserve_none) -> _TAIL_CALL_start_frame (preserve_none) -> > (indeterminate number of tail calls, preserve_none) -> > _TAIL_CALL_INTERPRETER_EXIT (preserve_none) > > _TAIL_CALL_INTERPRETER_EXIT function contains a bare return out of the tail > call sequence. How do I reproduce it? Do you have a step-by-step guide? Thanks.