From: Brandt Bucher Date: Wed, 9 Jul 2025 19:11:28 +0000 (-0700) Subject: GH-115802: Optimize JIT stencils for size (GH-136393) X-Git-Tag: v3.15.0a1~1036 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c49dc3bd0f0ac57a038e9ba63e83cfa424e91b2a;p=thirdparty%2FPython%2Fcpython.git GH-115802: Optimize JIT stencils for size (GH-136393) --- diff --git a/Tools/jit/_targets.py b/Tools/jit/_targets.py index ed10329d25d2..728f48128ce7 100644 --- a/Tools/jit/_targets.py +++ b/Tools/jit/_targets.py @@ -137,7 +137,15 @@ class _Target(typing.Generic[_S, _R]): f"-I{CPYTHON / 'Include' / 'internal' / 'mimalloc'}", f"-I{CPYTHON / 'Python'}", f"-I{CPYTHON / 'Tools' / 'jit'}", - "-O3", + # -O2 and -O3 include some optimizations that make sense for + # standalone functions, but not for snippets of code that are going + # to be laid out end-to-end (like ours)... common examples include + # passes like tail-duplication, or aligning jump targets with nops. + # -Os is equivalent to -O2 with many of these problematic passes + # disabled. Based on manual review, for *our* purposes it usually + # generates better code than -O2 (and -O2 usually generates better + # code than -O3). As a nice benefit, it uses less memory too: + "-Os", "-S", # Shorten full absolute file paths in the generated code (like the # __FILE__ macro and assert failure messages) for reproducibility: