[WebAssembly][NFC] Refactor table handling in WebAssembly::wasmSymbolSetType

Use the isExternRefType and isFuncRefType helpers rather than
reimplementing that logic in this function (which acts as a blocker to
work to prototype alternative IR-level representations of reference
types).
This commit is contained in:
Alex Bradbury 2022-07-06 04:54:13 +01:00
parent cf74b7ec80
commit 8ccc7e0aa4
1 changed files with 7 additions and 12 deletions

View File

@ -179,19 +179,14 @@ void WebAssembly::wasmSymbolSetType(MCSymbolWasm *Sym, const Type *GlobalVT,
bool IsTable = false;
if (GlobalVT->isArrayTy() &&
WebAssembly::isRefType(GlobalVT->getArrayElementType())) {
MVT VT;
IsTable = true;
switch (GlobalVT->getArrayElementType()->getPointerAddressSpace()) {
case WebAssembly::WasmAddressSpace::WASM_ADDRESS_SPACE_FUNCREF:
VT = MVT::funcref;
break;
case WebAssembly::WasmAddressSpace::WASM_ADDRESS_SPACE_EXTERNREF:
VT = MVT::externref;
break;
default:
report_fatal_error("unhandled address space type");
}
Type = WebAssembly::toValType(VT);
const Type *ElTy = GlobalVT->getArrayElementType();
if (WebAssembly::isExternRefType(ElTy))
Type = wasm::ValType::EXTERNREF;
else if (WebAssembly::isFuncRefType(ElTy))
Type = wasm::ValType::FUNCREF;
else
report_fatal_error("unhandled reference type");
} else if (VTs.size() == 1) {
Type = WebAssembly::toValType(VTs[0]);
} else