diff options
Diffstat (limited to 'src/passes/PostEmscripten.cpp')
-rw-r--r-- | src/passes/PostEmscripten.cpp | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/src/passes/PostEmscripten.cpp b/src/passes/PostEmscripten.cpp index eea7a1a34..da482d70a 100644 --- a/src/passes/PostEmscripten.cpp +++ b/src/passes/PostEmscripten.cpp @@ -41,46 +41,10 @@ static bool isInvoke(Function* F) { return F->imported() && F->module == ENV && F->base.startsWith("invoke_"); } -struct OptimizeCalls : public WalkerPass<PostWalker<OptimizeCalls>> { - bool isFunctionParallel() override { return true; } - - Pass* create() override { return new OptimizeCalls; } - - void visitCall(Call* curr) { - // special asm.js imports can be optimized - auto* func = getModule()->getFunction(curr->target); - if (!func->imported()) { - return; - } - if (func->module == GLOBAL_MATH) { - if (func->base == POW) { - if (auto* exponent = curr->operands[1]->dynCast<Const>()) { - if (exponent->value == Literal(double(2.0))) { - // This is just a square operation, do a multiply - Localizer localizer(curr->operands[0], getFunction(), getModule()); - Builder builder(*getModule()); - replaceCurrent(builder.makeBinary( - MulFloat64, - localizer.expr, - builder.makeLocalGet(localizer.index, localizer.expr->type))); - } else if (exponent->value == Literal(double(0.5))) { - // This is just a square root operation - replaceCurrent( - Builder(*getModule()).makeUnary(SqrtFloat64, curr->operands[0])); - } - } - } - } - } -}; - } // namespace struct PostEmscripten : public Pass { void run(PassRunner* runner, Module* module) override { - // Optimize calls - OptimizeCalls().run(runner, module); - // Optimize exceptions optimizeExceptions(runner, module); } |