; 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
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
} 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 {
static std::unique_ptr<LTO> createLTO() {
Config Conf;
ThinBackend Backend;
- unsigned ParallelCodeGenParallelismLevel = 1;
Conf.CPU = options::mcpu;
Conf.Options = InitTargetOptionsFromCodeGenFlags();
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);
}
return llvm::make_unique<LTO>(std::move(Conf), Backend,
- ParallelCodeGenParallelismLevel);
+ options::ParallelCodeGenParallelismLevel);
}
// Write empty files that may be expected by a distributed build