summaryrefslogtreecommitdiff
path: root/src/binaryen-c.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r--src/binaryen-c.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 15635c940..7901f46d3 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -969,6 +969,27 @@ void BinaryenModuleOptimize(BinaryenModuleRef module) {
passRunner.run();
}
+void BinaryenModuleRunPasses(BinaryenModuleRef module, const char **passes, BinaryenIndex numPasses) {
+ if (tracing) {
+ std::cout << " {\n";
+ std::cout << " const char* passes[] = { ";
+ for (BinaryenIndex i = 0; i < numPasses; i++) {
+ if (i > 0) std::cout << ", ";
+ std::cout << "\"" << passes[i] << "\"";
+ }
+ std::cout << " };\n";
+ std::cout << " BinaryenModuleRunPasses(the_module, passes, " << numPasses << ");\n";
+ std::cout << " }\n";
+ }
+
+ Module* wasm = (Module*)module;
+ PassRunner passRunner(wasm);
+ for (BinaryenIndex i = 0; i < numPasses; i++) {
+ passRunner.add(passes[i]);
+ }
+ passRunner.run();
+}
+
void BinaryenModuleAutoDrop(BinaryenModuleRef module) {
if (tracing) {
std::cout << " BinaryenModuleAutoDrop(the_module);\n";