aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Shen <timshen91@gmail.com>2017-06-01 23:13:44 +0000
committerTim Shen <timshen91@gmail.com>2017-06-01 23:13:44 +0000
commit4e912aa5af44b3f3024cfcb4a3bfb932c49fc225 (patch)
tree3e44bb19b341237548315ba0a7f55bf2ea667a9b
parentc3688315805825576527f238f8dd9a6def90a4ee (diff)
downloadllvm-4e912aa5af44b3f3024cfcb4a3bfb932c49fc225.zip
llvm-4e912aa5af44b3f3024cfcb4a3bfb932c49fc225.tar.gz
llvm-4e912aa5af44b3f3024cfcb4a3bfb932c49fc225.tar.bz2
[ThinLTO] Move -lto-use-new-pm to llvm-lto2, and change it to -use-new-pm.
Summary: As we teach Clang to use ThinkLTO + new PM, it's good for the users to inject through Config, instead of setting a flag in the LTOBackend library. Move the flag to llvm-lto2. As it moves to llvm-lto2, a new name -use-new-pm seems simpler and as clear. Reviewers: davide, tejohnson Subscribers: mehdi_amini, Prazek, inglorion, eraman, chandlerc, llvm-commits Differential Revision: https://reviews.llvm.org/D33799 llvm-svn: 304492
-rw-r--r--llvm/include/llvm/LTO/Config.h3
-rw-r--r--llvm/lib/LTO/LTO.cpp1
-rw-r--r--llvm/lib/LTO/LTOBackend.cpp7
-rw-r--r--llvm/test/ThinLTO/X86/newpm-basic.ll2
-rw-r--r--llvm/test/tools/llvm-lto2/X86/pipeline.ll2
-rw-r--r--llvm/tools/llvm-lto2/llvm-lto2.cpp8
6 files changed, 14 insertions, 9 deletions
diff --git a/llvm/include/llvm/LTO/Config.h b/llvm/include/llvm/LTO/Config.h
index 5ba8492..73106f7 100644
--- a/llvm/include/llvm/LTO/Config.h
+++ b/llvm/include/llvm/LTO/Config.h
@@ -46,6 +46,9 @@ struct Config {
unsigned OptLevel = 2;
bool DisableVerify = false;
+ /// Use the new pass manager
+ bool UseNewPM = false;
+
/// Disable entirely the optimizer, including importing for ThinLTO
bool CodeGenOnly = false;
diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp
index b8698c8..2bd3af6 100644
--- a/llvm/lib/LTO/LTO.cpp
+++ b/llvm/lib/LTO/LTO.cpp
@@ -122,6 +122,7 @@ static void computeCacheKey(
AddUnsigned(Conf.CGOptLevel);
AddUnsigned(Conf.CGFileType);
AddUnsigned(Conf.OptLevel);
+ AddUnsigned(Conf.UseNewPM);
AddString(Conf.OptPipeline);
AddString(Conf.AAPipeline);
AddString(Conf.OverrideTriple);
diff --git a/llvm/lib/LTO/LTOBackend.cpp b/llvm/lib/LTO/LTOBackend.cpp
index f9c41f5..3f72e44 100644
--- a/llvm/lib/LTO/LTOBackend.cpp
+++ b/llvm/lib/LTO/LTOBackend.cpp
@@ -42,11 +42,6 @@
using namespace llvm;
using namespace lto;
-static cl::opt<bool>
- LTOUseNewPM("lto-use-new-pm",
- cl::desc("Run LTO passes using the new pass manager"),
- cl::init(false), cl::Hidden);
-
LLVM_ATTRIBUTE_NORETURN static void reportOpenError(StringRef Path, Twine Msg) {
errs() << "failed to open " << Path << ": " << Msg << '\n';
errs().flush();
@@ -266,7 +261,7 @@ bool opt(Config &Conf, TargetMachine *TM, unsigned Task, Module &Mod,
if (!Conf.OptPipeline.empty())
runNewPMCustomPasses(Mod, TM, Conf.OptPipeline, Conf.AAPipeline,
Conf.DisableVerify);
- else if (LTOUseNewPM)
+ else if (Conf.UseNewPM)
runNewPMPasses(Mod, TM, Conf.OptLevel, IsThinLTO);
else
runOldPMPasses(Conf, Mod, TM, IsThinLTO, ExportSummary, ImportSummary);
diff --git a/llvm/test/ThinLTO/X86/newpm-basic.ll b/llvm/test/ThinLTO/X86/newpm-basic.ll
index d357cbc..bfcc60c 100644
--- a/llvm/test/ThinLTO/X86/newpm-basic.ll
+++ b/llvm/test/ThinLTO/X86/newpm-basic.ll
@@ -1,7 +1,7 @@
; RUN: opt -module-summary %s -o %t1.bc
; RUN: llvm-lto2 run %t1.bc -o %t.o \
; RUN: -r=%t1.bc,_tinkywinky,pxl \
-; RUN: -lto-use-new-pm
+; RUN: -use-new-pm
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.11.0"
diff --git a/llvm/test/tools/llvm-lto2/X86/pipeline.ll b/llvm/test/tools/llvm-lto2/X86/pipeline.ll
index dbec9ab..7effb0c 100644
--- a/llvm/test/tools/llvm-lto2/X86/pipeline.ll
+++ b/llvm/test/tools/llvm-lto2/X86/pipeline.ll
@@ -8,7 +8,7 @@
; Try the new pass manager LTO default pipeline (make sure the option
; is accepted).
-; RUN: llvm-lto2 run %t1.bc -o %t.o -lto-use-new-pm -r %t1.bc,patatino,px
+; RUN: llvm-lto2 run %t1.bc -o %t.o -use-new-pm -r %t1.bc,patatino,px
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
diff --git a/llvm/tools/llvm-lto2/llvm-lto2.cpp b/llvm/tools/llvm-lto2/llvm-lto2.cpp
index 3d2643d..89f8515 100644
--- a/llvm/tools/llvm-lto2/llvm-lto2.cpp
+++ b/llvm/tools/llvm-lto2/llvm-lto2.cpp
@@ -99,6 +99,11 @@ static cl::opt<bool> OptRemarksWithHotness(
cl::desc("Whether to include hotness informations in the remarks.\n"
"Has effect only if -pass-remarks-output is specified."));
+static cl::opt<bool>
+ UseNewPM("use-new-pm",
+ cl::desc("Run LTO passes using the new pass manager"),
+ cl::init(false), cl::Hidden);
+
static void check(Error E, std::string Msg) {
if (!E)
return;
@@ -196,6 +201,7 @@ static int run(int argc, char **argv) {
Conf.AAPipeline = AAPipeline;
Conf.OptLevel = OptLevel - '0';
+ Conf.UseNewPM = UseNewPM;
switch (CGOptLevel) {
case '0':
Conf.CGOptLevel = CodeGenOpt::None;
@@ -351,7 +357,7 @@ int main(int argc, char **argv) {
// FIXME: This should use llvm::cl subcommands, but it isn't currently
// possible to pass an argument not associated with a subcommand to a
- // subcommand (e.g. -lto-use-new-pm).
+ // subcommand (e.g. -use-new-pm).
if (argc < 2)
return usage();