[Python-checkins] cpython (3.4): Issue #23654: Fix faulthandler._stack_overflow() for the Intel C Compiler (ICC)

victor.stinner python-checkins at python.org
Mon Mar 23 21:21:50 CET 2015


https://hg.python.org/cpython/rev/d6003de8ecc8
changeset:   95144:d6003de8ecc8
branch:      3.4
parent:      95142:6eb48b22ff5c
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Mon Mar 23 21:20:27 2015 +0100
summary:
  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.

files:
  Misc/ACKS              |  1 +
  Modules/faulthandler.c |  9 ++++++++-
  2 files changed, 9 insertions(+), 1 deletions(-)


diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -436,6 +436,7 @@
 Chris Foster
 John Fouhy
 Andrew Francis
+Matt Frank
 Stefan Franke
 Martin Franklin
 Kent Frazier
diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c
--- a/Modules/faulthandler.c
+++ b/Modules/faulthandler.c
@@ -911,7 +911,14 @@
 }
 
 #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 */

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list