Skip to content

Commit 859c89f

Browse files
committed
minimal changes needed for PGO with clang-cl
1 parent f7c7dec commit 859c89f

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

PCbuild/pyproject.props

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
<Py_IntDir Condition="'$(Py_IntDir)' == ''">$(MSBuildThisFileDirectory)obj\</Py_IntDir>
1111
<IntDir>$(Py_IntDir)\$(MajorVersionNumber)$(MinorVersionNumber)$(ArchName)_$(Configuration)\$(ProjectName)\</IntDir>
1212
<IntDir>$(IntDir.Replace(`\\`, `\`))</IntDir>
13+
<ClangProfileDir>$(Py_IntDir)\$(MajorVersionNumber)$(MinorVersionNumber)$(ArchName)_PGInstrument\__clang_profiles\</ClangProfileDir>
14+
<ClangProfileDir>$(ClangProfileDir.Replace(`\\`, `\`))</ClangProfileDir>
1315
<!-- pyconfig.h is updated by pythoncore.vcxproj, so it's always in pythoncore's IntDir -->
1416
<GeneratedPyConfigDir>$(Py_IntDir)\$(MajorVersionNumber)$(MinorVersionNumber)$(ArchName)_$(Configuration)\pythoncore\</GeneratedPyConfigDir>
1517
<GeneratedFrozenModulesDir>$(Py_IntDir)\$(MajorVersionNumber)$(MinorVersionNumber)_frozen\</GeneratedFrozenModulesDir>
@@ -70,6 +72,8 @@
7072
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
7173
<AdditionalOptions Condition="$(PlatformToolset) == 'ClangCL'">-Wno-deprecated-non-prototype -Wno-unused-label -Wno-pointer-sign -Wno-incompatible-pointer-types-discards-qualifiers -Wno-unused-function %(AdditionalOptions)</AdditionalOptions>
7274
<AdditionalOptions Condition="$(Configuration) != 'Debug' and $(PlatformToolset) == 'ClangCL'">-flto %(AdditionalOptions)</AdditionalOptions>
75+
<AdditionalOptions Condition="$(SupportPGO) and $(Configuration) == 'PGInstrument' and $(PlatformToolset) == 'ClangCL'">-fprofile-instr-generate=$(ClangProfileDir)\default_%m.profraw %(AdditionalOptions)</AdditionalOptions>
76+
<AdditionalOptions Condition="$(SupportPGO) and $(Configuration) == 'PGUpdate' and $(PlatformToolset) == 'ClangCL'">-fprofile-instr-use=$(ClangProfileDir)\profdata.profdata %(AdditionalOptions)</AdditionalOptions>
7377
<AdditionalOptions Condition="$(MSVCHasBrokenARM64Clamping) == 'true' and $(Platform) == 'ARM64'">-d2pattern-opt-disable:-932189325 %(AdditionalOptions)</AdditionalOptions>
7478
<AdditionalOptions Condition="$(MSVCHasBrokenARM64SignExtension) == 'true' and $(Platform) == 'ARM64'">-d2ssa-patterns-all- %(AdditionalOptions)</AdditionalOptions>
7579
<AdditionalOptions Condition="$(GenerateSourceDependencies) == 'true'">/sourceDependencies "$(IntDir.Trim(`\`))" %(AdditionalOptions)</AdditionalOptions>
@@ -185,7 +189,7 @@ public override bool Execute() {
185189
Targets="CleanAll" />
186190
</Target>
187191

188-
<Target Name="CopyPGCFiles" BeforeTargets="PrepareForBuild" Condition="$(Configuration) == 'PGUpdate'">
192+
<Target Name="CopyPGCFiles" BeforeTargets="PrepareForBuild" Condition="$(Configuration) == 'PGUpdate' and $(PlatformToolset) != 'ClangCL'">
189193
<ItemGroup>
190194
<_PGCFiles Include="$(OutDir)instrumented\$(TargetName)!*.pgc" />
191195
<_PGDFile Include="$(OutDir)instrumented\$(TargetName).pgd" />

PCbuild/pythoncore.vcxproj

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,7 @@
420420
<ClCompile Include="..\Modules\blake2module.c">
421421
<PreprocessorDefinitions Condition="'$(Platform)' == 'x64'">HACL_CAN_COMPILE_SIMD128;%(PreprocessorDefinitions)</PreprocessorDefinitions>
422422
<PreprocessorDefinitions Condition="'$(Platform)' == 'x64'">HACL_CAN_COMPILE_SIMD256;%(PreprocessorDefinitions)</PreprocessorDefinitions>
423+
<AdditionalOptions>/arch:AVX</AdditionalOptions>
423424
</ClCompile>
424425
<ClCompile Include="..\Modules\_codecsmodule.c" />
425426
<ClCompile Include="..\Modules\_collectionsmodule.c" />
@@ -716,6 +717,18 @@
716717
<Delete Files="$(IntDir)pyconfig.h;$(OutDir)pyconfig.h" />
717718
</Target>
718719

720+
<Target Name="EnsureClangProfileDir" BeforeTargets="PrepareForBuild"
721+
Condition="$(PlatformToolset) == 'ClangCL' and $(Configuration) == 'PGInstrument'">
722+
<MakeDir Directories="$(ClangProfileDir)" Condition="!Exists($(ClangProfileDir))" />
723+
</Target>
724+
725+
<Target Name="MergeClangProfileData" BeforeTargets="PrepareForBuild"
726+
Condition="$(PlatformToolset) == 'ClangCL' and $(Configuration) == 'PGUpdate'">
727+
<Message Importance="high" Text="Merging clang profile data in $(ClangProfileDir)" />
728+
<Exec
729+
Command='"$(LLVMInstallDir)\bin\llvm-profdata.exe" merge -output=$(ClangProfileDir)\profdata.profdata $(ClangProfileDir)\default_*.profraw' />
730+
</Target>
731+
719732
<Target Name="_GetBuildInfo" BeforeTargets="PrepareForBuild">
720733
<PropertyGroup>
721734
<GIT Condition="$(GIT) == ''">git</GIT>

0 commit comments

Comments
 (0)