diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/passes/SimplifyLocals.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/passes/SimplifyLocals.cpp b/src/passes/SimplifyLocals.cpp index 5c7b7475a..a0f843bbd 100644 --- a/src/passes/SimplifyLocals.cpp +++ b/src/passes/SimplifyLocals.cpp @@ -79,11 +79,13 @@ struct SimplifyLocals : public WalkerPass<FastExecutionWalker<SimplifyLocals>> { } void walk(Expression*& curr) override { + if (!curr) return; + FastExecutionWalker::walk(curr); // invalidations TODO: this is O(n^2) in sinkables EffectAnalyzer effects; - effects.walk(curr); // TODO: this, accumulated, is O(n * nesting) <= O(n^2) + effects.visit(curr); std::vector<Name> invalidated; for (auto& sinkable : sinkables) { if (effects.invalidates(sinkable.second.effects)) { |