diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISD.def b/llvm/lib/Target/WebAssembly/WebAssemblyISD.def --- a/llvm/lib/Target/WebAssembly/WebAssemblyISD.def +++ b/llvm/lib/Target/WebAssembly/WebAssemblyISD.def @@ -21,9 +21,9 @@ HANDLE_NODETYPE(LOCAL_SET) // A wrapper node for TargetExternalSymbol, TargetGlobalAddress, and MCSymbol HANDLE_NODETYPE(Wrapper) -// A special wapper used in PIC code for __memory_base/__table_base relative -// access. -HANDLE_NODETYPE(WrapperPIC) +// A special node for TargetGlobalAddress used in PIC code for +// __memory_base/__table_base relative access. +HANDLE_NODETYPE(WrapperREL) HANDLE_NODETYPE(BR_IF) HANDLE_NODETYPE(BR_TABLE) HANDLE_NODETYPE(SHUFFLE) diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp --- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp @@ -1572,9 +1572,10 @@ SDValue TLSOffset = DAG.getTargetGlobalAddress( GV, DL, PtrVT, GA->getOffset(), WebAssemblyII::MO_TLS_BASE_REL); - SDValue SymAddr = DAG.getNode(WebAssemblyISD::Wrapper, DL, PtrVT, TLSOffset); + SDValue SymOffset = + DAG.getNode(WebAssemblyISD::WrapperREL, DL, PtrVT, TLSOffset); - return DAG.getNode(ISD::ADD, DL, PtrVT, BaseAddr, SymAddr); + return DAG.getNode(ISD::ADD, DL, PtrVT, BaseAddr, SymOffset); } SDValue WebAssemblyTargetLowering::LowerGlobalAddress(SDValue Op, @@ -1607,14 +1608,13 @@ DAG.getTargetExternalSymbol(BaseName, PtrVT)); SDValue SymAddr = DAG.getNode( - WebAssemblyISD::WrapperPIC, DL, VT, + WebAssemblyISD::WrapperREL, DL, VT, DAG.getTargetGlobalAddress(GA->getGlobal(), DL, VT, GA->getOffset(), OperandFlags)); return DAG.getNode(ISD::ADD, DL, VT, BaseAddr, SymAddr); - } else { - OperandFlags = WebAssemblyII::MO_GOT; } + OperandFlags = WebAssemblyII::MO_GOT; } return DAG.getNode(WebAssemblyISD::Wrapper, DL, VT, diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.td --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.td +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.td @@ -100,7 +100,7 @@ [SDNPHasChain, SDNPVariadic]>; def WebAssemblyWrapper : SDNode<"WebAssemblyISD::Wrapper", SDT_WebAssemblyWrapper>; -def WebAssemblyWrapperPIC : SDNode<"WebAssemblyISD::WrapperPIC", +def WebAssemblyWrapperREL : SDNode<"WebAssemblyISD::WrapperREL", SDT_WebAssemblyWrapper>; def WebAssemblyglobal_get : SDNode<"WebAssemblyISD::GLOBAL_GET", SDT_WebAssemblyGlobalGet, @@ -388,14 +388,14 @@ def : Pat<(i64 (WebAssemblyWrapper tglobaladdr:$addr)), (GLOBAL_GET_I64 tglobaladdr:$addr)>, Requires<[IsPIC, HasAddr64]>; -def : Pat<(i32 (WebAssemblyWrapperPIC tglobaladdr:$addr)), +def : Pat<(i32 (WebAssemblyWrapperREL tglobaladdr:$addr)), (CONST_I32 tglobaladdr:$addr)>, Requires<[IsPIC, HasAddr32]>; -def : Pat<(i64 (WebAssemblyWrapperPIC tglobaladdr:$addr)), +def : Pat<(i64 (WebAssemblyWrapperREL tglobaladdr:$addr)), (CONST_I64 tglobaladdr:$addr)>, Requires<[IsPIC, HasAddr64]>; -def : Pat<(i32 (WebAssemblyWrapper tglobaltlsaddr:$addr)), +def : Pat<(i32 (WebAssemblyWrapperREL tglobaltlsaddr:$addr)), (CONST_I32 tglobaltlsaddr:$addr)>, Requires<[HasAddr32]>; -def : Pat<(i64 (WebAssemblyWrapper tglobaltlsaddr:$addr)), +def : Pat<(i64 (WebAssemblyWrapperREL tglobaltlsaddr:$addr)), (CONST_I64 tglobaltlsaddr:$addr)>, Requires<[HasAddr64]>; def : Pat<(i32 (WebAssemblyWrapper texternalsym:$addr)),