From: Ken Jin Date: Fri, 23 Feb 2024 18:43:52 +0000 (+0800) Subject: gh-115859: Disable the tier 2 redundancy eliminator by default (GH-115860) X-Git-Tag: v3.13.0a5~267 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3d8fc06d4f8dc1e7be2455a7e89b37285fa89112;p=thirdparty%2FPython%2Fcpython.git gh-115859: Disable the tier 2 redundancy eliminator by default (GH-115860) --- diff --git a/Lib/test/test_capi/test_opt.py b/Lib/test/test_capi/test_opt.py index 38c6fa4b47d0..25fc36dec93d 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 9503dcc74656..47bfc8cf1061 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;