From d644801757bb1e2ad6a7a9715b3e57288c197ada Mon Sep 17 00:00:00 2001 From: NAKAMURA Takumi Date: Mon, 21 Dec 2015 02:37:23 +0000 Subject: [PATCH 1/1] [Cygwin] Enable TLS as emutls. It resolves clang selfhosting with std::once() for Cygwin. FIXME: It may be EmulatedTLS-generic also for X86-Android. FIXME: Pass EmulatedTLS to LLVM CodeGen from Clang with -femulated-tls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256134 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/ReleaseNotes.rst | 8 ++++++++ lib/Target/X86/X86ISelLowering.cpp | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst index 8b33b6bc23b..b3f7c005ed1 100644 --- a/docs/ReleaseNotes.rst +++ b/docs/ReleaseNotes.rst @@ -105,6 +105,14 @@ Changes to the PowerPC Target During this release ... +Changes to the X86 Target +----------------------------- + + During this release ... + +* TLS is enabled for Cygwin as emutls. + + Changes to the OCaml bindings ----------------------------- diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 241d8bb45c8..d2a20a1dde7 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -12258,6 +12258,12 @@ SDValue X86TargetLowering::LowerGlobalTLSAddress(SDValue Op, SelectionDAG &DAG) const { GlobalAddressSDNode *GA = cast(Op); + + // Cygwin uses emutls. + // FIXME: It may be EmulatedTLS-generic also for X86-Android. + if (Subtarget->isTargetWindowsCygwin()) + return LowerToTLSEmulatedModel(GA, DAG); + const GlobalValue *GV = GA->getGlobal(); auto PtrVT = getPointerTy(DAG.getDataLayout()); -- 2.34.1