From fc2196854a5649ba2fcffd81ae5d8d23002edab8 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Wed, 7 Feb 2018 11:23:07 +0900 Subject: [PATCH 1/2] bpo-32616: Disable computed gotos by default for clang < 5 --- Python/ceval.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 From ebeb212b0ed917c7d9c11b650e448a78a3ad4a78 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Wed, 7 Feb 2018 11:24:43 +0900 Subject: [PATCH 2/2] Add NEWS entry --- Misc/NEWS.d/next/Build/2018-02-07-11-24-38.bpo-32616.o7mFJ3.rst | 2 ++ 1 file changed, 2 insertions(+) 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.