summaryrefslogtreecommitdiff
path: root/lib/LTO/LTOBackend.cpp
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2016-09-16 21:03:21 +0000
committerDavide Italiano <davide@freebsd.org>2016-09-16 21:03:21 +0000
commit463cfe4e607ccbf6c9c7d6f24c8e803921ca597e (patch)
tree045c20175af9ee55b5751dcec2eaa8ef2f48bdb1 /lib/LTO/LTOBackend.cpp
parent740da34c340f913112358b3baa566fbc7f773e8d (diff)
[LTO] Add ability to parse AA pipelines.
This is supposed to be a drop in replacement for what lld provides via --lto-newpm-aa-pipeline. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281774 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/LTO/LTOBackend.cpp')
-rw-r--r--lib/LTO/LTOBackend.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/LTO/LTOBackend.cpp b/lib/LTO/LTOBackend.cpp
index 76b20b5130f..9e53972a9d4 100644
--- a/lib/LTO/LTOBackend.cpp
+++ b/lib/LTO/LTOBackend.cpp
@@ -124,9 +124,17 @@ createTargetMachine(Config &Conf, StringRef TheTriple,
static void runNewPMCustomPasses(Module &Mod, TargetMachine *TM,
std::string PipelineDesc,
+ std::string AAPipelineDesc,
bool DisableVerify) {
PassBuilder PB(TM);
AAManager AA;
+
+ // Parse a custom AA pipeline if asked to.
+ if (!AAPipelineDesc.empty())
+ if (!PB.parseAAPipeline(AA, AAPipelineDesc))
+ report_fatal_error("unable to parse AA pipeline description: " +
+ AAPipelineDesc);
+
LoopAnalysisManager LAM;
FunctionAnalysisManager FAM;
CGSCCAnalysisManager CGAM;
@@ -185,7 +193,8 @@ bool opt(Config &Conf, TargetMachine *TM, unsigned Task, Module &Mod,
if (Conf.OptPipeline.empty())
runOldPMPasses(Conf, Mod, TM, IsThinLto);
else
- runNewPMCustomPasses(Mod, TM, Conf.OptPipeline, Conf.DisableVerify);
+ runNewPMCustomPasses(Mod, TM, Conf.OptPipeline, Conf.AAPipeline,
+ Conf.DisableVerify);
return !Conf.PostOptModuleHook || Conf.PostOptModuleHook(Task, Mod);
}