diff --git a/jlm/hls/backend/rvsdg2rhls/rvsdg2rhls.cpp b/jlm/hls/backend/rvsdg2rhls/rvsdg2rhls.cpp index 622fc5d3e..93a76b634 100644 --- a/jlm/hls/backend/rvsdg2rhls/rvsdg2rhls.cpp +++ b/jlm/hls/backend/rvsdg2rhls/rvsdg2rhls.cpp @@ -62,12 +62,12 @@ split_opt(llvm::RvsdgModule & rm) jlm::llvm::tginversion tgi; jlm::llvm::NodeReduction red; jlm::util::StatisticsCollector statisticsCollector; - tgi.run(rm, statisticsCollector); - dne.run(rm, statisticsCollector); - cne.run(rm, statisticsCollector); - ivr.run(rm, statisticsCollector); - red.run(rm, statisticsCollector); - dne.run(rm, statisticsCollector); + tgi.Run(rm, statisticsCollector); + dne.Run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); + ivr.Run(rm, statisticsCollector); + red.Run(rm, statisticsCollector); + dne.Run(rm, statisticsCollector); } void @@ -79,13 +79,13 @@ pre_opt(jlm::llvm::RvsdgModule & rm) jlm::llvm::InvariantValueRedirection ivr; jlm::llvm::tginversion tgi; jlm::util::StatisticsCollector statisticsCollector; - tgi.run(rm, statisticsCollector); - dne.run(rm, statisticsCollector); - cne.run(rm, statisticsCollector); - ivr.run(rm, statisticsCollector); - dne.run(rm, statisticsCollector); - cne.run(rm, statisticsCollector); - dne.run(rm, statisticsCollector); + tgi.Run(rm, statisticsCollector); + dne.Run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); + ivr.Run(rm, statisticsCollector); + dne.Run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); + dne.Run(rm, statisticsCollector); } void @@ -421,7 +421,7 @@ rvsdg2rhls(llvm::RvsdgModule & rhls, util::StatisticsCollector & collector) merge_gamma(rhls); llvm::DeadNodeElimination llvmDne; - llvmDne.run(rhls, collector); + llvmDne.Run(rhls, collector); mem_sep_argument(rhls); remove_unused_state(rhls); @@ -430,7 +430,7 @@ rvsdg2rhls(llvm::RvsdgModule & rhls, util::StatisticsCollector & collector) ConvertGammaNodes(rhls); ConvertThetaNodes(rhls); hls::cne hlsCne; - hlsCne.run(rhls, collector); + hlsCne.Run(rhls, collector); // rhls optimization dne(rhls); alloca_conv(rhls); diff --git a/jlm/hls/opt/cne.cpp b/jlm/hls/opt/cne.cpp index c9e084027..4195f9e42 100644 --- a/jlm/hls/opt/cne.cpp +++ b/jlm/hls/opt/cne.cpp @@ -615,12 +615,12 @@ divert(rvsdg::Region * region, cnectx & ctx) } static void -cne(jlm::llvm::RvsdgModule & rm, util::StatisticsCollector & statisticsCollector) +cne(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) { - auto & graph = rm.Rvsdg(); + auto & graph = rvsdgModule.Rvsdg(); cnectx ctx; - auto statistics = cnestat::Create(rm.SourceFileName()); + auto statistics = cnestat::Create(rvsdgModule.SourceFilePath().value()); statistics->start_mark_stat(graph); mark(&graph.GetRootRegion(), ctx); @@ -639,7 +639,7 @@ cne::~cne() {} void -cne::run(llvm::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) +cne::Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) { hls::cne(module, statisticsCollector); } diff --git a/jlm/hls/opt/cne.hpp b/jlm/hls/opt/cne.hpp index 929476d82..db069e0c3 100644 --- a/jlm/hls/opt/cne.hpp +++ b/jlm/hls/opt/cne.hpp @@ -6,12 +6,7 @@ #ifndef JLM_HLS_OPT_CNE_HPP #define JLM_HLS_OPT_CNE_HPP -#include - -namespace jlm::llvm -{ -class RvsdgModule; -} +#include namespace jlm::hls { @@ -25,13 +20,13 @@ namespace jlm::hls * This is mainly a copy of the CNE optimization in the LLVM backend with the addition of support * for the hls::loop_op. */ -class cne final : public llvm::optimization +class cne final : public rvsdg::Transformation { public: virtual ~cne(); - virtual void - run(llvm::RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) override; + void + Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; }; } diff --git a/jlm/llvm/Makefile.sub b/jlm/llvm/Makefile.sub index 5e802cfac..ec979bb5b 100644 --- a/jlm/llvm/Makefile.sub +++ b/jlm/llvm/Makefile.sub @@ -59,8 +59,6 @@ libllvm_SOURCES = \ jlm/llvm/opt/inlining.cpp \ jlm/llvm/opt/InvariantValueRedirection.cpp \ jlm/llvm/opt/inversion.cpp \ - jlm/llvm/opt/optimization.cpp \ - jlm/llvm/opt/OptimizationSequence.cpp \ jlm/llvm/opt/pull.cpp \ jlm/llvm/opt/push.cpp \ jlm/llvm/opt/reduction.cpp \ @@ -91,11 +89,9 @@ libllvm_HEADERS = \ jlm/llvm/opt/alias-analyses/PointsToGraph.hpp \ jlm/llvm/opt/alias-analyses/AliasAnalysis.hpp \ jlm/llvm/opt/pull.hpp \ - jlm/llvm/opt/optimization.hpp \ jlm/llvm/opt/reduction.hpp \ jlm/llvm/opt/InvariantValueRedirection.hpp \ jlm/llvm/opt/inversion.hpp \ - jlm/llvm/opt/OptimizationSequence.hpp \ jlm/llvm/opt/RvsdgTreePrinter.hpp \ jlm/llvm/frontend/LlvmModuleConversion.hpp \ jlm/llvm/frontend/LlvmTypeConversion.hpp \ diff --git a/jlm/llvm/opt/DeadNodeElimination.cpp b/jlm/llvm/opt/DeadNodeElimination.cpp index 752b2346b..a22f75e06 100644 --- a/jlm/llvm/opt/DeadNodeElimination.cpp +++ b/jlm/llvm/opt/DeadNodeElimination.cpp @@ -156,12 +156,14 @@ DeadNodeElimination::run(rvsdg::Region & region) } void -DeadNodeElimination::run(RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) +DeadNodeElimination::Run( + rvsdg::RvsdgModule & module, + util::StatisticsCollector & statisticsCollector) { Context_ = Context::Create(); auto & rvsdg = module.Rvsdg(); - auto statistics = Statistics::Create(module.SourceFileName()); + auto statistics = Statistics::Create(module.SourceFilePath().value()); statistics->StartMarkStatistics(rvsdg); MarkRegion(rvsdg.GetRootRegion()); statistics->StopMarkStatistics(); diff --git a/jlm/llvm/opt/DeadNodeElimination.hpp b/jlm/llvm/opt/DeadNodeElimination.hpp index 4c21b907b..6c2484c5f 100644 --- a/jlm/llvm/opt/DeadNodeElimination.hpp +++ b/jlm/llvm/opt/DeadNodeElimination.hpp @@ -6,14 +6,16 @@ #ifndef JLM_LLVM_OPT_DEADNODEELIMINATION_HPP #define JLM_LLVM_OPT_DEADNODEELIMINATION_HPP -#include -#include -#include +#include namespace jlm::rvsdg { class GammaNode; +class Graph; +class output; +class StructuralNode; class ThetaNode; +class Region; } namespace jlm::llvm @@ -34,8 +36,6 @@ namespace phi class node; } -class RvsdgModule; - /** \brief Dead Node Elimination Optimization * * Dead Node Elimination removes all nodes that do not contribute to the result of a computation. A @@ -51,7 +51,7 @@ class RvsdgModule; * * Please see TestDeadNodeElimination.cpp for Dead Node Elimination examples. */ -class DeadNodeElimination final : public optimization +class DeadNodeElimination final : public rvsdg::Transformation { class Context; class Statistics; @@ -75,7 +75,7 @@ class DeadNodeElimination final : public optimization run(rvsdg::Region & region); void - run(RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) override; + Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; private: void diff --git a/jlm/llvm/opt/InvariantValueRedirection.cpp b/jlm/llvm/opt/InvariantValueRedirection.cpp index abb9a64d9..0d5bf5db4 100644 --- a/jlm/llvm/opt/InvariantValueRedirection.cpp +++ b/jlm/llvm/opt/InvariantValueRedirection.cpp @@ -47,14 +47,14 @@ class InvariantValueRedirection::Statistics final : public util::Statistics InvariantValueRedirection::~InvariantValueRedirection() = default; void -InvariantValueRedirection::run( - RvsdgModule & rvsdgModule, +InvariantValueRedirection::Run( + rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) { - auto statistics = Statistics::Create(rvsdgModule.SourceFileName()); + auto statistics = Statistics::Create(module.SourceFilePath().value()); statistics->Start(); - RedirectInRootRegion(rvsdgModule.Rvsdg()); + RedirectInRootRegion(module.Rvsdg()); statistics->Stop(); statisticsCollector.CollectDemandedStatistics(std::move(statistics)); diff --git a/jlm/llvm/opt/InvariantValueRedirection.hpp b/jlm/llvm/opt/InvariantValueRedirection.hpp index 3942d69ac..50e8d6883 100644 --- a/jlm/llvm/opt/InvariantValueRedirection.hpp +++ b/jlm/llvm/opt/InvariantValueRedirection.hpp @@ -6,7 +6,7 @@ #ifndef JLM_LLVM_OPT_INVARIANTVALUEREDIRECTION_HPP #define JLM_LLVM_OPT_INVARIANTVALUEREDIRECTION_HPP -#include +#include namespace jlm::rvsdg { @@ -21,7 +21,6 @@ namespace jlm::llvm { class CallNode; -class RvsdgModule; /** \brief Invariant Value Redirection Optimization * @@ -50,7 +49,7 @@ class RvsdgModule; * for call nodes works only on non-recursive direct calls as IVR needs to inspect the lambda body * in order to determine whether a value is simply routed through the lambda. */ -class InvariantValueRedirection final : public optimization +class InvariantValueRedirection final : public rvsdg::Transformation { class Statistics; @@ -58,7 +57,7 @@ class InvariantValueRedirection final : public optimization ~InvariantValueRedirection() override; void - run(RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override; + Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; private: static void diff --git a/jlm/llvm/opt/OptimizationSequence.cpp b/jlm/llvm/opt/OptimizationSequence.cpp deleted file mode 100644 index b1ed91153..000000000 --- a/jlm/llvm/opt/OptimizationSequence.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2023 Nico Reißmann - * See COPYING for terms of redistribution. - */ - -#include -#include -#include -#include - -namespace jlm::llvm -{ - -class OptimizationSequence::Statistics final : public util::Statistics -{ -public: - ~Statistics() noexcept override = default; - - explicit Statistics(const util::filepath & sourceFile) - : util::Statistics(Statistics::Id::RvsdgOptimization, sourceFile) - {} - - void - StartMeasuring(const rvsdg::Graph & graph) noexcept - { - AddMeasurement(Label::NumRvsdgNodesBefore, rvsdg::nnodes(&graph.GetRootRegion())); - AddTimer(Label::Timer).start(); - } - - void - EndMeasuring(const rvsdg::Graph & graph) noexcept - { - GetTimer(Label::Timer).stop(); - AddMeasurement(Label::NumRvsdgNodesAfter, rvsdg::nnodes(&graph.GetRootRegion())); - } - - static std::unique_ptr - Create(const util::filepath & sourceFile) - { - return std::make_unique(sourceFile); - } -}; - -OptimizationSequence::~OptimizationSequence() noexcept = default; - -void -OptimizationSequence::run( - RvsdgModule & rvsdgModule, - util::StatisticsCollector & statisticsCollector) -{ - auto statistics = Statistics::Create(rvsdgModule.SourceFileName()); - statistics->StartMeasuring(rvsdgModule.Rvsdg()); - - for (const auto & optimization : Optimizations_) - { - optimization->run(rvsdgModule, statisticsCollector); - } - - statistics->EndMeasuring(rvsdgModule.Rvsdg()); - statisticsCollector.CollectDemandedStatistics(std::move(statistics)); -} - -} diff --git a/jlm/llvm/opt/OptimizationSequence.hpp b/jlm/llvm/opt/OptimizationSequence.hpp deleted file mode 100644 index 428ee1629..000000000 --- a/jlm/llvm/opt/OptimizationSequence.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2023 Nico Reißmann - * See COPYING for terms of redistribution. - */ - -#ifndef JLM_LLVM_OPT_OPTIMIZATIONSEQUENCE_HPP -#define JLM_LLVM_OPT_OPTIMIZATIONSEQUENCE_HPP - -#include - -namespace jlm::llvm -{ - -/** - * Sequentially applies a list of optimizations to an Rvsdg. - */ -class OptimizationSequence final : public optimization -{ -public: - class Statistics; - - ~OptimizationSequence() noexcept override; - - explicit OptimizationSequence(std::vector optimizations) - : Optimizations_(std::move(optimizations)) - {} - - void - run(RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override; - - static void - CreateAndRun( - RvsdgModule & rvsdgModule, - util::StatisticsCollector & statisticsCollector, - std::vector optimizations) - { - OptimizationSequence sequentialApplication(std::move(optimizations)); - sequentialApplication.run(rvsdgModule, statisticsCollector); - } - -private: - std::vector Optimizations_; -}; - -} - -#endif // JLM_LLVM_OPT_OPTIMIZATIONSEQUENCE_HPP diff --git a/jlm/llvm/opt/RvsdgTreePrinter.cpp b/jlm/llvm/opt/RvsdgTreePrinter.cpp index 5c7e146cf..a2622d8c1 100644 --- a/jlm/llvm/opt/RvsdgTreePrinter.cpp +++ b/jlm/llvm/opt/RvsdgTreePrinter.cpp @@ -45,9 +45,11 @@ class RvsdgTreePrinter::Statistics final : public util::Statistics RvsdgTreePrinter::~RvsdgTreePrinter() noexcept = default; void -RvsdgTreePrinter::run(RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) +RvsdgTreePrinter::Run( + rvsdg::RvsdgModule & rvsdgModule, + util::StatisticsCollector & statisticsCollector) { - auto statistics = Statistics::Create(rvsdgModule.SourceFileName()); + auto statistics = Statistics::Create(rvsdgModule.SourceFilePath().value()); statistics->Start(); auto annotationMap = ComputeAnnotationMap(rvsdgModule.Rvsdg()); diff --git a/jlm/llvm/opt/RvsdgTreePrinter.hpp b/jlm/llvm/opt/RvsdgTreePrinter.hpp index 43a6f77bb..3bae07168 100644 --- a/jlm/llvm/opt/RvsdgTreePrinter.hpp +++ b/jlm/llvm/opt/RvsdgTreePrinter.hpp @@ -6,7 +6,7 @@ #ifndef JLM_LLVM_OPT_RVSDGTREEPRINTER_HPP #define JLM_LLVM_OPT_RVSDGTREEPRINTER_HPP -#include +#include #include #include @@ -25,13 +25,11 @@ class StatisticsCollector; namespace jlm::llvm { -class RvsdgModule; - /** \brief RVSDG tree printer debug pass * * Prints an RVSDG tree to a file. */ -class RvsdgTreePrinter final : public optimization +class RvsdgTreePrinter final : public rvsdg::Transformation { class Statistics; @@ -100,7 +98,7 @@ class RvsdgTreePrinter final : public optimization operator=(RvsdgTreePrinter &&) = delete; void - run(RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override; + Run(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override; private: /** diff --git a/jlm/llvm/opt/alias-analyses/AgnosticMemoryNodeProvider.cpp b/jlm/llvm/opt/alias-analyses/AgnosticMemoryNodeProvider.cpp index 40a134882..79dbbb20d 100644 --- a/jlm/llvm/opt/alias-analyses/AgnosticMemoryNodeProvider.cpp +++ b/jlm/llvm/opt/alias-analyses/AgnosticMemoryNodeProvider.cpp @@ -96,12 +96,12 @@ AgnosticMemoryNodeProvider::~AgnosticMemoryNodeProvider() = default; std::unique_ptr AgnosticMemoryNodeProvider::ProvisionMemoryNodes( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, util::StatisticsCollector & statisticsCollector) { auto statistics = - Statistics::Create(rvsdgModule.SourceFileName(), statisticsCollector, pointsToGraph); + Statistics::Create(rvsdgModule.SourceFilePath().value(), statisticsCollector, pointsToGraph); statistics->StartCollecting(); util::HashSet memoryNodes; @@ -132,7 +132,7 @@ AgnosticMemoryNodeProvider::ProvisionMemoryNodes( std::unique_ptr AgnosticMemoryNodeProvider::Create( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, util::StatisticsCollector & statisticsCollector) { @@ -142,7 +142,7 @@ AgnosticMemoryNodeProvider::Create( std::unique_ptr AgnosticMemoryNodeProvider::Create( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph) { util::StatisticsCollector statisticsCollector; diff --git a/jlm/llvm/opt/alias-analyses/AgnosticMemoryNodeProvider.hpp b/jlm/llvm/opt/alias-analyses/AgnosticMemoryNodeProvider.hpp index bb01c9893..cd45eba07 100644 --- a/jlm/llvm/opt/alias-analyses/AgnosticMemoryNodeProvider.hpp +++ b/jlm/llvm/opt/alias-analyses/AgnosticMemoryNodeProvider.hpp @@ -47,7 +47,7 @@ class AgnosticMemoryNodeProvider final : public MemoryNodeProvider std::unique_ptr ProvisionMemoryNodes( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, util::StatisticsCollector & statisticsCollector) override; @@ -62,7 +62,7 @@ class AgnosticMemoryNodeProvider final : public MemoryNodeProvider */ static std::unique_ptr Create( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, util::StatisticsCollector & statisticsCollector); @@ -75,7 +75,7 @@ class AgnosticMemoryNodeProvider final : public MemoryNodeProvider * @return A new instance of MemoryNodeProvisioning. */ static std::unique_ptr - Create(const RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph); + Create(const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph); }; /** \brief Agnostic memory node provider statistics diff --git a/jlm/llvm/opt/alias-analyses/AliasAnalysis.hpp b/jlm/llvm/opt/alias-analyses/AliasAnalysis.hpp index 1956001dc..189f989f8 100644 --- a/jlm/llvm/opt/alias-analyses/AliasAnalysis.hpp +++ b/jlm/llvm/opt/alias-analyses/AliasAnalysis.hpp @@ -8,6 +8,11 @@ #include +namespace jlm::rvsdg +{ +class RvsdgModule; +} + namespace jlm::util { class StatisticsCollector; @@ -16,8 +21,6 @@ class StatisticsCollector; namespace jlm::llvm { -class RvsdgModule; - namespace aa { @@ -40,7 +43,7 @@ class AliasAnalysis * \return A PointsTo graph. */ virtual std::unique_ptr - Analyze(const RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) = 0; + Analyze(const rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) = 0; }; } diff --git a/jlm/llvm/opt/alias-analyses/Andersen.cpp b/jlm/llvm/opt/alias-analyses/Andersen.cpp index 4a8237bb1..533d04ac9 100644 --- a/jlm/llvm/opt/alias-analyses/Andersen.cpp +++ b/jlm/llvm/opt/alias-analyses/Andersen.cpp @@ -1285,7 +1285,7 @@ Andersen::GetConfiguration() const } void -Andersen::AnalyzeModule(const RvsdgModule & module, Statistics & statistics) +Andersen::AnalyzeModule(const rvsdg::RvsdgModule & module, Statistics & statistics) { Set_ = std::make_unique(); Constraints_ = std::make_unique(*Set_); @@ -1342,9 +1342,11 @@ Andersen::SolveConstraints( } std::unique_ptr -Andersen::Analyze(const RvsdgModule & module, util::StatisticsCollector & statisticsCollector) +Andersen::Analyze( + const rvsdg::RvsdgModule & module, + util::StatisticsCollector & statisticsCollector) { - auto statistics = Statistics::Create(module.SourceFileName()); + auto statistics = Statistics::Create(module.SourceFilePath().value()); statistics->StartAndersenStatistics(module.Rvsdg()); // Check environment variables for debugging flags @@ -1416,7 +1418,7 @@ Andersen::Analyze(const RvsdgModule & module, util::StatisticsCollector & statis // Create a clone of the unsolved pointer object set and constraint set auto workingCopy = copy.second->Clone(); // These statistics will only contain solving data - auto solvingStats = Statistics::Create(module.SourceFileName()); + auto solvingStats = Statistics::Create(module.SourceFilePath().value()); SolveConstraints(*workingCopy.second, config, *solvingStats); solvingStats->AddStatisticsFromSolution(*workingCopy.first); statisticsCollector.CollectDemandedStatistics(std::move(solvingStats)); diff --git a/jlm/llvm/opt/alias-analyses/Andersen.hpp b/jlm/llvm/opt/alias-analyses/Andersen.hpp index b640e715e..6bd7c6449 100644 --- a/jlm/llvm/opt/alias-analyses/Andersen.hpp +++ b/jlm/llvm/opt/alias-analyses/Andersen.hpp @@ -315,7 +315,8 @@ class Andersen final : public AliasAnalysis * @see SetConfiguration to configure settings for the analysis */ std::unique_ptr - Analyze(const RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; + Analyze(const rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) + override; /** * @brief Shorthand for Analyze, ignoring collecting any statistics. @@ -435,7 +436,7 @@ class Andersen final : public AliasAnalysis * @param statistics the Statistics instance used to track info about the analysis */ void - AnalyzeModule(const RvsdgModule & module, Statistics & statistics); + AnalyzeModule(const rvsdg::RvsdgModule & module, Statistics & statistics); /** * Solves the constraint problem using the techniques and solver specified in the given config. diff --git a/jlm/llvm/opt/alias-analyses/EliminatedMemoryNodeProvider.hpp b/jlm/llvm/opt/alias-analyses/EliminatedMemoryNodeProvider.hpp index d92d2563e..0909318e5 100644 --- a/jlm/llvm/opt/alias-analyses/EliminatedMemoryNodeProvider.hpp +++ b/jlm/llvm/opt/alias-analyses/EliminatedMemoryNodeProvider.hpp @@ -50,7 +50,7 @@ class EliminatedMemoryNodeProvider final : public MemoryNodeProvider std::unique_ptr ProvisionMemoryNodes( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, util::StatisticsCollector & statisticsCollector) override { @@ -61,7 +61,7 @@ class EliminatedMemoryNodeProvider final : public MemoryNodeProvider static std::unique_ptr Create( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, util::StatisticsCollector & statisticsCollector) { diff --git a/jlm/llvm/opt/alias-analyses/MemoryNodeEliminator.hpp b/jlm/llvm/opt/alias-analyses/MemoryNodeEliminator.hpp index 494264ece..344ea4381 100644 --- a/jlm/llvm/opt/alias-analyses/MemoryNodeEliminator.hpp +++ b/jlm/llvm/opt/alias-analyses/MemoryNodeEliminator.hpp @@ -8,14 +8,14 @@ #include -namespace jlm::util +namespace jlm::rvsdg { -class StatisticsCollector; +class RvsdgModule; } -namespace jlm::llvm +namespace jlm::util { -class RvsdgModule; +class StatisticsCollector; } namespace jlm::llvm::aa @@ -39,7 +39,7 @@ class MemoryNodeEliminator */ virtual std::unique_ptr EliminateMemoryNodes( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & seedProvisioning, jlm::util::StatisticsCollector & statisticsCollector) = 0; }; diff --git a/jlm/llvm/opt/alias-analyses/MemoryNodeProvider.hpp b/jlm/llvm/opt/alias-analyses/MemoryNodeProvider.hpp index 8aedf84e3..0efe4812a 100644 --- a/jlm/llvm/opt/alias-analyses/MemoryNodeProvider.hpp +++ b/jlm/llvm/opt/alias-analyses/MemoryNodeProvider.hpp @@ -34,7 +34,7 @@ class MemoryNodeProvider */ virtual std::unique_ptr ProvisionMemoryNodes( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, jlm::util::StatisticsCollector & statisticsCollector) = 0; }; diff --git a/jlm/llvm/opt/alias-analyses/MemoryStateEncoder.cpp b/jlm/llvm/opt/alias-analyses/MemoryStateEncoder.cpp index 29f508897..22e76ba68 100644 --- a/jlm/llvm/opt/alias-analyses/MemoryStateEncoder.cpp +++ b/jlm/llvm/opt/alias-analyses/MemoryStateEncoder.cpp @@ -463,12 +463,12 @@ MemoryStateEncoder::MemoryStateEncoder() = default; void MemoryStateEncoder::Encode( - RvsdgModule & rvsdgModule, + rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & provisioning, util::StatisticsCollector & statisticsCollector) { Context_ = Context::Create(provisioning); - auto statistics = EncodingStatistics::Create(rvsdgModule.SourceFileName()); + auto statistics = EncodingStatistics::Create(rvsdgModule.SourceFilePath().value()); statistics->Start(rvsdgModule.Rvsdg()); EncodeRegion(rvsdgModule.Rvsdg().GetRootRegion()); @@ -481,7 +481,7 @@ MemoryStateEncoder::Encode( // Remove all nodes that became dead throughout the encoding. DeadNodeElimination deadNodeElimination; - deadNodeElimination.run(rvsdgModule, statisticsCollector); + deadNodeElimination.Run(rvsdgModule, statisticsCollector); } void diff --git a/jlm/llvm/opt/alias-analyses/MemoryStateEncoder.hpp b/jlm/llvm/opt/alias-analyses/MemoryStateEncoder.hpp index 63833aa73..045a2dcef 100644 --- a/jlm/llvm/opt/alias-analyses/MemoryStateEncoder.hpp +++ b/jlm/llvm/opt/alias-analyses/MemoryStateEncoder.hpp @@ -14,6 +14,7 @@ namespace rvsdg class GammaNode; class output; class Region; +class RvsdgModule; class SimpleNode; class StructuralNode; class ThetaNode; @@ -89,7 +90,7 @@ class MemoryStateEncoder final void Encode( - RvsdgModule & rvsdgModule, + rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & provisioning, util::StatisticsCollector & statisticsCollector); diff --git a/jlm/llvm/opt/alias-analyses/Optimization.cpp b/jlm/llvm/opt/alias-analyses/Optimization.cpp index 600398948..eb01e2db6 100644 --- a/jlm/llvm/opt/alias-analyses/Optimization.cpp +++ b/jlm/llvm/opt/alias-analyses/Optimization.cpp @@ -22,8 +22,8 @@ AliasAnalysisStateEncoder:: template void -AliasAnalysisStateEncoder::run( - RvsdgModule & rvsdgModule, +AliasAnalysisStateEncoder::Run( + rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) { AliasAnalysisPass aaPass; diff --git a/jlm/llvm/opt/alias-analyses/Optimization.hpp b/jlm/llvm/opt/alias-analyses/Optimization.hpp index 91a4add66..94467db98 100644 --- a/jlm/llvm/opt/alias-analyses/Optimization.hpp +++ b/jlm/llvm/opt/alias-analyses/Optimization.hpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include @@ -32,7 +32,7 @@ namespace jlm::llvm::aa * @see RegionAwareMemoryNodeProvider */ template -class AliasAnalysisStateEncoder final : public optimization +class AliasAnalysisStateEncoder final : public rvsdg::Transformation { static_assert(std::is_base_of_v); static_assert(std::is_base_of_v); @@ -41,7 +41,7 @@ class AliasAnalysisStateEncoder final : public optimization ~AliasAnalysisStateEncoder() noexcept override; void - run(RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override; + Run(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override; }; } diff --git a/jlm/llvm/opt/alias-analyses/RegionAwareMemoryNodeProvider.cpp b/jlm/llvm/opt/alias-analyses/RegionAwareMemoryNodeProvider.cpp index 564cf8954..aa42a0391 100644 --- a/jlm/llvm/opt/alias-analyses/RegionAwareMemoryNodeProvider.cpp +++ b/jlm/llvm/opt/alias-analyses/RegionAwareMemoryNodeProvider.cpp @@ -35,11 +35,11 @@ class RegionAwareMemoryNodeProvider::Statistics final : public util::Statistics explicit Statistics( const util::StatisticsCollector & statisticsCollector, - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph) : util::Statistics( Statistics::Id::RegionAwareMemoryNodeProvisioning, - rvsdgModule.SourceFileName()), + rvsdgModule.SourceFilePath().value()), StatisticsCollector_(statisticsCollector) { if (!IsDemanded()) @@ -127,7 +127,7 @@ class RegionAwareMemoryNodeProvider::Statistics final : public util::Statistics static std::unique_ptr Create( const util::StatisticsCollector & statisticsCollector, - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph) { return std::make_unique(statisticsCollector, rvsdgModule, pointsToGraph); @@ -627,7 +627,7 @@ RegionAwareMemoryNodeProvider::RegionAwareMemoryNodeProvider() = default; std::unique_ptr RegionAwareMemoryNodeProvider::ProvisionMemoryNodes( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, util::StatisticsCollector & statisticsCollector) { @@ -657,7 +657,7 @@ RegionAwareMemoryNodeProvider::ProvisionMemoryNodes( std::unique_ptr RegionAwareMemoryNodeProvider::Create( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, util::StatisticsCollector & statisticsCollector) { @@ -667,7 +667,7 @@ RegionAwareMemoryNodeProvider::Create( std::unique_ptr RegionAwareMemoryNodeProvider::Create( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph) { util::StatisticsCollector statisticsCollector; @@ -857,7 +857,7 @@ RegionAwareMemoryNodeProvider::AnnotateStructuralNode(const rvsdg::StructuralNod } void -RegionAwareMemoryNodeProvider::Propagate(const RvsdgModule & rvsdgModule) +RegionAwareMemoryNodeProvider::Propagate(const rvsdg::RvsdgModule & rvsdgModule) { rvsdg::topdown_traverser traverser(&rvsdgModule.Rvsdg().GetRootRegion()); for (auto & node : traverser) @@ -971,7 +971,8 @@ RegionAwareMemoryNodeProvider::PropagateRegion(const rvsdg::Region & region) } void -RegionAwareMemoryNodeProvider::ResolveUnknownMemoryNodeReferences(const RvsdgModule & rvsdgModule) +RegionAwareMemoryNodeProvider::ResolveUnknownMemoryNodeReferences( + const rvsdg::RvsdgModule & rvsdgModule) { auto ResolveLambda = [&](const lambda::node & lambda) { diff --git a/jlm/llvm/opt/alias-analyses/RegionAwareMemoryNodeProvider.hpp b/jlm/llvm/opt/alias-analyses/RegionAwareMemoryNodeProvider.hpp index 3c00d949d..b8a28c170 100644 --- a/jlm/llvm/opt/alias-analyses/RegionAwareMemoryNodeProvider.hpp +++ b/jlm/llvm/opt/alias-analyses/RegionAwareMemoryNodeProvider.hpp @@ -60,7 +60,7 @@ class RegionAwareMemoryNodeProvider final : public MemoryNodeProvider std::unique_ptr ProvisionMemoryNodes( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, jlm::util::StatisticsCollector & statisticsCollector) override; @@ -75,7 +75,7 @@ class RegionAwareMemoryNodeProvider final : public MemoryNodeProvider */ static std::unique_ptr Create( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph, jlm::util::StatisticsCollector & statisticsCollector); @@ -88,7 +88,7 @@ class RegionAwareMemoryNodeProvider final : public MemoryNodeProvider * @return A new instance of MemoryNodeProvisioning. */ static std::unique_ptr - Create(const RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph); + Create(const rvsdg::RvsdgModule & rvsdgModule, const PointsToGraph & pointsToGraph); private: /** @@ -155,7 +155,7 @@ class RegionAwareMemoryNodeProvider final : public MemoryNodeProvider * @see ExtractLambdaNodes() */ void - Propagate(const RvsdgModule & rvsdgModule); + Propagate(const rvsdg::RvsdgModule & rvsdgModule); void PropagateRegion(const rvsdg::Region & region); @@ -193,7 +193,7 @@ class RegionAwareMemoryNodeProvider final : public MemoryNodeProvider * @see ExtractRvsdgTailNodes() */ void - ResolveUnknownMemoryNodeReferences(const RvsdgModule & rvsdgModule); + ResolveUnknownMemoryNodeReferences(const rvsdg::RvsdgModule & rvsdgModule); static bool ShouldCreateRegionSummary(const rvsdg::Region & region); diff --git a/jlm/llvm/opt/alias-analyses/Steensgaard.cpp b/jlm/llvm/opt/alias-analyses/Steensgaard.cpp index d9d0320bd..aa0791fa1 100644 --- a/jlm/llvm/opt/alias-analyses/Steensgaard.cpp +++ b/jlm/llvm/opt/alias-analyses/Steensgaard.cpp @@ -1818,14 +1818,14 @@ Steensgaard::Analyze(const RvsdgModule & rvsdgModule) std::unique_ptr Steensgaard::Analyze( - const RvsdgModule & module, - jlm::util::StatisticsCollector & statisticsCollector) + const rvsdg::RvsdgModule & module, + util::StatisticsCollector & statisticsCollector) { // std::unordered_map outputMap; // std::cout << jlm::rvsdg::view(module.Rvsdg().root(), outputMap) << std::flush; Context_ = Context::Create(); - auto statistics = Statistics::Create(module.SourceFileName()); + auto statistics = Statistics::Create(module.SourceFilePath().value()); // Perform Steensgaard analysis statistics->StartSteensgaardStatistics(module.Rvsdg()); diff --git a/jlm/llvm/opt/alias-analyses/Steensgaard.hpp b/jlm/llvm/opt/alias-analyses/Steensgaard.hpp index 78cb964b7..2a30b4f52 100644 --- a/jlm/llvm/opt/alias-analyses/Steensgaard.hpp +++ b/jlm/llvm/opt/alias-analyses/Steensgaard.hpp @@ -76,7 +76,7 @@ class Steensgaard final : public AliasAnalysis operator=(Steensgaard &&) = delete; std::unique_ptr - Analyze(const RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) + Analyze(const rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; /** diff --git a/jlm/llvm/opt/alias-analyses/TopDownMemoryNodeEliminator.cpp b/jlm/llvm/opt/alias-analyses/TopDownMemoryNodeEliminator.cpp index 52041340a..411ae301c 100644 --- a/jlm/llvm/opt/alias-analyses/TopDownMemoryNodeEliminator.cpp +++ b/jlm/llvm/opt/alias-analyses/TopDownMemoryNodeEliminator.cpp @@ -422,12 +422,12 @@ TopDownMemoryNodeEliminator::TopDownMemoryNodeEliminator() = default; std::unique_ptr TopDownMemoryNodeEliminator::EliminateMemoryNodes( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & seedProvisioning, util::StatisticsCollector & statisticsCollector) { Context_ = Context::Create(seedProvisioning); - auto statistics = Statistics::Create(rvsdgModule.SourceFileName()); + auto statistics = Statistics::Create(rvsdgModule.SourceFilePath().value()); statistics->Start(rvsdgModule.Rvsdg()); EliminateTopDown(rvsdgModule); @@ -445,7 +445,7 @@ TopDownMemoryNodeEliminator::EliminateMemoryNodes( std::unique_ptr TopDownMemoryNodeEliminator::CreateAndEliminate( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & seedProvisioning, util::StatisticsCollector & statisticsCollector) { @@ -455,7 +455,7 @@ TopDownMemoryNodeEliminator::CreateAndEliminate( std::unique_ptr TopDownMemoryNodeEliminator::CreateAndEliminate( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & seedProvisioning) { util::StatisticsCollector statisticsCollector; @@ -463,7 +463,7 @@ TopDownMemoryNodeEliminator::CreateAndEliminate( } void -TopDownMemoryNodeEliminator::EliminateTopDown(const RvsdgModule & rvsdgModule) +TopDownMemoryNodeEliminator::EliminateTopDown(const rvsdg::RvsdgModule & rvsdgModule) { // Initialize the memory nodes that are alive at beginning of every tail-lambda InitializeLiveNodesOfTailLambdas(rvsdgModule); @@ -873,7 +873,8 @@ TopDownMemoryNodeEliminator::EliminateTopDownIndirectCall( } void -TopDownMemoryNodeEliminator::InitializeLiveNodesOfTailLambdas(const RvsdgModule & rvsdgModule) +TopDownMemoryNodeEliminator::InitializeLiveNodesOfTailLambdas( + const rvsdg::RvsdgModule & rvsdgModule) { auto nodes = rvsdg::Graph::ExtractTailNodes(rvsdgModule.Rvsdg()); for (auto & node : nodes) @@ -924,7 +925,7 @@ TopDownMemoryNodeEliminator::InitializeLiveNodesOfTailLambda(const lambda::node bool TopDownMemoryNodeEliminator::CheckInvariants( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & seedProvisioning, const Provisioning & provisioning) { diff --git a/jlm/llvm/opt/alias-analyses/TopDownMemoryNodeEliminator.hpp b/jlm/llvm/opt/alias-analyses/TopDownMemoryNodeEliminator.hpp index f2b50e776..02fcf4633 100644 --- a/jlm/llvm/opt/alias-analyses/TopDownMemoryNodeEliminator.hpp +++ b/jlm/llvm/opt/alias-analyses/TopDownMemoryNodeEliminator.hpp @@ -77,7 +77,7 @@ class TopDownMemoryNodeEliminator final : public MemoryNodeEliminator std::unique_ptr EliminateMemoryNodes( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & seedProvisioning, util::StatisticsCollector & statisticsCollector) override; @@ -92,7 +92,7 @@ class TopDownMemoryNodeEliminator final : public MemoryNodeEliminator */ static std::unique_ptr CreateAndEliminate( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & seedProvisioning, util::StatisticsCollector & statisticsCollector); @@ -106,12 +106,12 @@ class TopDownMemoryNodeEliminator final : public MemoryNodeEliminator */ static std::unique_ptr CreateAndEliminate( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & seedProvisioning); private: void - EliminateTopDown(const RvsdgModule & rvsdgModule); + EliminateTopDown(const rvsdg::RvsdgModule & rvsdgModule); /** * Processes the inter-procedural RVSDG nodes (lambda, phi, and delta nodes) in the root region @@ -193,7 +193,7 @@ class TopDownMemoryNodeEliminator final : public MemoryNodeEliminator * @see graph::ExtractTailNodes() */ void - InitializeLiveNodesOfTailLambdas(const RvsdgModule & rvsdgModule); + InitializeLiveNodesOfTailLambdas(const rvsdg::RvsdgModule & rvsdgModule); /** * Initializes the memory nodes that are alive at the beginning of every tail-lambda. @@ -220,7 +220,7 @@ class TopDownMemoryNodeEliminator final : public MemoryNodeEliminator */ static bool CheckInvariants( - const RvsdgModule & rvsdgModule, + const rvsdg::RvsdgModule & rvsdgModule, const MemoryNodeProvisioning & seedProvisioning, const Provisioning & provisioning); diff --git a/jlm/llvm/opt/cne.cpp b/jlm/llvm/opt/cne.cpp index 27a784b7f..b1c8d4d94 100644 --- a/jlm/llvm/opt/cne.cpp +++ b/jlm/llvm/opt/cne.cpp @@ -564,12 +564,12 @@ divert(rvsdg::Region * region, cnectx & ctx) } static void -cne(RvsdgModule & rm, util::StatisticsCollector & statisticsCollector) +cne(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) { - auto & graph = rm.Rvsdg(); + auto & graph = rvsdgModule.Rvsdg(); cnectx ctx; - auto statistics = cnestat::Create(rm.SourceFileName()); + auto statistics = cnestat::Create(rvsdgModule.SourceFilePath().value()); statistics->start_mark_stat(graph); mark(&graph.GetRootRegion(), ctx); @@ -588,7 +588,7 @@ cne::~cne() {} void -cne::run(RvsdgModule & module, util::StatisticsCollector & statisticsCollector) +cne::Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) { llvm::cne(module, statisticsCollector); } diff --git a/jlm/llvm/opt/cne.hpp b/jlm/llvm/opt/cne.hpp index bac3b3176..ca085e0ed 100644 --- a/jlm/llvm/opt/cne.hpp +++ b/jlm/llvm/opt/cne.hpp @@ -6,23 +6,21 @@ #ifndef JLM_LLVM_OPT_CNE_HPP #define JLM_LLVM_OPT_CNE_HPP -#include +#include namespace jlm::llvm { -class RvsdgModule; - /** * \brief Common Node Elimination */ -class cne final : public optimization +class cne final : public rvsdg::Transformation { public: virtual ~cne(); - virtual void - run(RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) override; + void + Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; }; } diff --git a/jlm/llvm/opt/inlining.cpp b/jlm/llvm/opt/inlining.cpp index 91afdfcef..aaae85b98 100644 --- a/jlm/llvm/opt/inlining.cpp +++ b/jlm/llvm/opt/inlining.cpp @@ -162,10 +162,10 @@ inlining(rvsdg::Graph & rvsdg) } static void -inlining(RvsdgModule & rm, util::StatisticsCollector & statisticsCollector) +inlining(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) { - auto & graph = rm.Rvsdg(); - auto statistics = ilnstat::Create(rm.SourceFileName()); + auto & graph = rvsdgModule.Rvsdg(); + auto statistics = ilnstat::Create(rvsdgModule.SourceFilePath().value()); statistics->start(graph); inlining(graph); @@ -180,7 +180,7 @@ fctinline::~fctinline() {} void -fctinline::run(RvsdgModule & module, util::StatisticsCollector & statisticsCollector) +fctinline::Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) { inlining(module, statisticsCollector); } diff --git a/jlm/llvm/opt/inlining.hpp b/jlm/llvm/opt/inlining.hpp index a39b7c944..ebc3e8478 100644 --- a/jlm/llvm/opt/inlining.hpp +++ b/jlm/llvm/opt/inlining.hpp @@ -7,23 +7,21 @@ #define JLM_LLVM_OPT_INLINE_HPP #include -#include +#include namespace jlm::llvm { -class RvsdgModule; - /** * \brief Function Inlining */ -class fctinline final : public optimization +class fctinline final : public rvsdg::Transformation { public: virtual ~fctinline(); - virtual void - run(RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) override; + void + Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; }; jlm::rvsdg::output * diff --git a/jlm/llvm/opt/inversion.cpp b/jlm/llvm/opt/inversion.cpp index a0cbce507..66ea5f970 100644 --- a/jlm/llvm/opt/inversion.cpp +++ b/jlm/llvm/opt/inversion.cpp @@ -301,13 +301,13 @@ invert(rvsdg::Region * region) } static void -invert(RvsdgModule & rm, util::StatisticsCollector & statisticsCollector) +invert(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) { - auto statistics = ivtstat::Create(rm.SourceFileName()); + auto statistics = ivtstat::Create(rvsdgModule.SourceFilePath().value()); - statistics->start(rm.Rvsdg()); - invert(&rm.Rvsdg().GetRootRegion()); - statistics->end(rm.Rvsdg()); + statistics->start(rvsdgModule.Rvsdg()); + invert(&rvsdgModule.Rvsdg().GetRootRegion()); + statistics->end(rvsdgModule.Rvsdg()); statisticsCollector.CollectDemandedStatistics(std::move(statistics)); } @@ -318,7 +318,7 @@ tginversion::~tginversion() {} void -tginversion::run(RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) +tginversion::Run(rvsdg::RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) { invert(module, statisticsCollector); } diff --git a/jlm/llvm/opt/inversion.hpp b/jlm/llvm/opt/inversion.hpp index 5e263cc14..815038f7b 100644 --- a/jlm/llvm/opt/inversion.hpp +++ b/jlm/llvm/opt/inversion.hpp @@ -6,23 +6,21 @@ #ifndef JLM_LLVM_OPT_INVERSION_HPP #define JLM_LLVM_OPT_INVERSION_HPP -#include +#include namespace jlm::llvm { -class RvsdgModule; - /** * \brief Theta-Gamma Inversion */ -class tginversion final : public optimization +class tginversion final : public rvsdg::Transformation { public: virtual ~tginversion(); - virtual void - run(RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) override; + void + Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; }; } diff --git a/jlm/llvm/opt/optimization.cpp b/jlm/llvm/opt/optimization.cpp deleted file mode 100644 index 9ccfa9805..000000000 --- a/jlm/llvm/opt/optimization.cpp +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2018 Nico Reißmann - * See COPYING for terms of redistribution. - */ - -#include - -namespace jlm::llvm -{ - -optimization::~optimization() -{} - -} diff --git a/jlm/llvm/opt/optimization.hpp b/jlm/llvm/opt/optimization.hpp deleted file mode 100644 index 91a89674f..000000000 --- a/jlm/llvm/opt/optimization.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2018 Nico Reißmann - * See COPYING for terms of redistribution. - */ - -#ifndef JLM_LLVM_OPT_OPTIMIZATION_HPP -#define JLM_LLVM_OPT_OPTIMIZATION_HPP - -#include - -namespace jlm::util -{ -class StatisticsCollector; -} - -namespace jlm::llvm -{ - -class RvsdgModule; - -/** - * \brief Optimization pass interface - */ -class optimization -{ -public: - virtual ~optimization(); - - /** - * \brief Perform optimization - * - * This method is expected to be called multiple times. An - * implementation is required to reset the objects' internal state - * to ensure correct behavior after every invocation. - * - * \param module RVSDG module the optimization is performed on. - * \param statisticsCollector Statistics collector for collecting optimization statistics. - */ - virtual void - run(RvsdgModule & module, jlm::util::StatisticsCollector & statisticsCollector) = 0; -}; - -} - -#endif diff --git a/jlm/llvm/opt/pull.cpp b/jlm/llvm/opt/pull.cpp index cb33512a8..61941af55 100644 --- a/jlm/llvm/opt/pull.cpp +++ b/jlm/llvm/opt/pull.cpp @@ -305,13 +305,13 @@ pull(rvsdg::Region * region) } static void -pull(RvsdgModule & rm, util::StatisticsCollector & statisticsCollector) +pull(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) { - auto statistics = pullstat::Create(rm.SourceFileName()); + auto statistics = pullstat::Create(module.SourceFilePath().value()); - statistics->start(rm.Rvsdg()); - pull(&rm.Rvsdg().GetRootRegion()); - statistics->end(rm.Rvsdg()); + statistics->start(module.Rvsdg()); + pull(&module.Rvsdg().GetRootRegion()); + statistics->end(module.Rvsdg()); statisticsCollector.CollectDemandedStatistics(std::move(statistics)); } @@ -322,7 +322,7 @@ pullin::~pullin() {} void -pullin::run(RvsdgModule & module, util::StatisticsCollector & statisticsCollector) +pullin::Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) { pull(module, statisticsCollector); } diff --git a/jlm/llvm/opt/pull.hpp b/jlm/llvm/opt/pull.hpp index f06aa0ac7..f456a103e 100644 --- a/jlm/llvm/opt/pull.hpp +++ b/jlm/llvm/opt/pull.hpp @@ -6,29 +6,27 @@ #ifndef JLM_LLVM_OPT_PULL_HPP #define JLM_LLVM_OPT_PULL_HPP -#include -#include +#include namespace jlm::rvsdg { class GammaNode; +class Region; } namespace jlm::llvm { -class RvsdgModule; - /** * \brief Node Pull-In Optimization */ -class pullin final : public optimization +class pullin final : public rvsdg::Transformation { public: virtual ~pullin(); - virtual void - run(RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; + void + Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; }; void diff --git a/jlm/llvm/opt/push.cpp b/jlm/llvm/opt/push.cpp index abba1f5ec..6ba2ade25 100644 --- a/jlm/llvm/opt/push.cpp +++ b/jlm/llvm/opt/push.cpp @@ -413,13 +413,13 @@ push(rvsdg::Region * region) } static void -push(RvsdgModule & rm, util::StatisticsCollector & statisticsCollector) +push(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) { - auto statistics = pushstat::Create(rm.SourceFileName()); + auto statistics = pushstat::Create(rvsdgModule.SourceFilePath().value()); - statistics->start(rm.Rvsdg()); - push(&rm.Rvsdg().GetRootRegion()); - statistics->end(rm.Rvsdg()); + statistics->start(rvsdgModule.Rvsdg()); + push(&rvsdgModule.Rvsdg().GetRootRegion()); + statistics->end(rvsdgModule.Rvsdg()); statisticsCollector.CollectDemandedStatistics(std::move(statistics)); } @@ -430,7 +430,7 @@ pushout::~pushout() {} void -pushout::run(RvsdgModule & module, util::StatisticsCollector & statisticsCollector) +pushout::Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) { push(module, statisticsCollector); } diff --git a/jlm/llvm/opt/push.hpp b/jlm/llvm/opt/push.hpp index b25aac191..ff8a3129c 100644 --- a/jlm/llvm/opt/push.hpp +++ b/jlm/llvm/opt/push.hpp @@ -6,7 +6,7 @@ #ifndef JLM_LLVM_OPT_PUSH_HPP #define JLM_LLVM_OPT_PUSH_HPP -#include +#include namespace jlm::rvsdg { @@ -17,18 +17,16 @@ class ThetaNode; namespace jlm::llvm { -class RvsdgModule; - /** * \brief Node Push-Out Optimization */ -class pushout final : public optimization +class pushout final : public rvsdg::Transformation { public: virtual ~pushout(); - virtual void - run(RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; + void + Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; }; void diff --git a/jlm/llvm/opt/reduction.cpp b/jlm/llvm/opt/reduction.cpp index 6ed5e689f..41eac068c 100644 --- a/jlm/llvm/opt/reduction.cpp +++ b/jlm/llvm/opt/reduction.cpp @@ -53,18 +53,13 @@ NodeReduction::~NodeReduction() noexcept = default; NodeReduction::NodeReduction() = default; void -NodeReduction::run(RvsdgModule & rvsdgModule) -{ - util::StatisticsCollector statisticsCollector; - run(rvsdgModule, statisticsCollector); -} - -void -NodeReduction::run(RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) +NodeReduction::Run( + rvsdg::RvsdgModule & rvsdgModule, + util::StatisticsCollector & statisticsCollector) { const auto & graph = rvsdgModule.Rvsdg(); - Statistics_ = Statistics::Create(rvsdgModule.SourceFileName()); + Statistics_ = Statistics::Create(rvsdgModule.SourceFilePath().value()); Statistics_->Start(graph); ReduceNodesInRegion(graph.GetRootRegion()); diff --git a/jlm/llvm/opt/reduction.hpp b/jlm/llvm/opt/reduction.hpp index 2c8f4cfb7..4a7e53be8 100644 --- a/jlm/llvm/opt/reduction.hpp +++ b/jlm/llvm/opt/reduction.hpp @@ -6,7 +6,7 @@ #ifndef JLM_LLVM_OPT_REDUCTION_HPP #define JLM_LLVM_OPT_REDUCTION_HPP -#include +#include #include #include @@ -31,7 +31,7 @@ class StoreNonVolatileOperation; * nodes in a region are visited top-down and reductions are performed until a fix-point is reached, * i.e., until no peephole optimization can be applied any longer to any node in a region. */ -class NodeReduction final : public optimization +class NodeReduction final : public rvsdg::Transformation { public: class Statistics; @@ -51,10 +51,7 @@ class NodeReduction final : public optimization operator=(NodeReduction &&) = delete; void - run(RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override; - - void - run(RvsdgModule & rvsdgModule); + Run(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override; private: void diff --git a/jlm/llvm/opt/unroll.cpp b/jlm/llvm/opt/unroll.cpp index fee069dcf..876dc87fc 100644 --- a/jlm/llvm/opt/unroll.cpp +++ b/jlm/llvm/opt/unroll.cpp @@ -522,13 +522,13 @@ loopunroll::~loopunroll() {} void -loopunroll::run(RvsdgModule & module, util::StatisticsCollector & statisticsCollector) +loopunroll::Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) { if (factor_ < 2) return; auto & graph = module.Rvsdg(); - auto statistics = unrollstat::Create(module.SourceFileName()); + auto statistics = unrollstat::Create(module.SourceFilePath().value()); statistics->start(module.Rvsdg()); unroll(&graph.GetRootRegion(), factor_); diff --git a/jlm/llvm/opt/unroll.hpp b/jlm/llvm/opt/unroll.hpp index 7fa5d3244..7aab200b1 100644 --- a/jlm/llvm/opt/unroll.hpp +++ b/jlm/llvm/opt/unroll.hpp @@ -6,9 +6,9 @@ #ifndef JLM_LLVM_OPT_UNROLL_HPP #define JLM_LLVM_OPT_UNROLL_HPP -#include #include #include +#include #include namespace jlm::llvm @@ -19,7 +19,7 @@ class RvsdgModule; /** * \brief Optimization that attempts to unroll loops (thetas). */ -class loopunroll final : public optimization +class loopunroll final : public rvsdg::Transformation { public: virtual ~loopunroll(); @@ -36,8 +36,8 @@ class loopunroll final : public optimization * \param module Module where the innermost loops are unrolled * \param statisticsCollector Statistics collector for collecting loop unrolling statistics. */ - virtual void - run(RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; + void + Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override; private: size_t factor_; diff --git a/jlm/rvsdg/Makefile.sub b/jlm/rvsdg/Makefile.sub index db99389cb..c78ba418c 100644 --- a/jlm/rvsdg/Makefile.sub +++ b/jlm/rvsdg/Makefile.sub @@ -13,6 +13,7 @@ librvsdg_SOURCES = \ jlm/rvsdg/structural-node.cpp \ jlm/rvsdg/theta.cpp \ jlm/rvsdg/tracker.cpp \ + jlm/rvsdg/Transformation.cpp \ jlm/rvsdg/traverser.cpp \ jlm/rvsdg/type.cpp \ jlm/rvsdg/unary.cpp \ @@ -54,6 +55,7 @@ librvsdg_HEADERS = \ jlm/rvsdg/theta.hpp \ jlm/rvsdg/reduction-helpers.hpp \ jlm/rvsdg/RvsdgModule.hpp \ + jlm/rvsdg/Transformation.hpp \ jlm/rvsdg/bitstring.hpp \ jlm/rvsdg/node.hpp \ jlm/rvsdg/NodeNormalization.hpp \ diff --git a/jlm/rvsdg/Transformation.cpp b/jlm/rvsdg/Transformation.cpp new file mode 100644 index 000000000..e9957468b --- /dev/null +++ b/jlm/rvsdg/Transformation.cpp @@ -0,0 +1,64 @@ +/* + * Copyright 2025 Nico Reißmann + * See COPYING for terms of redistribution. + */ + +#include "RvsdgModule.hpp" +#include +#include + +namespace jlm::rvsdg +{ + +Transformation::~Transformation() noexcept = default; + +class TransformationSequence::Statistics final : public util::Statistics +{ +public: + ~Statistics() noexcept override = default; + + explicit Statistics(const util::filepath & sourceFile) + : util::Statistics(Id::RvsdgOptimization, sourceFile) + {} + + void + StartMeasuring(const Graph & graph) noexcept + { + AddMeasurement(Label::NumRvsdgNodesBefore, nnodes(&graph.GetRootRegion())); + AddTimer(Label::Timer).start(); + } + + void + EndMeasuring(const rvsdg::Graph & graph) noexcept + { + GetTimer(Label::Timer).stop(); + AddMeasurement(Label::NumRvsdgNodesAfter, nnodes(&graph.GetRootRegion())); + } + + static std::unique_ptr + Create(const util::filepath & sourceFile) + { + return std::make_unique(sourceFile); + } +}; + +TransformationSequence::~TransformationSequence() noexcept = default; + +void +TransformationSequence::Run( + RvsdgModule & rvsdgModule, + util::StatisticsCollector & statisticsCollector) +{ + auto statistics = Statistics::Create(rvsdgModule.SourceFilePath().value()); + statistics->StartMeasuring(rvsdgModule.Rvsdg()); + + for (const auto & optimization : Transformations_) + { + optimization->Run(rvsdgModule, statisticsCollector); + } + + statistics->EndMeasuring(rvsdgModule.Rvsdg()); + statisticsCollector.CollectDemandedStatistics(std::move(statistics)); +} + +} diff --git a/jlm/rvsdg/Transformation.hpp b/jlm/rvsdg/Transformation.hpp new file mode 100644 index 000000000..9179fcbdb --- /dev/null +++ b/jlm/rvsdg/Transformation.hpp @@ -0,0 +1,100 @@ +/* + * Copyright 2025 Nico Reißmann + * See COPYING for terms of redistribution. + */ + +#ifndef JLM_RVSDG_TRANSFORMATION_HPP +#define JLM_RVSDG_TRANSFORMATION_HPP + +#include + +namespace jlm::rvsdg +{ + +class RvsdgModule; + +/** + * \brief Represents an RVSDG transformation. + */ +class Transformation +{ +public: + virtual ~Transformation() noexcept; + + /** + * \brief Perform RVSDG transformation + * + * \note This method is expected to be called multiple times. An + * implementation is required to reset the objects' internal state + * to ensure correct behavior after every invocation. + * + * \param module RVSDG module the transformation is performed on. + * \param statisticsCollector Statistics collector for collecting transformation statistics. + */ + virtual void + Run(RvsdgModule & module, util::StatisticsCollector & statisticsCollector) = 0; + + /** + * \brief Perform RVSDG transformation + * + * \note This method is expected to be called multiple times. An + * implementation is required to reset the objects' internal state + * to ensure correct behavior after every invocation. + * + * @param module RVSDG module the transformation is performed on. + */ + void + Run(RvsdgModule & module) + { + util::StatisticsCollector statisticsCollector; + Run(module, statisticsCollector); + } +}; + +/** + * Sequentially applies a list of RVSDG transformations. + */ +class TransformationSequence final : public Transformation +{ + class Statistics; + +public: + ~TransformationSequence() noexcept override; + + explicit TransformationSequence(std::vector transformations) + : Transformations_(std::move(transformations)) + {} + + /** + * \brief Perform RVSDG transformations + * + * @param rvsdgModule RVSDG module the transformation is performed on. + * @param statisticsCollector Statistics collector for collecting transformation statistics. + */ + void + Run(RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override; + + /** + * \brief Creates a transformation sequence and invokes its Run() method. + * + * @param rvsdgModule RVSDG module the transformation is performed on. + * @param statisticsCollector Statistics collector for collecting transformation statistics. + * @param transformations The transformations that are sequentially applied to \p rvsdgModule. + */ + static void + CreateAndRun( + RvsdgModule & rvsdgModule, + util::StatisticsCollector & statisticsCollector, + std::vector transformations) + { + TransformationSequence sequentialApplication(std::move(transformations)); + sequentialApplication.Run(rvsdgModule, statisticsCollector); + } + +private: + std::vector Transformations_; +}; + +} + +#endif // JLM_RVSDG_TRANSFORMATION_HPP diff --git a/jlm/tooling/Command.cpp b/jlm/tooling/Command.cpp index 7beb8005e..a1e092087 100644 --- a/jlm/tooling/Command.cpp +++ b/jlm/tooling/Command.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -32,6 +31,8 @@ #include #include +#include + #ifdef ENABLE_MLIR #include #include @@ -295,7 +296,7 @@ JlmOptCommand::JlmOptCommand( for (auto optimizationId : CommandLineOptions_.GetOptimizationIds()) { if (auto it = Optimizations_.find(optimizationId); it == Optimizations_.end()) - Optimizations_[optimizationId] = CreateOptimization(optimizationId); + Optimizations_[optimizationId] = CreateTransformation(optimizationId); } } @@ -351,7 +352,10 @@ JlmOptCommand::Run() const CommandLineOptions_.GetInputFormat(), statisticsCollector); - llvm::OptimizationSequence::CreateAndRun(*rvsdgModule, statisticsCollector, GetOptimizations()); + rvsdg::TransformationSequence::CreateAndRun( + *rvsdgModule, + statisticsCollector, + GetTransformations()); PrintRvsdgModule( *rvsdgModule, @@ -362,10 +366,10 @@ JlmOptCommand::Run() const statisticsCollector.PrintStatistics(); } -std::vector -JlmOptCommand::GetOptimizations() const +std::vector +JlmOptCommand::GetTransformations() const { - std::vector optimizations; + std::vector optimizations; for (auto optimizationId : CommandLineOptions_.GetOptimizationIds()) { auto it = Optimizations_.find(optimizationId); @@ -376,8 +380,8 @@ JlmOptCommand::GetOptimizations() const return optimizations; } -std::unique_ptr -JlmOptCommand::CreateOptimization( +std::unique_ptr +JlmOptCommand::CreateTransformation( enum JlmOptCommandLineOptions::OptimizationId optimizationId) const { using Andersen = llvm::aa::Andersen; diff --git a/jlm/tooling/Command.hpp b/jlm/tooling/Command.hpp index 0b6ddb5dc..5da1d4523 100644 --- a/jlm/tooling/Command.hpp +++ b/jlm/tooling/Command.hpp @@ -10,11 +10,14 @@ #include #include -#include - #include #include +namespace jlm::llvm +{ +class RvsdgModule; +} + namespace jlm::tooling { @@ -418,15 +421,17 @@ class JlmOptCommand final : public Command const util::filepath & outputFile, util::StatisticsCollector & statisticsCollector); - [[nodiscard]] std::vector - GetOptimizations() const; + [[nodiscard]] std::vector + GetTransformations() const; - [[nodiscard]] std::unique_ptr - CreateOptimization(enum JlmOptCommandLineOptions::OptimizationId optimizationId) const; + [[nodiscard]] std::unique_ptr + CreateTransformation(JlmOptCommandLineOptions::OptimizationId optimizationId) const; std::string ProgramName_; JlmOptCommandLineOptions CommandLineOptions_; - std::unordered_map> + std::unordered_map< + JlmOptCommandLineOptions::OptimizationId, + std::unique_ptr> Optimizations_ = {}; }; diff --git a/jlm/tooling/CommandLine.hpp b/jlm/tooling/CommandLine.hpp index defbf66b6..29f0c1f6c 100644 --- a/jlm/tooling/CommandLine.hpp +++ b/jlm/tooling/CommandLine.hpp @@ -6,7 +6,6 @@ #ifndef JLM_TOOLING_COMMANDLINE_HPP #define JLM_TOOLING_COMMANDLINE_HPP -#include #include #include #include diff --git a/tests/jlm/llvm/opt/InvariantValueRedirectionTests.cpp b/tests/jlm/llvm/opt/InvariantValueRedirectionTests.cpp index 4c33a1506..124a27f0d 100644 --- a/tests/jlm/llvm/opt/InvariantValueRedirectionTests.cpp +++ b/tests/jlm/llvm/opt/InvariantValueRedirectionTests.cpp @@ -24,7 +24,7 @@ RunInvariantValueRedirection(jlm::llvm::RvsdgModule & rvsdgModule) jlm::util::StatisticsCollector statisticsCollector; jlm::llvm::InvariantValueRedirection invariantValueRedirection; - invariantValueRedirection.run(rvsdgModule, statisticsCollector); + invariantValueRedirection.Run(rvsdgModule, statisticsCollector); jlm::rvsdg::view(rvsdgModule.Rvsdg(), stdout); } diff --git a/tests/jlm/llvm/opt/NodeReductionTests.cpp b/tests/jlm/llvm/opt/NodeReductionTests.cpp index 2aa82aa3d..e108ea8af 100644 --- a/tests/jlm/llvm/opt/NodeReductionTests.cpp +++ b/tests/jlm/llvm/opt/NodeReductionTests.cpp @@ -44,7 +44,7 @@ MultipleReductionsPerRegion() NodeReduction nodeReduction; jlm::util::StatisticsCollector statisticsCollector( jlm::util::StatisticsCollectorSettings({ jlm::util::Statistics::Id::ReduceNodes })); - nodeReduction.run(rvsdgModule, statisticsCollector); + nodeReduction.Run(rvsdgModule, statisticsCollector); view(graph, stdout); diff --git a/tests/jlm/llvm/opt/RvsdgTreePrinterTests.cpp b/tests/jlm/llvm/opt/RvsdgTreePrinterTests.cpp index b5458b499..5424fb727 100644 --- a/tests/jlm/llvm/opt/RvsdgTreePrinterTests.cpp +++ b/tests/jlm/llvm/opt/RvsdgTreePrinterTests.cpp @@ -35,7 +35,7 @@ RunAndExtractFile(jlm::llvm::RvsdgModule & module, jlm::llvm::RvsdgTreePrinter & StatisticsCollectorSettings settings({}, tmpDir, "TestTreePrinter"); StatisticsCollector collector(settings); - printer.run(module, collector); + printer.Run(module, collector); auto fileName = tmpDir.Join("TestTreePrinter-" + settings.GetUniqueString() + "-rvsdgTree-0.txt"); auto result = ReadFile(fileName); diff --git a/tests/jlm/llvm/opt/TestDeadNodeElimination.cpp b/tests/jlm/llvm/opt/TestDeadNodeElimination.cpp index 38ecc46f0..28892b718 100644 --- a/tests/jlm/llvm/opt/TestDeadNodeElimination.cpp +++ b/tests/jlm/llvm/opt/TestDeadNodeElimination.cpp @@ -23,7 +23,7 @@ RunDeadNodeElimination(jlm::llvm::RvsdgModule & rvsdgModule) { jlm::util::StatisticsCollector statisticsCollector; jlm::llvm::DeadNodeElimination deadNodeElimination; - deadNodeElimination.run(rvsdgModule, statisticsCollector); + deadNodeElimination.Run(rvsdgModule, statisticsCollector); } static void diff --git a/tests/jlm/llvm/opt/alias-analyses/TestPointsToGraph.cpp b/tests/jlm/llvm/opt/alias-analyses/TestPointsToGraph.cpp index 32bf2ecae..0f11d0be7 100644 --- a/tests/jlm/llvm/opt/alias-analyses/TestPointsToGraph.cpp +++ b/tests/jlm/llvm/opt/alias-analyses/TestPointsToGraph.cpp @@ -17,7 +17,7 @@ class TestAnalysis final : public jlm::llvm::aa::AliasAnalysis { public: std::unique_ptr - Analyze(const jlm::llvm::RvsdgModule & rvsdgModule, jlm::util::StatisticsCollector &) override + Analyze(const jlm::rvsdg::RvsdgModule & rvsdgModule, jlm::util::StatisticsCollector &) override { PointsToGraph_ = jlm::llvm::aa::PointsToGraph::Create(); diff --git a/tests/jlm/llvm/opt/test-cne.cpp b/tests/jlm/llvm/opt/test-cne.cpp index 3e1208c86..b7d543433 100644 --- a/tests/jlm/llvm/opt/test-cne.cpp +++ b/tests/jlm/llvm/opt/test-cne.cpp @@ -53,7 +53,7 @@ test_simple() // jlm::rvsdg::view(graph.GetRootRegion(), stdout); jlm::llvm::cne cne; - cne.run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); assert(graph.GetRootRegion().result(0)->origin() == graph.GetRootRegion().result(1)->origin()); @@ -106,7 +106,7 @@ test_gamma() // jlm::rvsdg::view(graph.GetRootRegion(), stdout); jlm::llvm::cne cne; - cne.run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); auto subregion0 = gamma->subregion(0); @@ -163,7 +163,7 @@ test_theta() // jlm::rvsdg::view(graph.GetRootRegion(), stdout); jlm::llvm::cne cne; - cne.run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); auto un1 = jlm::rvsdg::output::GetNode(*u1); @@ -211,7 +211,7 @@ test_theta2() // jlm::rvsdg::view(graph, stdout); jlm::llvm::cne cne; - cne.run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph, stdout); assert(lv2.post->origin() == u1); @@ -264,7 +264,7 @@ test_theta3() // jlm::rvsdg::view(graph, stdout); jlm::llvm::cne cne; - cne.run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph, stdout); assert(r1->result(2)->origin() == r1->result(4)->origin()); @@ -318,7 +318,7 @@ test_theta4() // jlm::rvsdg::view(graph, stdout); jlm::llvm::cne cne; - cne.run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph, stdout); assert(ex1.origin() != ex2.origin()); @@ -362,7 +362,7 @@ test_theta5() // jlm::rvsdg::view(graph, stdout); jlm::llvm::cne cne; - cne.run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph, stdout); assert(ex1.origin() == ex2.origin()); @@ -397,7 +397,7 @@ test_lambda() // jlm::rvsdg::view(graph.GetRootRegion(), stdout); jlm::llvm::cne cne; - cne.run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); auto bn1 = jlm::rvsdg::output::GetNode(*b1); @@ -445,7 +445,7 @@ test_phi() // jlm::rvsdg::view(graph.GetRootRegion(), stdout); jlm::llvm::cne cne; - cne.run(rm, statisticsCollector); + cne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); assert( diff --git a/tests/jlm/llvm/opt/test-inlining.cpp b/tests/jlm/llvm/opt/test-inlining.cpp index d436dbf47..12e96bec3 100644 --- a/tests/jlm/llvm/opt/test-inlining.cpp +++ b/tests/jlm/llvm/opt/test-inlining.cpp @@ -104,7 +104,7 @@ test1() // Act jlm::llvm::fctinline fctinline; - fctinline.run(rm, statisticsCollector); + fctinline.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); // Assert @@ -173,7 +173,7 @@ test2() // Act jlm::llvm::fctinline fctinline; - fctinline.run(rm, statisticsCollector); + fctinline.Run(rm, statisticsCollector); jlm::rvsdg::view(&graph.GetRootRegion(), stdout); // Assert diff --git a/tests/jlm/llvm/opt/test-inversion.cpp b/tests/jlm/llvm/opt/test-inversion.cpp index f87c7ba2a..d21ec74e3 100644 --- a/tests/jlm/llvm/opt/test-inversion.cpp +++ b/tests/jlm/llvm/opt/test-inversion.cpp @@ -67,7 +67,7 @@ test1() // jlm::rvsdg::view(graph.GetRootRegion(), stdout); jlm::llvm::tginversion tginversion; - tginversion.run(rm, statisticsCollector); + tginversion.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); assert(jlm::rvsdg::is(jlm::rvsdg::output::GetNode(*ex1.origin()))); @@ -114,7 +114,7 @@ test2() // jlm::rvsdg::view(graph.GetRootRegion(), stdout); jlm::llvm::tginversion tginversion; - tginversion.run(rm, statisticsCollector); + tginversion.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); assert(jlm::rvsdg::is(jlm::rvsdg::output::GetNode(*ex.origin()))); diff --git a/tests/jlm/llvm/opt/test-pull.cpp b/tests/jlm/llvm/opt/test-pull.cpp index c6bb08f3d..ef779399f 100644 --- a/tests/jlm/llvm/opt/test-pull.cpp +++ b/tests/jlm/llvm/opt/test-pull.cpp @@ -117,7 +117,7 @@ test_pull() jlm::rvsdg::view(graph, stdout); jlm::llvm::pullin pullin; - pullin.run(rm, statisticsCollector); + pullin.Run(rm, statisticsCollector); graph.PruneNodes(); jlm::rvsdg::view(graph, stdout); diff --git a/tests/jlm/llvm/opt/test-push.cpp b/tests/jlm/llvm/opt/test-push.cpp index 7cca44259..119d5d3c9 100644 --- a/tests/jlm/llvm/opt/test-push.cpp +++ b/tests/jlm/llvm/opt/test-push.cpp @@ -50,7 +50,7 @@ test_gamma() // jlm::rvsdg::view(graph.GetRootRegion(), stdout); jlm::llvm::pushout pushout; - pushout.run(rm, statisticsCollector); + pushout.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); assert(graph.GetRootRegion().nnodes() == 3); @@ -95,7 +95,7 @@ test_theta() // jlm::rvsdg::view(graph.GetRootRegion(), stdout); jlm::llvm::pushout pushout; - pushout.run(rm, statisticsCollector); + pushout.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph.GetRootRegion(), stdout); assert(graph.GetRootRegion().nnodes() == 3); diff --git a/tests/jlm/llvm/opt/test-unroll.cpp b/tests/jlm/llvm/opt/test-unroll.cpp index bbf0d2ba6..ee7e83969 100644 --- a/tests/jlm/llvm/opt/test-unroll.cpp +++ b/tests/jlm/llvm/opt/test-unroll.cpp @@ -248,7 +248,7 @@ test_unknown_boundaries() // jlm::rvsdg::view(graph, stdout); jlm::llvm::loopunroll loopunroll(2); - loopunroll.run(rm, statisticsCollector); + loopunroll.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph, stdout); auto node = jlm::rvsdg::output::GetNode(*ex1.origin()); @@ -258,7 +258,7 @@ test_unknown_boundaries() /* Create cleaner output */ DeadNodeElimination dne; - dne.run(rm, statisticsCollector); + dne.Run(rm, statisticsCollector); // jlm::rvsdg::view(graph, stdout); } @@ -344,7 +344,7 @@ test_nested_theta() // jlm::rvsdg::view(graph, stdout); jlm::llvm::loopunroll loopunroll(4); - loopunroll.run(rm, statisticsCollector); + loopunroll.Run(rm, statisticsCollector); /* The outher theta should contain two inner thetas */