diff options
author | Thomas Lively <tlively@google.com> | 2022-11-22 23:41:49 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-23 05:41:49 +0000 |
commit | 2c0fb8c513b3534576383d250c593a9bd28347e3 (patch) | |
tree | 993b23de3e8e5007fd3a32242cda95e7172ad765 /src/tools | |
parent | 853b31ec89416bef0014e06f2defaef74f47b81e (diff) | |
download | binaryen-2c0fb8c513b3534576383d250c593a9bd28347e3.tar.gz binaryen-2c0fb8c513b3534576383d250c593a9bd28347e3.tar.bz2 binaryen-2c0fb8c513b3534576383d250c593a9bd28347e3.zip |
Remove equirecursive typing (#5240)
Equirecursive is no longer standards track and its implementation is extremely
complex. Remove it.
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/tool-options.h | 13 | ||||
-rw-r--r-- | src/tools/wasm-fuzz-types.cpp | 14 | ||||
-rw-r--r-- | src/tools/wasm-reduce.cpp | 5 |
3 files changed, 7 insertions, 25 deletions
diff --git a/src/tools/tool-options.h b/src/tools/tool-options.h index eb5212c84..0522b5538 100644 --- a/src/tools/tool-options.h +++ b/src/tools/tool-options.h @@ -148,15 +148,6 @@ struct ToolOptions : public Options { [](Options* o, const std::string& argument) { setTypeSystem(TypeSystem::Nominal); }) - .add("--structural", - "", - "Force all GC type definitions to be parsed as structural " - "(i.e. equirecursive). This is the default.", - ToolOptionsCategory, - Options::Arguments::Zero, - [](Options* o, const std::string& argument) { - setTypeSystem(TypeSystem::Equirecursive); - }) .add("--hybrid", "", "Force all GC type definitions to be parsed using the isorecursive " @@ -196,9 +187,7 @@ struct ToolOptions : public Options { void applyFeatures(Module& module) const { module.features.enable(enabledFeatures); module.features.disable(disabledFeatures); - // Non-default type systems only make sense with GC enabled. TODO: Error on - // non-GC equirecursive types as well once we make isorecursive the default - // if we don't remove equirecursive types entirely. + // Non-default type systems only make sense with GC enabled. if (!module.features.hasGC() && getTypeSystem() == TypeSystem::Nominal) { Fatal() << "Nominal typing is only allowed when GC is enabled"; } diff --git a/src/tools/wasm-fuzz-types.cpp b/src/tools/wasm-fuzz-types.cpp index bbf4967e3..0e40e7a15 100644 --- a/src/tools/wasm-fuzz-types.cpp +++ b/src/tools/wasm-fuzz-types.cpp @@ -517,25 +517,17 @@ int main(int argc, const char* argv[]) { Options::Arguments::Zero, [&](Options*, const std::string& arg) { verbose = true; }); - TypeSystem system = TypeSystem::Nominal; + TypeSystem system = TypeSystem::Isorecursive; options.add( "--nominal", "", - "Use the nominal type system (default)", + "Use the nominal type system", WasmFuzzTypesOption, Options::Arguments::Zero, [&](Options*, const std::string& arg) { system = TypeSystem::Nominal; }); - options.add("--structural", - "", - "Use the equirecursive type system", - WasmFuzzTypesOption, - Options::Arguments::Zero, - [&](Options*, const std::string& arg) { - system = TypeSystem::Equirecursive; - }); options.add("--hybrid", "", - "Use the isorecursive hybrid type system", + "Use the isorecursive hybrid type system (default)", WasmFuzzTypesOption, Options::Arguments::Zero, [&](Options*, const std::string& arg) { diff --git a/src/tools/wasm-reduce.cpp b/src/tools/wasm-reduce.cpp index eec1e0874..d92e0a93c 100644 --- a/src/tools/wasm-reduce.cpp +++ b/src/tools/wasm-reduce.cpp @@ -1293,9 +1293,10 @@ int main(int argc, const char* argv[]) { } if (getTypeSystem() == TypeSystem::Nominal) { extraFlags += " --nominal"; - } - if (getTypeSystem() == TypeSystem::Isorecursive) { + } else if (getTypeSystem() == TypeSystem::Isorecursive) { extraFlags += " --hybrid"; + } else { + WASM_UNREACHABLE("unexpected type system"); } if (test.size() == 0) { |