
D137915 has somehow caused a flang bot to fail: https://lab.llvm.org/buildbot/#/builders/191/builds/11279. Given that the issue is with the legacy pipeline registration code and the legacy pipeline registration infrastructure is to be removed soon, remove this part of Bye.
72 lines
2.0 KiB
C++
72 lines
2.0 KiB
C++
#include "llvm/IR/Function.h"
|
|
#include "llvm/IR/LegacyPassManager.h"
|
|
#include "llvm/Pass.h"
|
|
#include "llvm/Passes/PassBuilder.h"
|
|
#include "llvm/Passes/PassPlugin.h"
|
|
#include "llvm/Support/CommandLine.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
|
|
using namespace llvm;
|
|
|
|
static cl::opt<bool> Wave("wave-goodbye", cl::init(false),
|
|
cl::desc("wave good bye"));
|
|
|
|
namespace {
|
|
|
|
bool runBye(Function &F) {
|
|
if (Wave) {
|
|
errs() << "Bye: ";
|
|
errs().write_escaped(F.getName()) << '\n';
|
|
}
|
|
return false;
|
|
}
|
|
|
|
struct LegacyBye : public FunctionPass {
|
|
static char ID;
|
|
LegacyBye() : FunctionPass(ID) {}
|
|
bool runOnFunction(Function &F) override { return runBye(F); }
|
|
};
|
|
|
|
struct Bye : PassInfoMixin<Bye> {
|
|
PreservedAnalyses run(Function &F, FunctionAnalysisManager &) {
|
|
if (!runBye(F))
|
|
return PreservedAnalyses::all();
|
|
return PreservedAnalyses::none();
|
|
}
|
|
};
|
|
|
|
} // namespace
|
|
|
|
char LegacyBye::ID = 0;
|
|
|
|
static RegisterPass<LegacyBye> X("goodbye", "Good Bye World Pass",
|
|
false /* Only looks at CFG */,
|
|
false /* Analysis Pass */);
|
|
|
|
/* New PM Registration */
|
|
llvm::PassPluginLibraryInfo getByePluginInfo() {
|
|
return {LLVM_PLUGIN_API_VERSION, "Bye", LLVM_VERSION_STRING,
|
|
[](PassBuilder &PB) {
|
|
PB.registerVectorizerStartEPCallback(
|
|
[](llvm::FunctionPassManager &PM, OptimizationLevel Level) {
|
|
PM.addPass(Bye());
|
|
});
|
|
PB.registerPipelineParsingCallback(
|
|
[](StringRef Name, llvm::FunctionPassManager &PM,
|
|
ArrayRef<llvm::PassBuilder::PipelineElement>) {
|
|
if (Name == "goodbye") {
|
|
PM.addPass(Bye());
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
}};
|
|
}
|
|
|
|
#ifndef LLVM_BYE_LINK_INTO_TOOLS
|
|
extern "C" LLVM_ATTRIBUTE_WEAK ::llvm::PassPluginLibraryInfo
|
|
llvmGetPassPluginInfo() {
|
|
return getByePluginInfo();
|
|
}
|
|
#endif
|