aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetPassConfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/TargetPassConfig.cpp')
-rw-r--r--llvm/lib/CodeGen/TargetPassConfig.cpp31
1 files changed, 18 insertions, 13 deletions
diff --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp
index fa1bb84..1bf6621 100644
--- a/llvm/lib/CodeGen/TargetPassConfig.cpp
+++ b/llvm/lib/CodeGen/TargetPassConfig.cpp
@@ -1235,13 +1235,9 @@ void TargetPassConfig::addMachinePasses() {
addPass(createMIRAddFSDiscriminatorsPass(
sampleprof::FSDiscriminatorPass::PassLast));
- // Machine function splitter uses the basic block sections feature.
- // When used along with `-basic-block-sections=`, the basic-block-sections
- // feature takes precedence. This means functions eligible for
- // basic-block-sections optimizations (`=all`, or `=list=` with function
- // included in the list profile) will get that optimization instead.
if (TM->Options.EnableMachineFunctionSplitter ||
- EnableMachineFunctionSplitter) {
+ EnableMachineFunctionSplitter || SplitStaticData ||
+ TM->Options.EnableStaticDataPartitioning) {
const std::string ProfileFile = getFSProfileFile(TM);
if (!ProfileFile.empty()) {
if (EnableFSDiscriminator) {
@@ -1256,14 +1252,23 @@ void TargetPassConfig::addMachinePasses() {
"performance.\n";
}
}
+ }
+
+ // Machine function splitter uses the basic block sections feature.
+ // When used along with `-basic-block-sections=`, the basic-block-sections
+ // feature takes precedence. This means functions eligible for
+ // basic-block-sections optimizations (`=all`, or `=list=` with function
+ // included in the list profile) will get that optimization instead.
+ if (TM->Options.EnableMachineFunctionSplitter ||
+ EnableMachineFunctionSplitter)
addPass(createMachineFunctionSplitterPass());
- if (SplitStaticData || TM->Options.EnableStaticDataPartitioning) {
- // The static data splitter pass is a machine function pass. and
- // static data annotator pass is a module-wide pass. See the file comment
- // in StaticDataAnnotator.cpp for the motivation.
- addPass(createStaticDataSplitterPass());
- addPass(createStaticDataAnnotatorPass());
- }
+
+ if (SplitStaticData || TM->Options.EnableStaticDataPartitioning) {
+ // The static data splitter pass is a machine function pass. and
+ // static data annotator pass is a module-wide pass. See the file comment
+ // in StaticDataAnnotator.cpp for the motivation.
+ addPass(createStaticDataSplitterPass());
+ addPass(createStaticDataAnnotatorPass());
}
// We run the BasicBlockSections pass if either we need BB sections or BB
// address map (or both).