[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