Skip to content

Commit bb60ed6

Browse files
committed
VS: Add flag table entry for -Qspectre
Add special logic to map this flag to a top-level build setting instead of being in ClCompile. Fixes: #18426
1 parent fd02538 commit bb60ed6

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

Source/cmVS141CLFlagTable.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ static cmVS7FlagTable cmVS141CLFlagTable[] = {
8383
{ "FloatingPointModel", "fp:strict", "Strict", "Strict", 0 },
8484
{ "FloatingPointModel", "fp:fast", "Fast", "Fast", 0 },
8585

86+
{ "SpectreMitigation", "Qspectre", "Spectre mitigations", "Spectre", 0 },
87+
8688
{ "LanguageStandard", "std:c++17", "ISO C++17 Standard", "stdcpp17", 0 },
8789
{ "LanguageStandard", "std:c++14", "ISO C++14 Standard", "stdcpp14", 0 },
8890
{ "LanguageStandard", "std:c++latest", "ISO C++ Latest Draft Standard",

Source/cmVisualStudio10TargetGenerator.cxx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,6 +1125,9 @@ void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValues(
11251125
if (this->IPOEnabledConfigurations.count(config) > 0) {
11261126
e1.Element("WholeProgramOptimization", "true");
11271127
}
1128+
if (this->SpectreMitigationConfigurations.count(config) > 0) {
1129+
e1.Element("SpectreMitigation", "Spectre");
1130+
}
11281131
}
11291132

11301133
void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValuesManaged(
@@ -2625,6 +2628,11 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions(
26252628
}
26262629
}
26272630

2631+
if (clOptions.HasFlag("SpectreMitigation")) {
2632+
this->SpectreMitigationConfigurations.insert(configName);
2633+
clOptions.RemoveFlag("SpectreMitigation");
2634+
}
2635+
26282636
this->ClOptions[configName] = std::move(pOptions);
26292637
return true;
26302638
}

Source/cmVisualStudio10TargetGenerator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ class cmVisualStudio10TargetGenerator
205205
unsigned int NsightTegraVersion[4];
206206
bool TargetCompileAsWinRT;
207207
std::set<std::string> IPOEnabledConfigurations;
208+
std::set<std::string> SpectreMitigationConfigurations;
208209
cmGlobalVisualStudio10Generator* const GlobalGenerator;
209210
cmLocalVisualStudio10Generator* const LocalGenerator;
210211
std::set<std::string> CSharpCustomCommandNames;

0 commit comments

Comments
 (0)