r305482 - Apply summary-based dead stripping to regular LTO modules with summaries.
Peter Collingbourne via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 15 10:26:13 PDT 2017
Author: pcc
Date: Thu Jun 15 12:26:13 2017
New Revision: 305482
URL: http://llvm.org/viewvc/llvm-project?rev=305482&view=rev
Log:
Apply summary-based dead stripping to regular LTO modules with summaries.
If a regular LTO module has a summary index, then instead of linking
it into the combined regular LTO module right away, add it to the
combined summary index and associate it with a special module that
represents the combined regular LTO module.
Any such modules are linked during LTO::run(), at which time we use
the results of summary-based dead stripping to control whether to
link prevailing symbols.
Differential Revision: https://reviews.llvm.org/D33922
Added:
cfe/trunk/test/CodeGen/Inputs/thinlto-multi-module.ll
Modified:
cfe/trunk/lib/CodeGen/BackendUtil.cpp
cfe/trunk/test/CodeGen/thinlto-multi-module.ll
Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=305482&r1=305481&r2=305482&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
+++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Thu Jun 15 12:26:13 2017
@@ -964,11 +964,11 @@ Expected<BitcodeModule> clang::FindThinL
if (!BMsOrErr)
return BMsOrErr.takeError();
- // The bitcode file may contain multiple modules, we want the one with a
- // summary.
+ // The bitcode file may contain multiple modules, we want the one that is
+ // marked as being the ThinLTO module.
for (BitcodeModule &BM : *BMsOrErr) {
- Expected<bool> HasSummary = BM.hasSummary();
- if (HasSummary && *HasSummary)
+ Expected<BitcodeLTOInfo> LTOInfo = BM.getLTOInfo();
+ if (LTOInfo && LTOInfo->IsThinLTO)
return BM;
}
Added: cfe/trunk/test/CodeGen/Inputs/thinlto-multi-module.ll
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/Inputs/thinlto-multi-module.ll?rev=305482&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/Inputs/thinlto-multi-module.ll (added)
+++ cfe/trunk/test/CodeGen/Inputs/thinlto-multi-module.ll Thu Jun 15 12:26:13 2017
@@ -0,0 +1,9 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @f2() {
+ ret void
+}
+
+!0 = !{i32 1, !"ThinLTO", i32 0}
+!llvm.module.flags = !{ !0 }
Modified: cfe/trunk/test/CodeGen/thinlto-multi-module.ll
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/thinlto-multi-module.ll?rev=305482&r1=305481&r2=305482&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/thinlto-multi-module.ll (original)
+++ cfe/trunk/test/CodeGen/thinlto-multi-module.ll Thu Jun 15 12:26:13 2017
@@ -3,8 +3,8 @@
; RUN: opt -module-summary -o %t1.o %s
; RUN: llvm-lto -thinlto -o %t %t1.o
-; RUN: opt -o %t2.o %S/Inputs/thinlto_backend.ll
-; RUN: llvm-cat -b -o %t1cat.o %t1.o %t2.o
+; RUN: opt -module-summary -o %t2.o %S/Inputs/thinlto-multi-module.ll
+; RUN: llvm-cat -b -o %t1cat.o %t2.o %t1.o
; RUN: cp %t1cat.o %t1.o
; RUN: %clang -target x86_64-unknown-linux-gnu -O2 -o %t3.o -x ir %t1.o -c -fthinlto-index=%t.thinlto.bc
; RUN: llvm-nm %t3.o | FileCheck --check-prefix=CHECK-OBJ %s
More information about the cfe-commits
mailing list