summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKen Jin <kenjin@python.org>2024-02-23 18:43:52 (GMT)
committerGitHub <noreply@github.com>2024-02-23 18:43:52 (GMT)
commit3d8fc06d4f8dc1e7be2455a7e89b37285fa89112 (patch)
treef57ffd1f4c995f64d8b9eaefd831fa087c17fe2a
parente4561e050148f6dc347e8c7ba30c8125b5fc0e45 (diff)
downloadcpython-3d8fc06d4f8dc1e7be2455a7e89b37285fa89112.zip
cpython-3d8fc06d4f8dc1e7be2455a7e89b37285fa89112.tar.gz
cpython-3d8fc06d4f8dc1e7be2455a7e89b37285fa89112.tar.bz2
gh-115859: Disable the tier 2 redundancy eliminator by default (GH-115860)
-rw-r--r--Lib/test/test_capi/test_opt.py3
-rw-r--r--Python/optimizer_analysis.c9
2 files changed, 9 insertions, 3 deletions
diff --git a/Lib/test/test_capi/test_opt.py b/Lib/test/test_capi/test_opt.py
index 38c6fa4..25fc36d 100644
--- a/Lib/test/test_capi/test_opt.py
+++ b/Lib/test/test_capi/test_opt.py
@@ -4,6 +4,7 @@ import sys
import textwrap
import unittest
import gc
+import os
import _testinternalcapi
@@ -568,6 +569,8 @@ class TestUops(unittest.TestCase):
count = ops.count("_GUARD_IS_TRUE_POP") + ops.count("_GUARD_IS_FALSE_POP")
self.assertLessEqual(count, 2)
+
+@unittest.skipIf(os.getenv("PYTHONUOPSOPTIMIZE", default=0) == 0, "Needs uop optimizer to run.")
class TestUopsOptimization(unittest.TestCase):
def _run_with_optimizer(self, testfunc, arg):
diff --git a/Python/optimizer_analysis.c b/Python/optimizer_analysis.c
index 9503dcc..47bfc8c 100644
--- a/Python/optimizer_analysis.c
+++ b/Python/optimizer_analysis.c
@@ -810,9 +810,12 @@ _Py_uop_analyze_and_optimize(
peephole_opt(frame, buffer, buffer_size);
- err = uop_redundancy_eliminator(
- (PyCodeObject *)frame->f_executable, buffer,
- buffer_size, curr_stacklen, dependencies);
+ char *uop_optimize = Py_GETENV("PYTHONUOPSOPTIMIZE");
+ if (uop_optimize != NULL && *uop_optimize > '0') {
+ err = uop_redundancy_eliminator(
+ (PyCodeObject *)frame->f_executable, buffer,
+ buffer_size, curr_stacklen, dependencies);
+ }
if (err == 0) {
goto not_ready;