diff --git a/llvm/include/llvm/Transforms/MalininDDCount/MalininDDCount.h b/llvm/include/llvm/Transforms/MalininDDCount/MalininDDCount.h new file mode 100644 index 0000000000000..2aa4a8518fb0b --- /dev/null +++ b/llvm/include/llvm/Transforms/MalininDDCount/MalininDDCount.h @@ -0,0 +1,14 @@ +#ifndef LLVM_TRANSFORMS_MALININDD_COUNT_H +#define LLVM_TRANSFORMS_MALININDD_COUNT_H + +#include "llvm/IR/PassManager.h" + +namespace llvm { + + class MalininDDPass : public PassInfoMixin { + public: + PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + }; +} // namespace llvm + +#endif // LLVM_TRANSFORMS_MALININDD_COUNT_H \ No newline at end of file diff --git a/llvm/lib/Passes/CMakeLists.txt b/llvm/lib/Passes/CMakeLists.txt index 89e960f01e2eb..5d588056911c1 100644 --- a/llvm/lib/Passes/CMakeLists.txt +++ b/llvm/lib/Passes/CMakeLists.txt @@ -25,4 +25,5 @@ add_llvm_component_library(LLVMPasses TransformUtils Vectorize Instrumentation + MalininDDCount ) diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index e118633c7ea61..c05c4083e1ebe 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -135,6 +135,7 @@ #include "llvm/Transforms/Instrumentation/PoisonChecking.h" #include "llvm/Transforms/Instrumentation/SanitizerCoverage.h" #include "llvm/Transforms/Instrumentation/ThreadSanitizer.h" +#include "llvm/Transforms/MalininDDCount/MalininDDCount.h" #include "llvm/Transforms/ObjCARC.h" #include "llvm/Transforms/Scalar/ADCE.h" #include "llvm/Transforms/Scalar/AlignmentFromAssumptions.h" diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def index fef3aba69e25f..609bbacf2636b 100644 --- a/llvm/lib/Passes/PassRegistry.def +++ b/llvm/lib/Passes/PassRegistry.def @@ -209,6 +209,7 @@ FUNCTION_ALIAS_ANALYSIS("tbaa", TypeBasedAA()) #ifndef FUNCTION_PASS #define FUNCTION_PASS(NAME, CREATE_PASS) #endif +FUNCTION_PASS("malininddCount", MalininDDPass()) // run with option -passes=malininddTransfromer FUNCTION_PASS("aa-eval", AAEvaluator()) FUNCTION_PASS("adce", ADCEPass()) FUNCTION_PASS("add-discriminators", AddDiscriminatorsPass()) diff --git a/llvm/lib/Transforms/CMakeLists.txt b/llvm/lib/Transforms/CMakeLists.txt index dda5f6de11e32..0278d7ca26a9e 100644 --- a/llvm/lib/Transforms/CMakeLists.txt +++ b/llvm/lib/Transforms/CMakeLists.txt @@ -9,3 +9,4 @@ add_subdirectory(Hello) add_subdirectory(ObjCARC) add_subdirectory(Coroutines) add_subdirectory(CFGuard) +add_subdirectory(MalininDDCount) \ No newline at end of file diff --git a/llvm/lib/Transforms/MalininDDCount/CMakeLists.txt b/llvm/lib/Transforms/MalininDDCount/CMakeLists.txt new file mode 100644 index 0000000000000..260e07c4e1017 --- /dev/null +++ b/llvm/lib/Transforms/MalininDDCount/CMakeLists.txt @@ -0,0 +1,14 @@ +add_llvm_component_library(LLVMMalininDDCount + # .cpp files + MalininDDCount.cpp + + DEPENDS + intrinsics_gen # to run table_gen on our target + + COMPONENT_NAME + MalininDDCount + + LINK_COMPONENTS + Core # for structures + Support # for errs + ) \ No newline at end of file diff --git a/llvm/lib/Transforms/MalininDDCount/MalininDDCount.cpp b/llvm/lib/Transforms/MalininDDCount/MalininDDCount.cpp new file mode 100644 index 0000000000000..0d85b47eb4eb1 --- /dev/null +++ b/llvm/lib/Transforms/MalininDDCount/MalininDDCount.cpp @@ -0,0 +1,29 @@ +#include "llvm/Transforms/MalininDDCount/MalininDDCount.h" + +#define DEBUG_TYPE "MalininDDCount" +#include "llvm/ADT/Statistic.h" +#include "llvm/IR/InstIterator.h" + + using namespace llvm; + +ALWAYS_ENABLED_STATISTIC(F_count, "Number of functions"); +ALWAYS_ENABLED_STATISTIC(OPS_count, "Number of BB "); +ALWAYS_ENABLED_STATISTIC(BB_count, "Number of OPS "); + + +PreservedAnalyses MalininDDPass::run(Function &F, + FunctionAnalysisManager &AM) { + F_count ++; + for (auto& BB : F) { + BB_count++; + for (auto& IN : instructions(F)){ + OPS_count++; + } + } + + errs() << "Number of Func " << F_count << "\n"; + errs() << " Number of BB " << BB_count << "\n"; + errs() << " Number of OPS " << OPS_count << "\n"; + + return PreservedAnalyses::all(); +} \ No newline at end of file diff --git a/llvm/projects/CMakeLists.txt b/llvm/projects/CMakeLists.txt index 0ffc4fa3c0496..51a7ed107c960 100644 --- a/llvm/projects/CMakeLists.txt +++ b/llvm/projects/CMakeLists.txt @@ -44,6 +44,7 @@ add_llvm_external_project(dragonegg) add_llvm_external_project(parallel-libs) add_llvm_external_project(openmp) + if(LLVM_INCLUDE_TESTS) add_llvm_external_project(cross-project-tests) endif()