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.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/passes/Inlining.cpp b/src/passes/Inlining.cpp
index d7f132879..43addff8b 100644
--- a/src/passes/Inlining.cpp
+++ b/src/passes/Inlining.cpp
@@ -326,7 +326,6 @@ struct Inlining : public Pass {
PassRunner runner(module);
FunctionInfoScanner(&infos).run(&runner, module);
// fill in global uses
- // anything exported or used in a table should not be inlined
for (auto& ex : module->exports) {
if (ex->kind == ExternalKind::Function) {
infos[ex->value].usedGlobally = true;
@@ -337,6 +336,13 @@ struct Inlining : public Pass {
infos[name].usedGlobally = true;
}
}
+ for (auto& global : module->globals) {
+ if (!global->imported()) {
+ for (auto* ref : FindAll<RefFunc>(global->init).list) {
+ infos[ref->func].usedGlobally = true;
+ }
+ }
+ }
}
bool iteration(PassRunner* runner, Module* module) {