Issue #23654: Fix faulthandler._stack_overflow() for the Intel C Compiler (ICC)

Issue #23654: Turn off ICC's tail call optimization for the stack_overflow
generator. ICC turns the recursive tail call into a loop.

Patch written by Matt Frank.
This commit is contained in:
Victor Stinner 2015-03-23 21:20:27 +01:00
parent d4c2ac8394
commit 19276f184f
2 changed files with 9 additions and 1 deletions

View File

@ -436,6 +436,7 @@ Doug Fort
Chris Foster
John Fouhy
Andrew Francis
Matt Frank
Stefan Franke
Martin Franklin
Kent Frazier

View File

@ -911,7 +911,14 @@ faulthandler_fatal_error_py(PyObject *self, PyObject *args)
}
#if defined(HAVE_SIGALTSTACK) && defined(HAVE_SIGACTION)
static Py_uintptr_t
#ifdef __INTEL_COMPILER
/* Issue #23654: Turn off ICC's tail call optimization for the
* stack_overflow generator. ICC turns the recursive tail call into
* a loop. */
# pragma intel optimization_level 0
#endif
static
Py_uintptr_t
stack_overflow(Py_uintptr_t min_sp, Py_uintptr_t max_sp, size_t *depth)
{
/* allocate 4096 bytes on the stack at each call */