summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2017-06-08 23:01:49 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2017-06-08 23:01:49 +0000
commite357fbd24381d03238e2f4487fd7ff3acfc53b19 (patch)
tree43b45bd304e2a21f0390b9f2bdbbad93eaf2d420 /llvm/lib/Transforms
parent2c2fb8896bbc94ca1c2989843b00bdc348af5465 (diff)
downloadbcm5719-llvm-e357fbd24381d03238e2f4487fd7ff3acfc53b19.tar.gz
bcm5719-llvm-e357fbd24381d03238e2f4487fd7ff3acfc53b19.zip
Write summaries for merged modules when splitting modules for ThinLTO.
This is to prepare to allow for dead stripping of globals in the merged modules. Differential Revision: https://reviews.llvm.org/D33921 llvm-svn: 305027
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp b/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
index 9dede4cedd1..a7bcc7cc553 100644
--- a/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
+++ b/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
@@ -318,6 +318,12 @@ void splitAndWriteThinLTOBitcode(
ProfileSummaryInfo PSI(M);
ModuleSummaryIndex Index = buildModuleSummaryIndex(M, nullptr, &PSI);
+ // Mark the merged module as requiring full LTO. We still want an index for
+ // it though, so that it can participate in summary-based dead stripping.
+ MergedM->addModuleFlag(Module::Error, "ThinLTO", uint32_t(0));
+ ModuleSummaryIndex MergedMIndex =
+ buildModuleSummaryIndex(*MergedM, nullptr, &PSI);
+
SmallVector<char, 0> Buffer;
BitcodeWriter W(Buffer);
@@ -327,7 +333,8 @@ void splitAndWriteThinLTOBitcode(
ModuleHash ModHash = {{0}};
W.writeModule(&M, /*ShouldPreserveUseListOrder=*/false, &Index,
/*GenerateHash=*/true, &ModHash);
- W.writeModule(MergedM.get());
+ W.writeModule(MergedM.get(), /*ShouldPreserveUseListOrder=*/false,
+ &MergedMIndex);
W.writeStrtab();
OS << Buffer;
@@ -340,7 +347,8 @@ void splitAndWriteThinLTOBitcode(
StripDebugInfo(M);
W2.writeModule(&M, /*ShouldPreserveUseListOrder=*/false, &Index,
/*GenerateHash=*/false, &ModHash);
- W2.writeModule(MergedM.get());
+ W2.writeModule(MergedM.get(), /*ShouldPreserveUseListOrder=*/false,
+ &MergedMIndex);
W2.writeStrtab();
*ThinLinkOS << Buffer;
}
OpenPOWER on IntegriCloud