[llvm] r316200 - [ExecutionEngine] After a heroic dev-meeting hack session, the JIT supports TLS.

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 19 17:53:16 PDT 2017


Author: lhames
Date: Thu Oct 19 17:53:16 2017
New Revision: 316200

URL: http://llvm.org/viewvc/llvm-project?rev=316200&view=rev
Log:
[ExecutionEngine] After a heroic dev-meeting hack session, the JIT supports TLS.

Turns on EmulatedTLS support by default in EngineBuilder. ;)

Added:
    llvm/trunk/test/ExecutionEngine/MCJIT/tlvtest.ll
    llvm/trunk/test/ExecutionEngine/OrcMCJIT/tlvtest.ll
Modified:
    llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h
    llvm/trunk/lib/ExecutionEngine/TargetSelect.cpp

Modified: llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h?rev=316200&r1=316199&r2=316200&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h (original)
+++ llvm/trunk/include/llvm/ExecutionEngine/ExecutionEngine.h Thu Oct 19 17:53:16 2017
@@ -541,6 +541,7 @@ private:
   SmallVector<std::string, 4> MAttrs;
   bool VerifyModules;
   bool UseOrcMCJITReplacement;
+  bool EmulatedTLS = true;
 
 public:
   /// Default constructor for EngineBuilder.
@@ -641,6 +642,10 @@ public:
     this->UseOrcMCJITReplacement = UseOrcMCJITReplacement;
   }
 
+  void setEmulatedTLS(bool EmulatedTLS) {
+    this->EmulatedTLS = EmulatedTLS;
+  }
+  
   TargetMachine *selectTarget();
 
   /// selectTarget - Pick a target either via -march or by guessing the native

Modified: llvm/trunk/lib/ExecutionEngine/TargetSelect.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/TargetSelect.cpp?rev=316200&r1=316199&r2=316200&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/TargetSelect.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/TargetSelect.cpp Thu Oct 19 17:53:16 2017
@@ -95,7 +95,8 @@ TargetMachine *EngineBuilder::selectTarg
   TargetMachine *Target =
       TheTarget->createTargetMachine(TheTriple.getTriple(), MCPU, FeaturesStr,
                                      Options, RelocModel, CMModel, OptLevel,
-                                     /*JIT*/ true);
+				     /*JIT*/ true);
+  Target->Options.EmulatedTLS = EmulatedTLS;
   assert(Target && "Could not allocate target machine!");
   return Target;
 }

Added: llvm/trunk/test/ExecutionEngine/MCJIT/tlvtest.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ExecutionEngine/MCJIT/tlvtest.ll?rev=316200&view=auto
==============================================================================
--- llvm/trunk/test/ExecutionEngine/MCJIT/tlvtest.ll (added)
+++ llvm/trunk/test/ExecutionEngine/MCJIT/tlvtest.ll Thu Oct 19 17:53:16 2017
@@ -0,0 +1,10 @@
+; RUN: %lli %s > /dev/null
+
+ at x = thread_local local_unnamed_addr global i32 0
+
+define i32 @main() {
+entry:
+  store i32 42, i32* @x
+  ret i32 0
+}
+

Added: llvm/trunk/test/ExecutionEngine/OrcMCJIT/tlvtest.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ExecutionEngine/OrcMCJIT/tlvtest.ll?rev=316200&view=auto
==============================================================================
--- llvm/trunk/test/ExecutionEngine/OrcMCJIT/tlvtest.ll (added)
+++ llvm/trunk/test/ExecutionEngine/OrcMCJIT/tlvtest.ll Thu Oct 19 17:53:16 2017
@@ -0,0 +1,10 @@
+; RUN: %lli %s > /dev/null
+
+ at x = thread_local local_unnamed_addr global i32 0
+
+define i32 @main() {
+entry:
+  store i32 42, i32* @x
+  ret i32 0
+}
+




More information about the llvm-commits mailing list