diff --git a/ngraph/src/ngraph/pass/get_output_element_elimination.cpp b/ngraph/src/ngraph/pass/get_output_element_elimination.cpp index cc6faff0580..f948c6bb583 100644 --- a/ngraph/src/ngraph/pass/get_output_element_elimination.cpp +++ b/ngraph/src/ngraph/pass/get_output_element_elimination.cpp @@ -32,6 +32,10 @@ using namespace ngraph; using namespace std; +NGRAPH_RTTI_DEFINITION(ngraph::pass::GetOutputElementElimination, + "ngraph::pass::GetOutputElementElimination", + 0); + bool pass::GetOutputElementElimination::run_on_node(shared_ptr n) { bool optimized = false; diff --git a/ngraph/src/ngraph/pass/get_output_element_elimination.hpp b/ngraph/src/ngraph/pass/get_output_element_elimination.hpp index fa248c800b3..cfa1692f163 100644 --- a/ngraph/src/ngraph/pass/get_output_element_elimination.hpp +++ b/ngraph/src/ngraph/pass/get_output_element_elimination.hpp @@ -30,6 +30,8 @@ NGRAPH_SUPPRESS_DEPRECATED_START class NGRAPH_API ngraph::pass::GetOutputElementElimination : public NodePass { public: + NGRAPH_RTTI_DECLARATION; + bool run_on_node(std::shared_ptr node) override; }; NGRAPH_SUPPRESS_DEPRECATED_END diff --git a/ngraph/src/ngraph/pass/graph_rewrite.cpp b/ngraph/src/ngraph/pass/graph_rewrite.cpp index 05484dac5c1..571e021fbba 100644 --- a/ngraph/src/ngraph/pass/graph_rewrite.cpp +++ b/ngraph/src/ngraph/pass/graph_rewrite.cpp @@ -62,6 +62,10 @@ using namespace ngraph; // If MatcherPass register more than one node make sure that this nodes are registered in // topological order. +NGRAPH_RTTI_DEFINITION(ngraph::pass::GraphRewrite, "ngraph::pass::GraphRewrite", 0); + +NGRAPH_RTTI_DEFINITION(ngraph::pass::MatcherPass, "ngraph::pass::MatcherPass", 0); + bool pass::GraphRewrite::run_on_function(shared_ptr f) { OV_ITT_SCOPED_TASK(itt::domains::Ngraph, "pass::GraphRewrite::run_on_function"); diff --git a/ngraph/src/ngraph/pass/graph_rewrite.hpp b/ngraph/src/ngraph/pass/graph_rewrite.hpp index 4a564d77060..dbfb47097d9 100644 --- a/ngraph/src/ngraph/pass/graph_rewrite.hpp +++ b/ngraph/src/ngraph/pass/graph_rewrite.hpp @@ -57,6 +57,8 @@ namespace ngraph class NGRAPH_API ngraph::pass::MatcherPass : public ngraph::pass::PassBase { public: + NGRAPH_RTTI_DECLARATION; + MatcherPass() = default; MatcherPass(const MatcherPass&) = delete; @@ -114,6 +116,8 @@ private: class NGRAPH_API ngraph::pass::GraphRewrite : public ngraph::pass::FunctionPass { public: + NGRAPH_RTTI_DECLARATION; + GraphRewrite() = default; explicit GraphRewrite(const std::shared_ptr& pass) diff --git a/ngraph/src/ngraph/pass/pass.cpp b/ngraph/src/ngraph/pass/pass.cpp index 39a5cd54658..1472a27a414 100644 --- a/ngraph/src/ngraph/pass/pass.cpp +++ b/ngraph/src/ngraph/pass/pass.cpp @@ -27,6 +27,10 @@ using namespace ngraph; NGRAPH_SUPPRESS_DEPRECATED_START +NGRAPH_RTTI_DEFINITION(ngraph::pass::FunctionPass, "ngraph::pass::FunctionPass", 0); + +NGRAPH_RTTI_DEFINITION(ngraph::pass::NodePass, "ngraph::pass::NodePass", 0); + pass::PassBase::PassBase() : m_property{all_pass_property_off} { diff --git a/ngraph/src/ngraph/pass/pass.hpp b/ngraph/src/ngraph/pass/pass.hpp index 40bead1eb38..568d740d8d1 100644 --- a/ngraph/src/ngraph/pass/pass.hpp +++ b/ngraph/src/ngraph/pass/pass.hpp @@ -57,6 +57,10 @@ namespace ngraph void set_callback(const param_callback& callback); + using type_info_t = DiscreteTypeInfo; + + virtual const type_info_t& get_type_info() const = 0; + protected: ManagerState& get_state(); void set_state(ManagerState&); @@ -82,6 +86,7 @@ namespace ngraph class NGRAPH_API FunctionPass : public PassBase { public: + NGRAPH_RTTI_DECLARATION; virtual ~FunctionPass(); virtual bool run_on_function(std::shared_ptr) = 0; }; @@ -90,6 +95,7 @@ namespace ngraph : public PassBase { public: + NGRAPH_RTTI_DECLARATION; virtual ~NodePass(); virtual bool run_on_node(std::shared_ptr) = 0; }; diff --git a/ngraph/src/ngraph/pass/validate.cpp b/ngraph/src/ngraph/pass/validate.cpp index e467a53bf2c..d1e9088a29f 100644 --- a/ngraph/src/ngraph/pass/validate.cpp +++ b/ngraph/src/ngraph/pass/validate.cpp @@ -20,6 +20,8 @@ using namespace ngraph; +NGRAPH_RTTI_DEFINITION(ngraph::pass::Validate, "ngraph::pass::Validate", 0); + bool pass::Validate::run_on_function(std::shared_ptr f) { f->validate_nodes_and_infer_types(); diff --git a/ngraph/src/ngraph/pass/validate.hpp b/ngraph/src/ngraph/pass/validate.hpp index 6585f80bad4..2e7a9095a8f 100644 --- a/ngraph/src/ngraph/pass/validate.hpp +++ b/ngraph/src/ngraph/pass/validate.hpp @@ -37,6 +37,8 @@ namespace ngraph class NGRAPH_API Validate : public FunctionPass { public: + NGRAPH_RTTI_DECLARATION; + Validate() : FunctionPass() { diff --git a/ngraph/src/ngraph/pass/visualize_tree.cpp b/ngraph/src/ngraph/pass/visualize_tree.cpp index af431760227..6d00a542241 100644 --- a/ngraph/src/ngraph/pass/visualize_tree.cpp +++ b/ngraph/src/ngraph/pass/visualize_tree.cpp @@ -183,6 +183,8 @@ static std::string label_edge(const std::shared_ptr& /* src */, return ss.str(); } +NGRAPH_RTTI_DEFINITION(ngraph::pass::VisualizeTree, "ngraph::pass::VisualizeTree", 0); + bool pass::VisualizeTree::run_on_module(vector>& functions) { for (shared_ptr f : functions) diff --git a/ngraph/src/ngraph/pass/visualize_tree.hpp b/ngraph/src/ngraph/pass/visualize_tree.hpp index 4eaff8bcb1f..f02eb4f4c93 100644 --- a/ngraph/src/ngraph/pass/visualize_tree.hpp +++ b/ngraph/src/ngraph/pass/visualize_tree.hpp @@ -41,6 +41,8 @@ class HeightMap; class NGRAPH_API ngraph::pass::VisualizeTree : public ModulePass { public: + NGRAPH_RTTI_DECLARATION; + using node_modifiers_t = std::function& attributes)>; VisualizeTree(const std::string& file_name,