diff --git a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTypeUtilities.cpp b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTypeUtilities.cpp index b7b5b2a97c59e..8ea02bd2ad1ff 100644 --- a/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTypeUtilities.cpp +++ b/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTypeUtilities.cpp @@ -18,24 +18,16 @@ using namespace llvm; std::optional 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>{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) {