Skip to content

Commit a397bcc

Browse files
committed
[Pass] Move no-op passes declaration to PassBuilder.h
1 parent 9f52e36 commit a397bcc

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

llvm/include/llvm/Passes/PassBuilder.h

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,90 @@ bool parseAnalysisUtilityPasses(
743743

744744
return false;
745745
}
746+
747+
// These are special since they are only for testing purposes.
748+
749+
/// No-op module pass which does nothing.
750+
struct NoOpModulePass : PassInfoMixin<NoOpModulePass> {
751+
PreservedAnalyses run(Module &M, ModuleAnalysisManager &) {
752+
return PreservedAnalyses::all();
753+
}
754+
};
755+
756+
/// No-op module analysis.
757+
class NoOpModuleAnalysis : public AnalysisInfoMixin<NoOpModuleAnalysis> {
758+
friend AnalysisInfoMixin<NoOpModuleAnalysis>;
759+
static AnalysisKey Key;
760+
761+
public:
762+
struct Result {};
763+
Result run(Module &, ModuleAnalysisManager &) { return Result(); }
764+
};
765+
766+
/// No-op CGSCC pass which does nothing.
767+
struct NoOpCGSCCPass : PassInfoMixin<NoOpCGSCCPass> {
768+
PreservedAnalyses run(LazyCallGraph::SCC &C, CGSCCAnalysisManager &,
769+
LazyCallGraph &, CGSCCUpdateResult &UR) {
770+
return PreservedAnalyses::all();
771+
}
772+
};
773+
774+
/// No-op CGSCC analysis.
775+
class NoOpCGSCCAnalysis : public AnalysisInfoMixin<NoOpCGSCCAnalysis> {
776+
friend AnalysisInfoMixin<NoOpCGSCCAnalysis>;
777+
static AnalysisKey Key;
778+
779+
public:
780+
struct Result {};
781+
Result run(LazyCallGraph::SCC &, CGSCCAnalysisManager &, LazyCallGraph &G) {
782+
return Result();
783+
}
784+
};
785+
786+
/// No-op function pass which does nothing.
787+
struct NoOpFunctionPass : PassInfoMixin<NoOpFunctionPass> {
788+
PreservedAnalyses run(Function &F, FunctionAnalysisManager &) {
789+
return PreservedAnalyses::all();
790+
}
791+
};
792+
793+
/// No-op function analysis.
794+
class NoOpFunctionAnalysis : public AnalysisInfoMixin<NoOpFunctionAnalysis> {
795+
friend AnalysisInfoMixin<NoOpFunctionAnalysis>;
796+
static AnalysisKey Key;
797+
798+
public:
799+
struct Result {};
800+
Result run(Function &, FunctionAnalysisManager &) { return Result(); }
801+
};
802+
803+
/// No-op loop nest pass which does nothing.
804+
struct NoOpLoopNestPass : PassInfoMixin<NoOpLoopNestPass> {
805+
PreservedAnalyses run(LoopNest &L, LoopAnalysisManager &,
806+
LoopStandardAnalysisResults &, LPMUpdater &) {
807+
return PreservedAnalyses::all();
808+
}
809+
};
810+
811+
/// No-op loop pass which does nothing.
812+
struct NoOpLoopPass : PassInfoMixin<NoOpLoopPass> {
813+
PreservedAnalyses run(Loop &L, LoopAnalysisManager &,
814+
LoopStandardAnalysisResults &, LPMUpdater &) {
815+
return PreservedAnalyses::all();
816+
}
817+
};
818+
819+
/// No-op loop analysis.
820+
class NoOpLoopAnalysis : public AnalysisInfoMixin<NoOpLoopAnalysis> {
821+
friend AnalysisInfoMixin<NoOpLoopAnalysis>;
822+
static AnalysisKey Key;
823+
824+
public:
825+
struct Result {};
826+
Result run(Loop &, LoopAnalysisManager &, LoopStandardAnalysisResults &) {
827+
return Result();
828+
}
829+
};
746830
}
747831

748832
#endif

0 commit comments

Comments
 (0)