cleanup
diff --git a/CMakeLists.txt b/CMakeLists.txt index 43e503e..f7dcd5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -468,4 +468,3 @@ endif() configure_file(scripts/binaryen-lit.in ${CMAKE_BINARY_DIR}/bin/binaryen-lit @ONLY) -
diff --git a/src/passes/CoalesceLocals.cpp b/src/passes/CoalesceLocals.cpp index edf1420..ba9b875 100644 --- a/src/passes/CoalesceLocals.cpp +++ b/src/passes/CoalesceLocals.cpp
@@ -526,25 +526,7 @@ continue; } } - - // Remove ineffective actions, that is, dead stores. - // - // Note that this may have downsides for non-nullable locals: - // - // x = whatever; // dead set for validation - // if (..) { - // x = value1; - // } else { - // x = value2; - // } - // - // The dead set ensures validation, at the cost of extra code size and - // slower speed in some tiers (the optimizing tier, at least, will - // remove such dead sets anyhow). In theory keeping such a dead set may - // be worthwhile, as it may save code size (by keeping the local - // non-nullable and avoiding ref.as_non_nulls later). But the tradeoff - // here isn't clear, so do the simple thing for now and remove all dead - // sets. + // remove ineffective actions if (!action.effective) { // value may have no side effects, further optimizations can eliminate // it
diff --git a/src/support/permutation.h b/src/support/permutation.h deleted file mode 100644 index ebe949a..0000000 --- a/src/support/permutation.h +++ /dev/null
@@ -1,82 +0,0 @@ -/* - * Copyright 2017 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. - */ - -#ifndef wasm_support_permutation_h -#define wasm_support_permutation_h - -// Utilities for operating on permutation vectors - -namespace wasm { - -namespace Permutation { - -inline std::vector<Index> makeIdentity(Index num) { - std::vector<Index> ret; - ret.resize(num); - for (Index i = 0; i < num; i++) { - ret[i] = i; - } - return ret; -} - -inline void setIdentity(std::vector<Index>& ret) { - auto num = ret.size(); - assert(num > 0); // must already be of the right size - for (Index i = 0; i < num; i++) { - ret[i] = i; - } -} - -inline std::vector<Index> makeReversed(const std::vector<Index>& original) { - std::vector<Index> ret; - auto num = original.size(); - ret.resize(num); - for (Index i = 0; i < num; i++) { - ret[original[i]] = i; - } - return ret; -} - -// return a list of all permutations. -inline std::vector<std::vector<Index>> makeAllPermutations(Index size) { - std::vector<std::vector<Index>> ret; - std::vector<Index> curr; - curr.resize(size); - for (auto& x : curr) x = 0; - while (1) { - std::set<Index> set; - for (auto x : curr) set.insert(x); - if (set.size() == size) { - ret.push_back(curr); // this is indeed a permutation - } - // advance to the next permutation in order - Index toBump = size - 1; - while (1) { - curr[toBump]++; - if (curr[toBump] < size) break; - // an overflow - if (toBump == 0) return ret; // all done - curr[toBump] = 0; - toBump--; - } - } -} - -} // Permutation - -} // wasm - -#endif // wasm_support_permutation_h
diff --git a/src/support/permutations.h b/src/support/permutations.h index 2140630..4e6cc18 100644 --- a/src/support/permutations.h +++ b/src/support/permutations.h
@@ -50,6 +50,31 @@ return ret; } +// Return a list of all permutations. +inline std::vector<std::vector<Index>> makeAllPermutations(Index size) { + std::vector<std::vector<Index>> ret; + std::vector<Index> curr; + curr.resize(size); + for (auto& x : curr) x = 0; + while (1) { + std::set<Index> set; + for (auto x : curr) set.insert(x); + if (set.size() == size) { + ret.push_back(curr); // this is indeed a permutation + } + // advance to the next permutation in order + Index toBump = size - 1; + while (1) { + curr[toBump]++; + if (curr[toBump] < size) break; + // an overflow + if (toBump == 0) return ret; // all done + curr[toBump] = 0; + toBump--; + } + } +} + } // namespace wasm #endif // permutations
diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt index 7953eee..1dbe1ed 100644 --- a/src/tools/CMakeLists.txt +++ b/src/tools/CMakeLists.txt
@@ -17,5 +17,6 @@ binaryen_add_executable(wasm-ctor-eval wasm-ctor-eval.cpp) binaryen_add_executable(wasm-reduce wasm-reduce.cpp) binaryen_add_executable(wasm-fuzz-types "${fuzzing_SOURCES};wasm-fuzz-types.cpp") +binaryen_add_executable(wasm-analyze wasm-analyze.cpp) add_subdirectory(wasm-split)