Skip to content

Commit f4fa95b

Browse files
committed
fixup! fixup! fixup! fixup! [X86] Insert CALLSEQ when lowering GlobalTLSAddress for ELF targets
Replace GetTLSADDR's Chain parameter with DAG.getEntryNode().
1 parent 879591a commit f4fa95b

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18831,16 +18831,17 @@ X86TargetLowering::LowerGlobalAddress(SDValue Op, SelectionDAG &DAG) const {
1883118831
return LowerGlobalOrExternal(Op, DAG, /*ForCall=*/false);
1883218832
}
1883318833

18834-
static SDValue GetTLSADDR(SelectionDAG &DAG, SDValue Chain,
18835-
GlobalAddressSDNode *GA, const EVT PtrVT,
18836-
unsigned ReturnReg, unsigned char OperandFlags,
18834+
static SDValue GetTLSADDR(SelectionDAG &DAG, GlobalAddressSDNode *GA,
18835+
const EVT PtrVT, unsigned ReturnReg,
18836+
unsigned char OperandFlags,
1883718837
bool LoadGlobalBaseReg = false,
1883818838
bool LocalDynamic = false) {
1883918839
MachineFrameInfo &MFI = DAG.getMachineFunction().getFrameInfo();
1884018840
SDVTList NodeTys = DAG.getVTList(MVT::Other, MVT::Glue);
1884118841
SDLoc dl(GA);
1884218842
SDValue TGA;
1884318843
bool UseTLSDESC = DAG.getTarget().useTLSDESC();
18844+
SDValue Chain = DAG.getEntryNode();
1884418845
SDValue Ret;
1884518846
if (LocalDynamic && UseTLSDESC) {
1884618847
TGA = DAG.getTargetExternalSymbol("_TLS_MODULE_BASE_", PtrVT, OperandFlags);
@@ -18908,24 +18909,22 @@ static SDValue GetTLSADDR(SelectionDAG &DAG, SDValue Chain,
1890818909
static SDValue
1890918910
LowerToTLSGeneralDynamicModel32(GlobalAddressSDNode *GA, SelectionDAG &DAG,
1891018911
const EVT PtrVT) {
18911-
return GetTLSADDR(DAG, DAG.getEntryNode(), GA, PtrVT, X86::EAX,
18912-
X86II::MO_TLSGD, /*LoadGlobalBaseReg=*/true);
18912+
return GetTLSADDR(DAG, GA, PtrVT, X86::EAX, X86II::MO_TLSGD,
18913+
/*LoadGlobalBaseReg=*/true);
1891318914
}
1891418915

1891518916
// Lower ISD::GlobalTLSAddress using the "general dynamic" model, 64 bit LP64
1891618917
static SDValue
1891718918
LowerToTLSGeneralDynamicModel64(GlobalAddressSDNode *GA, SelectionDAG &DAG,
1891818919
const EVT PtrVT) {
18919-
return GetTLSADDR(DAG, DAG.getEntryNode(), GA, PtrVT, X86::RAX,
18920-
X86II::MO_TLSGD);
18920+
return GetTLSADDR(DAG, GA, PtrVT, X86::RAX, X86II::MO_TLSGD);
1892118921
}
1892218922

1892318923
// Lower ISD::GlobalTLSAddress using the "general dynamic" model, 64 bit ILP32
1892418924
static SDValue
1892518925
LowerToTLSGeneralDynamicModelX32(GlobalAddressSDNode *GA, SelectionDAG &DAG,
1892618926
const EVT PtrVT) {
18927-
return GetTLSADDR(DAG, DAG.getEntryNode(), GA, PtrVT, X86::EAX,
18928-
X86II::MO_TLSGD);
18927+
return GetTLSADDR(DAG, GA, PtrVT, X86::EAX, X86II::MO_TLSGD);
1892918928
}
1893018929

1893118930
static SDValue LowerToTLSLocalDynamicModel(GlobalAddressSDNode *GA,
@@ -18941,12 +18940,12 @@ static SDValue LowerToTLSLocalDynamicModel(GlobalAddressSDNode *GA,
1894118940
SDValue Base;
1894218941
if (Is64Bit) {
1894318942
unsigned ReturnReg = Is64BitLP64 ? X86::RAX : X86::EAX;
18944-
Base = GetTLSADDR(DAG, DAG.getEntryNode(), GA, PtrVT, ReturnReg,
18945-
X86II::MO_TLSLD, /*LoadGlobalBaseReg=*/false,
18943+
Base = GetTLSADDR(DAG, GA, PtrVT, ReturnReg, X86II::MO_TLSLD,
18944+
/*LoadGlobalBaseReg=*/false,
1894618945
/*LocalDynamic=*/true);
1894718946
} else {
18948-
Base = GetTLSADDR(DAG, DAG.getEntryNode(), GA, PtrVT, X86::EAX,
18949-
X86II::MO_TLSLDM, /*LoadGlobalBaseReg=*/true,
18947+
Base = GetTLSADDR(DAG, GA, PtrVT, X86::EAX, X86II::MO_TLSLDM,
18948+
/*LoadGlobalBaseReg=*/true,
1895018949
/*LocalDynamic=*/true);
1895118950
}
1895218951

0 commit comments

Comments
 (0)