[enco] Refactor DuplicatePass (#2850)
author박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Tue, 15 Jan 2019 03:56:25 +0000 (12:56 +0900)
committer박종현/On-Device Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Tue, 15 Jan 2019 03:56:25 +0000 (12:56 +0900)
This will hide DuplicatePass class and provide duplicate_inout_bag() like the other transformation pass

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
contrib/enco/core/src/Backend.cpp
contrib/enco/core/src/Transforms/Duplicate.cpp
contrib/enco/core/src/Transforms/Duplicate.h

index 7270a86..8cf2306 100644 (file)
@@ -97,8 +97,7 @@ void BackendImpl::compile(coco::Module *m, coco::Data *d)
   // that share the same bag as their underlying bag.
   //
   // This DuplicatePass creates a copy of such bags in order to eliminate such a pair.
-  DuplicatePass duplicate;
-  duplicate.runOnCode(code(sess));
+  duplicate_inout_bag(code(sess));
 
   // The current implementation will assign memory region for each bag as follows:
   //   Bind input bag to the region provided by Network_input_bind
index 4d9b303..91f64a0 100644 (file)
@@ -38,8 +38,17 @@ coco::Block *find_or_create_first_block(coco::Module *m)
 
 } // namespace
 
-namespace enco
+namespace
+{
+
+class DuplicatePass
 {
+private:
+  void runOnModule(coco::Module *m) const;
+
+public:
+  void runOnCode(enco::Code *) const;
+};
 
 void DuplicatePass::runOnModule(coco::Module *m) const
 {
@@ -110,6 +119,17 @@ void DuplicatePass::runOnModule(coco::Module *m) const
   }
 }
 
-void DuplicatePass::runOnCode(Code *code) const { runOnModule(code->module()); }
+void DuplicatePass::runOnCode(enco::Code *code) const { runOnModule(code->module()); }
+
+} // namespace
+
+namespace enco
+{
+
+void duplicate_inout_bag(enco::Code *code)
+{
+  DuplicatePass duplicate;
+  duplicate.runOnCode(code);
+}
 
 } // namespace enco
index d43b1e1..a0352ed 100644 (file)
@@ -25,14 +25,7 @@ namespace enco
 /**
  * @brief Eliminate in/out bags by duplication
  */
-class DuplicatePass
-{
-private:
-  void runOnModule(coco::Module *m) const;
-
-public:
-  void runOnCode(enco::Code *) const;
-};
+void duplicate_inout_bag(enco::Code *code);
 
 } // namespace enco