summaryrefslogtreecommitdiff
path: root/src/ir/module-utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ir/module-utils.h')
-rw-r--r--src/ir/module-utils.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/ir/module-utils.h b/src/ir/module-utils.h
index 5bcf2ea99..83625809f 100644
--- a/src/ir/module-utils.h
+++ b/src/ir/module-utils.h
@@ -85,6 +85,19 @@ inline void copyModule(Module& in, Module& out) {
out.debugInfoFileNames = in.debugInfoFileNames;
}
+inline Function* copyFunction(Module& in, Module& out, Name name) {
+ Function *ret = out.getFunctionOrNull(name);
+ if (ret != nullptr) {
+ return ret;
+ }
+ auto* curr = in.getFunction(name);
+ auto* func = new Function(*curr);
+ func->body = ExpressionManipulator::copy(func->body, out);
+ func->type = Name();
+ out.addFunction(func);
+ return func;
+}
+
} // namespace ModuleUtils
} // namespace wasm