[llvm] [WebAssembly] Fix lowering of (extending) loads from addrspace(1) globals (PR #155937)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 2 21:42:28 PDT 2025
================
@@ -1764,16 +1781,119 @@ SDValue WebAssemblyTargetLowering::LowerLoad(SDValue Op,
LoadSDNode *LN = cast<LoadSDNode>(Op.getNode());
const SDValue &Base = LN->getBasePtr();
const SDValue &Offset = LN->getOffset();
+ ISD::LoadExtType ExtType = LN->getExtensionType();
+ EVT ResultType = LN->getValueType(0);
if (IsWebAssemblyGlobal(Base)) {
if (!Offset->isUndef())
report_fatal_error(
"unexpected offset when loading from webassembly global", false);
- SDVTList Tys = DAG.getVTList(LN->getValueType(0), MVT::Other);
- SDValue Ops[] = {LN->getChain(), Base};
- return DAG.getMemIntrinsicNode(WebAssemblyISD::GLOBAL_GET, DL, Tys, Ops,
- LN->getMemoryVT(), LN->getMemOperand());
+ if (!ResultType.isInteger() && !ResultType.isFloatingPoint()) {
----------------
QuantumSegfault wrote:
The [funcref-globalget](https://github.com/llvm/llvm-project/blob/main/llvm/test/CodeGen/WebAssembly/funcref-tableget.ll) and [externref-globalget](https://github.com/llvm/llvm-project/blob/main/llvm/test/CodeGen/WebAssembly/externref-globalget.ll) already take care of the other cases currently supported.
https://github.com/llvm/llvm-project/pull/155937
More information about the llvm-commits
mailing list