@@ -743,6 +743,90 @@ bool parseAnalysisUtilityPasses(
743
743
744
744
return false ;
745
745
}
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
+ };
746
830
}
747
831
748
832
#endif
0 commit comments