summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/passes/Directize.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/passes/Directize.cpp b/src/passes/Directize.cpp
index b2d132c5e..8d5cacdaf 100644
--- a/src/passes/Directize.cpp
+++ b/src/passes/Directize.cpp
@@ -27,6 +27,7 @@
#include "wasm-builder.h"
#include "wasm-traversal.h"
#include "asm_v_wasm.h"
+#include <ir/utils.h>
namespace wasm {
@@ -95,8 +96,16 @@ struct FunctionDirectizer : public WalkerPass<PostWalker<FunctionDirectizer>> {
}
}
+ void doWalkFunction(Function* func) {
+ WalkerPass<PostWalker<FunctionDirectizer>>::doWalkFunction(func);
+ if (changedTypes) {
+ ReFinalize().walkFunctionInModule(func, getModule());
+ }
+ }
+
private:
FlatTable* flatTable;
+ bool changedTypes = false;
void replaceWithUnreachable(CallIndirect* call) {
Builder builder(*getModule());
@@ -109,6 +118,7 @@ private:
builder.makeUnreachable()
)
);
+ changedTypes = true;
}
};