summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/binaryen-c.cpp2
-rw-r--r--test/example/c-api-kitchen-sink.c26
-rw-r--r--test/example/c-api-kitchen-sink.txt17
3 files changed, 44 insertions, 1 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 64304421c..e164c0312 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -3822,7 +3822,7 @@ void BinaryenFunctionOptimize(BinaryenFunctionRef func,
BinaryenModuleRef module) {
PassRunner passRunner((Module*)module);
passRunner.options = globalPassOptions;
- passRunner.addDefaultOptimizationPasses();
+ passRunner.addDefaultFunctionOptimizationPasses();
passRunner.runOnFunction((Function*)func);
}
void BinaryenFunctionRunPasses(BinaryenFunctionRef func,
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index a8aa05c4a..8a2f22e8d 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -1365,6 +1365,31 @@ void test_for_each() {
BinaryenModuleDispose(module);
}
+void test_func_opt() {
+ BinaryenModuleRef module = BinaryenModuleCreate();
+ BinaryenType ii_[2] = {BinaryenTypeInt32(), BinaryenTypeInt32()};
+ BinaryenType ii = BinaryenTypeCreate(ii_, 2);
+ BinaryenExpressionRef x = BinaryenConst(module, BinaryenLiteralInt32(1)),
+ y = BinaryenConst(module, BinaryenLiteralInt32(3));
+ BinaryenExpressionRef add = BinaryenBinary(module, BinaryenAddInt32(), x, y);
+ BinaryenFunctionRef adder = BinaryenAddFunction(
+ module, "adder", BinaryenTypeNone(), BinaryenTypeInt32(), NULL, 0, add);
+
+ puts("module with a function to optimize:");
+ BinaryenModulePrint(module);
+
+ assert(BinaryenModuleValidate(module));
+
+ BinaryenFunctionOptimize(adder, module);
+
+ assert(BinaryenModuleValidate(module));
+
+ puts("optimized:");
+ BinaryenModulePrint(module);
+
+ BinaryenModuleDispose(module);
+}
+
int main() {
test_types();
test_features();
@@ -1376,6 +1401,7 @@ int main() {
test_nonvalid();
test_color_status();
test_for_each();
+ test_func_opt();
return 0;
}
diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt
index 0e85ac18a..723d81999 100644
--- a/test/example/c-api-kitchen-sink.txt
+++ b/test/example/c-api-kitchen-sink.txt
@@ -2450,3 +2450,20 @@ validation: 0
(nop)
)
)
+module with a function to optimize:
+(module
+ (type $none_=>_i32 (func (result i32)))
+ (func $adder (result i32)
+ (i32.add
+ (i32.const 1)
+ (i32.const 3)
+ )
+ )
+)
+optimized:
+(module
+ (type $none_=>_i32 (func (result i32)))
+ (func $adder (result i32)
+ (i32.const 4)
+ )
+)