Skip to content

Commit

Permalink
[NFC][WASM] refactor WebAssembly::parseType with StringSwitch (#9…
Browse files Browse the repository at this point in the history
  • Loading branch information
HerrCai0907 committed Apr 26, 2024
1 parent 1e1ec91 commit e21d89e
Showing 1 changed file with 10 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,16 @@
using namespace llvm;

std::optional<wasm::ValType> WebAssembly::parseType(StringRef Type) {
// FIXME: can't use StringSwitch because wasm::ValType doesn't have a
// "invalid" value.
if (Type == "i32")
return wasm::ValType::I32;
if (Type == "i64")
return wasm::ValType::I64;
if (Type == "f32")
return wasm::ValType::F32;
if (Type == "f64")
return wasm::ValType::F64;
if (Type == "v128" || Type == "i8x16" || Type == "i16x8" || Type == "i32x4" ||
Type == "i64x2" || Type == "f32x4" || Type == "f64x2")
return wasm::ValType::V128;
if (Type == "funcref")
return wasm::ValType::FUNCREF;
if (Type == "externref")
return wasm::ValType::EXTERNREF;
return std::nullopt;
return llvm::StringSwitch<std::optional<wasm::ValType>>{Type}
.Case("i32", wasm::ValType::I32)
.Case("i64", wasm::ValType::I64)
.Case("f32", wasm::ValType::F32)
.Case("f64", wasm::ValType::F64)
.Cases("v128", "i8x16", "i16x8", "i32x4", "i64x2", "f32x4", "f64x2",
wasm::ValType::V128)
.Case("funcref", wasm::ValType::FUNCREF)
.Case("externref", wasm::ValType::EXTERNREF)
.Default(std::nullopt);
}

WebAssembly::BlockType WebAssembly::parseBlockType(StringRef Type) {
Expand Down

0 comments on commit e21d89e

Please sign in to comment.