STINNER Victor <[email protected]> added the comment:
I don't understand what you are trying to prove about compilers not inlining
when you explicitly ask them... not to inline.
The purpose of the -O0 option is to minimize the build time, with a trade-off:
don't expect the built executable to be fast. If you care about Python
performance... well, don't use -O0? Python ./configure --with-pydebug builds
Python with -Og which is not -O0. The -Og level is special, it's a different
trade-off between the compiler build time and Python runtime performance.
If you want a Python debug build (Py_DEBUG macro defined, ./configure
--with-pydebug), it's perfectly fine to build it with -O2 or -O3 to make sure
that static inline functions are inlined. You can also enable LTO and PGO on a
debug build.
GCC -Og option:
"""
-Og
Optimize debugging experience. -Og should be the optimization level of
choice for the standard edit-compile-debug cycle, offering a reasonable level
of optimization while maintaining fast compilation and a good debugging
experience. It is a better choice than -O0 for producing debuggable code
because some compiler passes that collect debug information are disabled at -O0.
Like -O0, -Og completely disables a number of optimization passes so that
individual options controlling them have no effect. Otherwise -Og enables all
-O1 optimization flags except for those that may interfere with debugging:
-fbranch-count-reg -fdelayed-branch
-fdse -fif-conversion -fif-conversion2
-finline-functions-called-once
-fmove-loop-invariants -fmove-loop-stores -fssa-phiopt
-ftree-bit-ccp -ftree-dse -ftree-pta -ftree-sra
"""
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
I prefer to use gcc -O0 when I develop on Python because the build time matters
a lot in my very specific use case, and gcc -O0 is the best to debug Python in
a debugger. See my article:
https://developers.redhat.com/articles/2021/09/08/debugging-python-c-extensions-gdb
On RHEL8, the Python 3.9 debug build is now built with -O0 to be fully usable
in gdb (to debug C extensions).
In RHEL, the main motivation to use -O0 rather than -Og was to get a fully
working gdb debugger on C extensions. With -Og, we get too many <optimized out>
values which are blocking debugging :-(
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue45476>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com