forked from OSchip/llvm-project
Revert "[LTO] Enable module summary emission by default for regular LTO"
This is breaking a couple of buildbots. We need to run the NameAnonGlobal pass for regular LTO now as well (since we're producing a summary). I'll post a separate patch for review to make this happen and then re-commit. This reverts commit c0759b7b1f4a81ff9021b952aa38a222d5fa4dfd. llvm-svn: 335291
This commit is contained in:
parent
b085ca5095
commit
e597a2cf81
|
@ -110,7 +110,7 @@ CODEGENOPT(LessPreciseFPMAD , 1, 0) ///< Enable less precise MAD instructions t
|
|||
///< be generated.
|
||||
CODEGENOPT(PrepareForLTO , 1, 0) ///< Set when -flto is enabled on the
|
||||
///< compile step.
|
||||
CODEGENOPT(PrepareForThinLTO , 1, 0) ///< Set when -flto=thin is enabled on the
|
||||
CODEGENOPT(EmitSummaryIndex, 1, 0) ///< Set when -flto=thin is enabled on the
|
||||
///< compile step.
|
||||
CODEGENOPT(LTOUnit, 1, 0) ///< Emit IR to support LTO unit features (CFI, whole
|
||||
///< program vtable opt).
|
||||
|
|
|
@ -524,7 +524,7 @@ void EmitAssemblyHelper::CreatePasses(legacy::PassManager &MPM,
|
|||
PMBuilder.Inliner = createFunctionInliningPass(
|
||||
CodeGenOpts.OptimizationLevel, CodeGenOpts.OptimizeSize,
|
||||
(!CodeGenOpts.SampleProfileFile.empty() &&
|
||||
CodeGenOpts.PrepareForThinLTO));
|
||||
CodeGenOpts.EmitSummaryIndex));
|
||||
}
|
||||
|
||||
PMBuilder.OptLevel = CodeGenOpts.OptimizationLevel;
|
||||
|
@ -534,7 +534,7 @@ void EmitAssemblyHelper::CreatePasses(legacy::PassManager &MPM,
|
|||
|
||||
PMBuilder.DisableUnrollLoops = !CodeGenOpts.UnrollLoops;
|
||||
PMBuilder.MergeFunctions = CodeGenOpts.MergeFunctions;
|
||||
PMBuilder.PrepareForThinLTO = CodeGenOpts.PrepareForThinLTO;
|
||||
PMBuilder.PrepareForThinLTO = CodeGenOpts.EmitSummaryIndex;
|
||||
PMBuilder.PrepareForLTO = CodeGenOpts.PrepareForLTO;
|
||||
PMBuilder.RerollLoops = CodeGenOpts.RerollLoops;
|
||||
|
||||
|
@ -776,7 +776,7 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action,
|
|||
break;
|
||||
|
||||
case Backend_EmitBC:
|
||||
if (CodeGenOpts.PrepareForThinLTO) {
|
||||
if (CodeGenOpts.EmitSummaryIndex) {
|
||||
if (!CodeGenOpts.ThinLinkBitcodeFile.empty()) {
|
||||
ThinLinkOS = openOutputFile(CodeGenOpts.ThinLinkBitcodeFile);
|
||||
if (!ThinLinkOS)
|
||||
|
@ -784,20 +784,10 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action,
|
|||
}
|
||||
PerModulePasses.add(createWriteThinLTOBitcodePass(
|
||||
*OS, ThinLinkOS ? &ThinLinkOS->os() : nullptr));
|
||||
} else {
|
||||
// Emit a module summary by default for Regular LTO except for ld64
|
||||
// targets
|
||||
bool EmitLTOSummary =
|
||||
(CodeGenOpts.PrepareForLTO &&
|
||||
llvm::Triple(TheModule->getTargetTriple()).getVendor() !=
|
||||
llvm::Triple::Apple);
|
||||
if (EmitLTOSummary && !TheModule->getModuleFlag("ThinLTO"))
|
||||
TheModule->addModuleFlag(Module::Error, "ThinLTO", uint32_t(0));
|
||||
|
||||
PerModulePasses.add(
|
||||
createBitcodeWriterPass(*OS, CodeGenOpts.EmitLLVMUseLists,
|
||||
EmitLTOSummary));
|
||||
}
|
||||
else
|
||||
PerModulePasses.add(
|
||||
createBitcodeWriterPass(*OS, CodeGenOpts.EmitLLVMUseLists));
|
||||
break;
|
||||
|
||||
case Backend_EmitLL:
|
||||
|
@ -945,7 +935,7 @@ void EmitAssemblyHelper::EmitAssemblyWithNewPassManager(
|
|||
ModulePassManager MPM(CodeGenOpts.DebugPassManager);
|
||||
|
||||
if (!CodeGenOpts.DisableLLVMPasses) {
|
||||
bool IsThinLTO = CodeGenOpts.PrepareForThinLTO;
|
||||
bool IsThinLTO = CodeGenOpts.EmitSummaryIndex;
|
||||
bool IsLTO = CodeGenOpts.PrepareForLTO;
|
||||
|
||||
if (CodeGenOpts.OptimizationLevel == 0) {
|
||||
|
@ -1006,7 +996,7 @@ void EmitAssemblyHelper::EmitAssemblyWithNewPassManager(
|
|||
break;
|
||||
|
||||
case Backend_EmitBC:
|
||||
if (CodeGenOpts.PrepareForThinLTO) {
|
||||
if (CodeGenOpts.EmitSummaryIndex) {
|
||||
if (!CodeGenOpts.ThinLinkBitcodeFile.empty()) {
|
||||
ThinLinkOS = openOutputFile(CodeGenOpts.ThinLinkBitcodeFile);
|
||||
if (!ThinLinkOS)
|
||||
|
@ -1015,17 +1005,9 @@ void EmitAssemblyHelper::EmitAssemblyWithNewPassManager(
|
|||
MPM.addPass(ThinLTOBitcodeWriterPass(*OS, ThinLinkOS ? &ThinLinkOS->os()
|
||||
: nullptr));
|
||||
} else {
|
||||
// Emit a module summary by default for Regular LTO except for ld64
|
||||
// targets
|
||||
bool EmitLTOSummary =
|
||||
(CodeGenOpts.PrepareForLTO &&
|
||||
llvm::Triple(TheModule->getTargetTriple()).getVendor() !=
|
||||
llvm::Triple::Apple);
|
||||
if (EmitLTOSummary && !TheModule->getModuleFlag("ThinLTO"))
|
||||
TheModule->addModuleFlag(Module::Error, "ThinLTO", uint32_t(0));
|
||||
|
||||
MPM.addPass(BitcodeWriterPass(*OS, CodeGenOpts.EmitLLVMUseLists,
|
||||
EmitLTOSummary));
|
||||
CodeGenOpts.EmitSummaryIndex,
|
||||
CodeGenOpts.EmitSummaryIndex));
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -578,7 +578,7 @@ void CGDebugInfo::CreateCompileUnit() {
|
|||
CSInfo,
|
||||
getSource(SM, SM.getMainFileID())),
|
||||
CGOpts.EmitVersionIdentMetadata ? Producer : "",
|
||||
LO.Optimize || CGOpts.PrepareForLTO || CGOpts.PrepareForThinLTO,
|
||||
LO.Optimize || CGOpts.PrepareForLTO || CGOpts.EmitSummaryIndex,
|
||||
CGOpts.DwarfDebugFlags, RuntimeVers,
|
||||
CGOpts.EnableSplitDwarf ? "" : CGOpts.SplitDwarfFile, EmissionKind,
|
||||
0 /* DWOid */, CGOpts.SplitDwarfInlining, CGOpts.DebugInfoForProfiling,
|
||||
|
|
|
@ -749,11 +749,11 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
|||
Opts.ProfileSampleAccurate = Args.hasArg(OPT_fprofile_sample_accurate);
|
||||
|
||||
Opts.PrepareForLTO = Args.hasArg(OPT_flto, OPT_flto_EQ);
|
||||
Opts.PrepareForThinLTO = false;
|
||||
Opts.EmitSummaryIndex = false;
|
||||
if (Arg *A = Args.getLastArg(OPT_flto_EQ)) {
|
||||
StringRef S = A->getValue();
|
||||
if (S == "thin")
|
||||
Opts.PrepareForThinLTO = true;
|
||||
Opts.EmitSummaryIndex = true;
|
||||
else if (S != "full")
|
||||
Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << S;
|
||||
}
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
// ; Check that the -flto=thin option emits a ThinLTO summary
|
||||
// RUN: %clang_cc1 -flto=thin -emit-llvm-bc < %s | llvm-bcanalyzer -dump | FileCheck %s
|
||||
// CHECK: <GLOBALVAL_SUMMARY_BLOCK
|
||||
//
|
||||
// ; Check that we do not emit a summary for regular LTO on Apple platforms
|
||||
// RUN: %clang_cc1 -flto -triple x86_64-apple-darwin -emit-llvm-bc < %s | llvm-bcanalyzer -dump | FileCheck --check-prefix=LTO %s
|
||||
// LTO-NOT: GLOBALVAL_SUMMARY_BLOCK
|
||||
//
|
||||
// ; Check that we emit a summary for regular LTO by default elsewhere
|
||||
// RUN: %clang_cc1 -flto -triple x86_64-pc-linux-gnu -emit-llvm-bc < %s | llvm-bcanalyzer -dump | FileCheck --check-prefix=LTOINDEX %s
|
||||
// LTOINDEX: <FULL_LTO_GLOBALVAL_SUMMARY_BLOCK
|
||||
//
|
||||
// ; Simulate -save-temps and check that it works (!"ThinLTO" module flag not added multiple times)
|
||||
// RUN: %clang_cc1 -flto -triple x86_64-pc-linux-gnu -emit-llvm-bc -disable-llvm-passes < %s -o %t.bc
|
||||
// RUN: %clang_cc1 -flto -triple x86_64-pc-linux-gnu -emit-llvm-bc -x ir < %t.bc | llvm-bcanalyzer -dump | FileCheck --check-prefix=LTOINDEX %s
|
||||
|
||||
int main() {}
|
|
@ -0,0 +1,4 @@
|
|||
// RUN: %clang_cc1 -flto=thin -emit-llvm-bc < %s | llvm-bcanalyzer -dump | FileCheck %s
|
||||
// ; Check that the -flto=thin option emits a summary
|
||||
// CHECK: <GLOBALVAL_SUMMARY_BLOCK
|
||||
int main() {}
|
Loading…
Reference in New Issue