]> granicus.if.org Git - python/commitdiff
Issue #23654: Fix faulthandler._stack_overflow() for the Intel C Compiler (ICC)
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 23 Mar 2015 20:20:27 +0000 (21:20 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 23 Mar 2015 20:20:27 +0000 (21:20 +0100)
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.

Misc/ACKS
Modules/faulthandler.c

index cdee1bbcf8fe0ccf73f51a21e2b4964d7b281570..d0d5e257d2558fdf670c1677feca204465290081 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -436,6 +436,7 @@ Doug Fort
 Chris Foster
 John Fouhy
 Andrew Francis
+Matt Frank
 Stefan Franke
 Martin Franklin
 Kent Frazier
index 01e7beb25500c00e5e47564eb56228120eafd6bf..c729414a497985fe6492515439506c995f7a0790 100644 (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 */