Skip to content

Conversation

@vstinner
Copy link
Member

@vstinnervstinner commented Oct 25, 2018

Visual Studio solution: the "pythoncore" project is now compiled with
the /Ob1 flag in Debug mode to expand functions marked as inline.

https://bugs.python.org/issue35059

@vstinner
Copy link
MemberAuthor

This change matters when you consider the PR #10079 which converts Py_INCREF() macro to a static inline function.

I'm not sure if it's ok to only modify pythoncore, or if the 38 other projects should be modified the same way?

On Unix, Python is now compiled with -Og:

 -Og Optimize debugging experience. -Og enables optimizations that do not interfere with debugging. It 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. 

@zware
Copy link
Member

You can instead add this to PCbuild/pyproject.props in the existing <ClCompile Condition="$(Configuration) == 'Debug'"> section that disables optimization globally in Debug configuration.

@vstinner
Copy link
MemberAuthor

You can instead add this to PCbuild/pyproject.props in the existing section that disables optimization globally in Debug configuration.

Oh thanks, I will try that! I was looking for something similar, but I failed to find it in the Visual Studio UI.

@vstinner
Copy link
MemberAuthor

You can instead add this to PCbuild/pyproject.props in the existing section that disables optimization globally in Debug configuration.

Oh, fantastic! I tried and it works as expected! It's exactly what I was looking for ;-) I didn't know pyproject.props.

Visual Studio solution: Set InlineFunctionExpansion to OnlyExplicitInline ("/Ob1" option) on all projects (in pyproject.props) in Debug mode on Win32 and x64 platforms to expand functions marked as inline. This change should make Python compiled in Debug mode a little bit faster on Windows. On Unix, GCC uses -Og optimization level for ./configure --with-pydebug.
@vstinnervstinner merged commit a05bef4 into python:masterOct 26, 2018
@vstinnervstinner deleted the msvc_Ob1 branch October 26, 2018 13:10
@bedevere-bot
Copy link

Hi! The buildbot AMD64 Windows7 SP1 3.x has failed when building commit a05bef4.

You can take a look here:

https://buildbot.python.org/all/#builders/40/builds/1057

@vstinner
Copy link
MemberAuthor

Hi! The buildbot AMD64 Windows7 SP1 3.x has failed when building commit a05bef4.

Oh. I broke this buildbot for real :-( The compilation of the _decimal module fails:

 Creating library C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\amd64\_decimal_d.lib and object C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\amd64\_decimal_d.exp 19>ClCompile: xmltok.c 16>ClCompile: prep_cif.c 21>ClCompile: multiprocessing.c 19>ClCompile: Generating Code... 17>_decimal.obj : error LNK2019: unresolved external symbol mpd_del referenced in function PyDec_AsTuple [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] 17>io.obj : error LNK2001: unresolved external symbol mpd_del [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] 17>basearith.obj : error LNK2019: unresolved external symbol mpd_uint_zero referenced in function _mpd_baseshiftl [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] 17>io.obj : error LNK2019: unresolved external symbol mpd_qresize referenced in function mpd_qset_string [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] 17>C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\amd64\_decimal_d.pyd : fatal error LNK1120: 3 unresolved externals [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] (...) "C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj" (Build target) (17) -> (Link target) -> _decimal.obj : error LNK2019: unresolved external symbol mpd_del referenced in function PyDec_AsTuple [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] io.obj : error LNK2001: unresolved external symbol mpd_del [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] basearith.obj : error LNK2019: unresolved external symbol mpd_uint_zero referenced in function _mpd_baseshiftl [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] io.obj : error LNK2019: unresolved external symbol mpd_qresize referenced in function mpd_qset_string [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\amd64\_decimal_d.pyd : fatal error LNK1120: 3 unresolved externals [C:\buildbot.python.org\3.x.kloth-win64\build\PCbuild\_decimal.vcxproj] 

@bedevere-bot
Copy link

Hi! The buildbot AMD64 Windows8 3.x has failed when building commit a05bef4.

You can take a look here:

https://buildbot.python.org/all/#builders/32/builds/1639

@bedevere-bot
Copy link

Hi! The buildbot AMD64 Windows10 3.x has failed when building commit a05bef4.

You can take a look here:

https://buildbot.python.org/all/#builders/3/builds/1566

@vstinner
Copy link
MemberAuthor

It seems like my PR #10128 fixed the linker error.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@vstinner@zware@bedevere-bot@the-knights-who-say-ni