From 2942b909d9a428e6683d90b3436cfa4a81bd5d8a Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Wed, 7 Feb 2018 19:09:36 +0900 Subject: [PATCH] bpo-32616: Disable computed gotos by default for clang < 5 (GH-5574) --- .../Build/2018-02-07-11-24-38.bpo-32616.o7mFJ3.rst | 2 ++ Python/ceval.c | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2018-02-07-11-24-38.bpo-32616.o7mFJ3.rst diff --git a/Misc/NEWS.d/next/Build/2018-02-07-11-24-38.bpo-32616.o7mFJ3.rst b/Misc/NEWS.d/next/Build/2018-02-07-11-24-38.bpo-32616.o7mFJ3.rst new file mode 100644 index 00000000000000..cdddc2f2d909dc --- /dev/null +++ b/Misc/NEWS.d/next/Build/2018-02-07-11-24-38.bpo-32616.o7mFJ3.rst @@ -0,0 +1,2 @@ +Disable computed gotos by default for clang < 5.0. It caused significant +performance regression. diff --git a/Python/ceval.c b/Python/ceval.c index 4e4adc2d63dc1b..bae158dc1402b1 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -689,11 +689,19 @@ PyObject * PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) { #ifdef DYNAMIC_EXECUTION_PROFILE - #undef USE_COMPUTED_GOTOS + #undef USE_COMPUTED_GOTOS #endif #ifdef HAVE_COMPUTED_GOTOS #ifndef USE_COMPUTED_GOTOS - #define USE_COMPUTED_GOTOS 1 + #if defined(__clang__) && (__clang_major__ < 5) + /* Computed gotos caused significant performance regression + * with clang < 5.0. + * https://bugs.python.org/issue32616 + */ + #define USE_COMPUTED_GOTOS 0 + #else + #define USE_COMPUTED_GOTOS 1 + #endif #endif #else #if defined(USE_COMPUTED_GOTOS) && USE_COMPUTED_GOTOS