mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[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
This commit is contained in:
parent
d36af06d07
commit
c432c72577
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user