[llvm] r275663 - llc: Move pass query/add code into an own function; NFC
Matthias Braun via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 15 19:24:15 PDT 2016
Author: matze
Date: Fri Jul 15 21:24:15 2016
New Revision: 275663
URL: http://llvm.org/viewvc/llvm-project?rev=275663&view=rev
Log:
llc: Move pass query/add code into an own function; NFC
Modified:
llvm/trunk/tools/llc/llc.cpp
Modified: llvm/trunk/tools/llc/llc.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llc/llc.cpp?rev=275663&r1=275662&r2=275663&view=diff
==============================================================================
--- llvm/trunk/tools/llc/llc.cpp (original)
+++ llvm/trunk/tools/llc/llc.cpp Fri Jul 15 21:24:15 2016
@@ -267,6 +267,31 @@ int main(int argc, char **argv) {
return 0;
}
+static bool addPass(PassManagerBase &PM, const char *argv0,
+ StringRef PassName, TargetPassConfig &TPC) {
+ const PassRegistry *PR = PassRegistry::getPassRegistry();
+ const PassInfo *PI = PR->getPassInfo(PassName);
+ if (!PI) {
+ errs() << argv0 << ": run-pass " << PassName << " is not registered.\n";
+ return true;
+ }
+
+ Pass *P;
+ if (PI->getTargetMachineCtor())
+ P = PI->getTargetMachineCtor()(&TPC.getTM<TargetMachine>());
+ else if (PI->getNormalCtor())
+ P = PI->getNormalCtor()();
+ else {
+ errs() << argv0 << ": cannot create pass: " << PI->getPassName() << "\n";
+ return true;
+ }
+ std::string Banner = std::string("After ") + std::string(P->getPassName());
+ PM.add(P);
+ TPC.printAndVerify(Banner);
+
+ return false;
+}
+
static int compileModule(char **argv, LLVMContext &Context) {
// Load the module to be compiled...
SMDiagnostic Err;
@@ -412,33 +437,15 @@ static int compileModule(char **argv, LL
return 1;
}
LLVMTargetMachine &LLVMTM = static_cast<LLVMTargetMachine&>(*Target);
- TargetPassConfig *TPC = LLVMTM.createPassConfig(PM);
- PM.add(TPC);
+ TargetPassConfig &TPC = *LLVMTM.createPassConfig(PM);
+ PM.add(&TPC);
LLVMTM.addMachineModuleInfo(PM);
LLVMTM.addMachineFunctionAnalysis(PM, MIR.get());
- TPC->printAndVerify("");
-
- for (std::string &RunPassName : *RunPassNames) {
- const PassInfo *PI = PR->getPassInfo(RunPassName);
- if (!PI) {
- errs() << argv[0] << ": run-pass " << RunPassName << " is not registered.\n";
- return 1;
- }
+ TPC.printAndVerify("");
- Pass *P;
- if (PI->getTargetMachineCtor())
- P = PI->getTargetMachineCtor()(Target.get());
- else if (PI->getNormalCtor())
- P = PI->getNormalCtor()();
- else {
- errs() << argv[0] << ": cannot create pass: "
- << PI->getPassName() << "\n";
+ for (const std::string &RunPassName : *RunPassNames) {
+ if (addPass(PM, argv[0], RunPassName, TPC))
return 1;
- }
- std::string Banner
- = std::string("After ") + std::string(P->getPassName());
- PM.add(P);
- TPC->printAndVerify(Banner);
}
PM.add(createPrintMIRPass(*OS));
} else {
More information about the llvm-commits
mailing list