[PATCH] D24873: [gold] Split plugin options controlling ThinLTO and codegen parallelism.
Teresa Johnson via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 23 13:42:44 PDT 2016
tejohnson updated this revision to Diff 72347.
tejohnson added a comment.
Address review comments
https://reviews.llvm.org/D24873
Files:
test/tools/gold/X86/parallel.ll
tools/gold/gold-plugin.cpp
Index: tools/gold/gold-plugin.cpp
===================================================================
--- tools/gold/gold-plugin.cpp
+++ tools/gold/gold-plugin.cpp
@@ -118,9 +118,11 @@
static unsigned OptLevel = 2;
// Default parallelism of 0 used to indicate that user did not specify.
// Actual parallelism default value depends on implementation.
- // Currently, code generation defaults to no parallelism, whereas
- // ThinLTO uses the hardware_concurrency as the default.
+ // Currently only affects ThinLTO, where the default is the
+ // hardware_concurrency.
static unsigned Parallelism = 0;
+ // Default regular LTO codegen parallelism (number of partitions).
+ static unsigned ParallelCodeGenParallelismLevel = 1;
#ifdef NDEBUG
static bool DisableVerify = true;
#else
@@ -211,6 +213,10 @@
} else if (opt.startswith("jobs=")) {
if (StringRef(opt_ + 5).getAsInteger(10, Parallelism))
message(LDPL_FATAL, "Invalid parallelism level: %s", opt_ + 5);
+ } else if (opt.startswith("lto-partitions=")) {
+ if (opt.substr(strlen("lto-partitions="))
+ .getAsInteger(10, ParallelCodeGenParallelismLevel))
+ message(LDPL_FATAL, "Invalid codegen partition level: %s", opt_ + 5);
} else if (opt == "disable-verify") {
DisableVerify = true;
} else {
@@ -690,7 +696,6 @@
static std::unique_ptr<LTO> createLTO() {
Config Conf;
ThinBackend Backend;
- unsigned ParallelCodeGenParallelismLevel = 1;
Conf.CPU = options::mcpu;
Conf.Options = InitTargetOptionsFromCodeGenFlags();
@@ -704,12 +709,8 @@
Conf.CGOptLevel = getCGOptLevel();
Conf.DisableVerify = options::DisableVerify;
Conf.OptLevel = options::OptLevel;
- if (options::Parallelism) {
- if (options::thinlto)
- Backend = createInProcessThinBackend(options::Parallelism);
- else
- ParallelCodeGenParallelismLevel = options::Parallelism;
- }
+ if (options::Parallelism)
+ Backend = createInProcessThinBackend(options::Parallelism);
if (options::thinlto_index_only) {
std::string OldPrefix, NewPrefix;
getThinLTOOldAndNewPrefix(OldPrefix, NewPrefix);
@@ -749,7 +750,7 @@
}
return llvm::make_unique<LTO>(std::move(Conf), Backend,
- ParallelCodeGenParallelismLevel);
+ options::ParallelCodeGenParallelismLevel);
}
// Write empty files that may be expected by a distributed build
Index: test/tools/gold/X86/parallel.ll
===================================================================
--- test/tools/gold/X86/parallel.ll
+++ test/tools/gold/X86/parallel.ll
@@ -1,6 +1,6 @@
; RUN: llvm-as -o %t.bc %s
; RUN: rm -f %t.opt.bc0 %t.opt.bc1 %t.o0 %t.o1
-; RUN: env LD_PRELOAD=%llvmshlibdir/LLVMgold.so %gold -plugin %llvmshlibdir/LLVMgold.so -u foo -u bar -plugin-opt jobs=2 -plugin-opt save-temps -m elf_x86_64 -o %t %t.bc
+; RUN: env LD_PRELOAD=%llvmshlibdir/LLVMgold.so %gold -plugin %llvmshlibdir/LLVMgold.so -u foo -u bar -plugin-opt lto-partitions=2 -plugin-opt save-temps -m elf_x86_64 -o %t %t.bc
; RUN: llvm-dis %t.0.5.precodegen.bc -o - | FileCheck --check-prefix=CHECK-BC0 %s
; RUN: llvm-dis %t.1.5.precodegen.bc -o - | FileCheck --check-prefix=CHECK-BC1 %s
; RUN: llvm-nm %t.o0 | FileCheck --check-prefix=CHECK0 %s
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D24873.72347.patch
Type: text/x-patch
Size: 3292 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160923/02b83991/attachment.bin>
More information about the llvm-commits
mailing list