diff options
-rw-r--r-- | src/passes/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/passes/LowerIfElse.cpp | 67 | ||||
-rw-r--r-- | src/passes/pass.cpp | 1 | ||||
-rw-r--r-- | test/passes/lower-if-else.txt | 42 | ||||
-rw-r--r-- | test/passes/lower-if-else.wast | 29 |
5 files changed, 0 insertions, 140 deletions
diff --git a/src/passes/CMakeLists.txt b/src/passes/CMakeLists.txt index 0baee7c3a..1b4c65562 100644 --- a/src/passes/CMakeLists.txt +++ b/src/passes/CMakeLists.txt @@ -3,7 +3,6 @@ SET(passes_SOURCES CoalesceLocals.cpp DeadCodeElimination.cpp DuplicateFunctionElimination.cpp - LowerIfElse.cpp MergeBlocks.cpp Metrics.cpp NameManager.cpp diff --git a/src/passes/LowerIfElse.cpp b/src/passes/LowerIfElse.cpp deleted file mode 100644 index b566e8207..000000000 --- a/src/passes/LowerIfElse.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2015 WebAssembly Community Group participants - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// -// Lowers if (x) y else z into -// -// L: { -// if (x) break (y) L -// z -// } -// -// This is useful for investigating how beneficial if_else is. -// - -#include <memory> - -#include <wasm.h> -#include <pass.h> - -namespace wasm { - -struct LowerIfElse : public WalkerPass<PostWalker<LowerIfElse, Visitor<LowerIfElse>>> { - MixedArena* allocator; - std::unique_ptr<NameManager> namer; - - void prepare(PassRunner* runner, Module *module) override { - allocator = runner->allocator; - namer = make_unique<NameManager>(); - namer->run(runner, module); - } - - void visitIf(If *curr) { - if (curr->ifFalse) { - auto block = allocator->alloc<Block>(); - auto name = namer->getUnique("L"); // TODO: getUniqueInFunction - block->name = name; - block->list.push_back(curr); - block->list.push_back(curr->ifFalse); - block->finalize(); - curr->ifFalse = nullptr; - auto break_ = allocator->alloc<Break>(); - break_->name = name; - break_->value = curr->ifTrue; - curr->ifTrue = break_; - replaceCurrent(block); - } - } -}; - -Pass *createLowerIfElsePass() { - return new LowerIfElse(); -} - -} // namespace wasm diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp index cd7e21542..1e7e85ccb 100644 --- a/src/passes/pass.cpp +++ b/src/passes/pass.cpp @@ -65,7 +65,6 @@ void PassRegistry::registerPasses() { registerPass("coalesce-locals-learning", "reduce # of locals by coalescing and learning", createCoalesceLocalsWithLearningPass); registerPass("dce", "removes unreachable code", createDeadCodeEliminationPass); registerPass("duplicate-function-elimination", "removes duplicate functions", createDuplicateFunctionEliminationPass); - registerPass("lower-if-else", "lowers if-elses into ifs, blocks and branches", createLowerIfElsePass); registerPass("merge-blocks", "merges blocks to their parents", createMergeBlocksPass); registerPass("metrics", "reports metrics", createMetricsPass); registerPass("nm", "name list", createNameListPass); diff --git a/test/passes/lower-if-else.txt b/test/passes/lower-if-else.txt deleted file mode 100644 index 93dd6d916..000000000 --- a/test/passes/lower-if-else.txt +++ /dev/null @@ -1,42 +0,0 @@ -(module - (memory 256 256) - (type $0 (func)) - (func $ifs (type $0) - (block $block0 - (if - (i32.const 0) - (i32.const 1) - ) - (block $L0 - (if - (i32.const 0) - (br $L0 - (i32.const 1) - ) - ) - (i32.const 2) - ) - (block $L1 - (if - (i32.const 4) - (br $L1 - (i32.const 5) - ) - ) - (i32.const 6) - ) - (i32.eq - (block $L2 - (if - (i32.const 4) - (br $L2 - (i32.const 5) - ) - ) - (i32.const 6) - ) - (i32.const 177) - ) - ) - ) -) diff --git a/test/passes/lower-if-else.wast b/test/passes/lower-if-else.wast deleted file mode 100644 index 138a8a206..000000000 --- a/test/passes/lower-if-else.wast +++ /dev/null @@ -1,29 +0,0 @@ -(module - (memory 256 256) - (func $ifs - (block - (if - (i32.const 0) - (i32.const 1) - ) - (if_else - (i32.const 0) - (i32.const 1) - (i32.const 2) - ) - (if_else - (i32.const 4) - (i32.const 5) - (i32.const 6) - ) - (i32.eq - (if_else - (i32.const 4) - (i32.const 5) - (i32.const 6) - ) - (i32.const 177) - ) - ) - ) -) |