summaryrefslogtreecommitdiff
path: root/src/passes/Inlining.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/Inlining.cpp')
-rw-r--r--src/passes/Inlining.cpp29
1 files changed, 11 insertions, 18 deletions
diff --git a/src/passes/Inlining.cpp b/src/passes/Inlining.cpp
index a507e5fc8..ebc33bf97 100644
--- a/src/passes/Inlining.cpp
+++ b/src/passes/Inlining.cpp
@@ -32,13 +32,14 @@
#include <atomic>
-#include <wasm.h>
-#include <pass.h>
-#include <wasm-builder.h>
-#include <ir/utils.h>
-#include <ir/literal-utils.h>
-#include <parsing.h>
-#include <passes/opt-utils.h>
+#include "wasm.h"
+#include "pass.h"
+#include "wasm-builder.h"
+#include "ir/literal-utils.h"
+#include "ir/module-utils.h"
+#include "ir/utils.h"
+#include "parsing.h"
+#include "passes/opt-utils.h"
namespace wasm {
@@ -117,11 +118,6 @@ struct FunctionInfoScanner : public WalkerPass<PostWalker<FunctionInfoScanner>>
(*infos)[getFunction()->name].lightweight = false;
}
- void visitCallImport(CallImport* curr) {
- // having a call is not lightweight
- (*infos)[getFunction()->name].lightweight = false;
- }
-
void visitFunction(Function* curr) {
(*infos)[curr->name].size = Measurer::measure(curr->body);
}
@@ -279,9 +275,7 @@ struct Inlining : public Pass {
}
for (auto& segment : module->table.segments) {
for (auto name : segment.data) {
- if (module->getFunctionOrNull(name)) {
- infos[name].usedGlobally = true;
- }
+ infos[name].usedGlobally = true;
}
}
}
@@ -289,12 +283,11 @@ struct Inlining : public Pass {
bool iteration(PassRunner* runner, Module* module) {
// decide which to inline
InliningState state;
- for (auto& func : module->functions) {
- // on the first iteration, allow multiple inlinings per function
+ ModuleUtils::iterDefinedFunctions(*module, [&](Function* func) {
if (infos[func->name].worthInlining(runner->options)) {
state.worthInlining.insert(func->name);
}
- }
+ });
if (state.worthInlining.size() == 0) return false;
// fill in actionsForFunction, as we operate on it in parallel (each function to its own entry)
for (auto& func : module->functions) {