|
@@ -814,6 +814,8 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action,
|
|
if (!ThinLinkOS)
|
|
if (!ThinLinkOS)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ TheModule->addModuleFlag(Module::Error, "EnableSplitLTOUnit",
|
|
|
|
+ CodeGenOpts.EnableSplitLTOUnit);
|
|
PerModulePasses.add(createWriteThinLTOBitcodePass(
|
|
PerModulePasses.add(createWriteThinLTOBitcodePass(
|
|
*OS, ThinLinkOS ? &ThinLinkOS->os() : nullptr));
|
|
*OS, ThinLinkOS ? &ThinLinkOS->os() : nullptr));
|
|
} else {
|
|
} else {
|
|
@@ -824,12 +826,15 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action,
|
|
!CodeGenOpts.DisableLLVMPasses &&
|
|
!CodeGenOpts.DisableLLVMPasses &&
|
|
llvm::Triple(TheModule->getTargetTriple()).getVendor() !=
|
|
llvm::Triple(TheModule->getTargetTriple()).getVendor() !=
|
|
llvm::Triple::Apple);
|
|
llvm::Triple::Apple);
|
|
- if (EmitLTOSummary && !TheModule->getModuleFlag("ThinLTO"))
|
|
|
|
- TheModule->addModuleFlag(Module::Error, "ThinLTO", uint32_t(0));
|
|
|
|
|
|
+ if (EmitLTOSummary) {
|
|
|
|
+ if (!TheModule->getModuleFlag("ThinLTO"))
|
|
|
|
+ TheModule->addModuleFlag(Module::Error, "ThinLTO", uint32_t(0));
|
|
|
|
+ TheModule->addModuleFlag(Module::Error, "EnableSplitLTOUnit",
|
|
|
|
+ CodeGenOpts.EnableSplitLTOUnit);
|
|
|
|
+ }
|
|
|
|
|
|
- PerModulePasses.add(
|
|
|
|
- createBitcodeWriterPass(*OS, CodeGenOpts.EmitLLVMUseLists,
|
|
|
|
- EmitLTOSummary));
|
|
|
|
|
|
+ PerModulePasses.add(createBitcodeWriterPass(
|
|
|
|
+ *OS, CodeGenOpts.EmitLLVMUseLists, EmitLTOSummary));
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
|
|
@@ -1054,6 +1059,8 @@ void EmitAssemblyHelper::EmitAssemblyWithNewPassManager(
|
|
if (!ThinLinkOS)
|
|
if (!ThinLinkOS)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ TheModule->addModuleFlag(Module::Error, "EnableSplitLTOUnit",
|
|
|
|
+ CodeGenOpts.EnableSplitLTOUnit);
|
|
MPM.addPass(ThinLTOBitcodeWriterPass(*OS, ThinLinkOS ? &ThinLinkOS->os()
|
|
MPM.addPass(ThinLTOBitcodeWriterPass(*OS, ThinLinkOS ? &ThinLinkOS->os()
|
|
: nullptr));
|
|
: nullptr));
|
|
} else {
|
|
} else {
|
|
@@ -1064,11 +1071,14 @@ void EmitAssemblyHelper::EmitAssemblyWithNewPassManager(
|
|
!CodeGenOpts.DisableLLVMPasses &&
|
|
!CodeGenOpts.DisableLLVMPasses &&
|
|
llvm::Triple(TheModule->getTargetTriple()).getVendor() !=
|
|
llvm::Triple(TheModule->getTargetTriple()).getVendor() !=
|
|
llvm::Triple::Apple);
|
|
llvm::Triple::Apple);
|
|
- if (EmitLTOSummary && !TheModule->getModuleFlag("ThinLTO"))
|
|
|
|
- TheModule->addModuleFlag(Module::Error, "ThinLTO", uint32_t(0));
|
|
|
|
-
|
|
|
|
- MPM.addPass(BitcodeWriterPass(*OS, CodeGenOpts.EmitLLVMUseLists,
|
|
|
|
- EmitLTOSummary));
|
|
|
|
|
|
+ if (EmitLTOSummary) {
|
|
|
|
+ if (!TheModule->getModuleFlag("ThinLTO"))
|
|
|
|
+ TheModule->addModuleFlag(Module::Error, "ThinLTO", uint32_t(0));
|
|
|
|
+ TheModule->addModuleFlag(Module::Error, "EnableSplitLTOUnit",
|
|
|
|
+ CodeGenOpts.EnableSplitLTOUnit);
|
|
|
|
+ }
|
|
|
|
+ MPM.addPass(
|
|
|
|
+ BitcodeWriterPass(*OS, CodeGenOpts.EmitLLVMUseLists, EmitLTOSummary));
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
|