[llvm-commits] [llvm] r158158 - in /llvm/trunk: lib/Target/X86/X86MCInstLower.cpp test/CodeGen/X86/tls-pic.ll

Rafael Espindola rafael.espindola at gmail.com
Thu Jun 7 11:39:19 PDT 2012


Author: rafael
Date: Thu Jun  7 13:39:19 2012
New Revision: 158158

URL: http://llvm.org/viewvc/llvm-project?rev=158158&view=rev
Log:
Use a base register instead of an index register with the local dynamic model.
Fixes pr13048.

Modified:
    llvm/trunk/lib/Target/X86/X86MCInstLower.cpp
    llvm/trunk/test/CodeGen/X86/tls-pic.ll

Modified: llvm/trunk/lib/Target/X86/X86MCInstLower.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86MCInstLower.cpp?rev=158158&r1=158157&r2=158158&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86MCInstLower.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86MCInstLower.cpp Thu Jun  7 13:39:19 2012
@@ -596,6 +596,14 @@
     LEA.addOperand(MCOperand::CreateReg(0));        // index
     LEA.addOperand(MCOperand::CreateExpr(symRef));  // disp
     LEA.addOperand(MCOperand::CreateReg(0));        // seg
+  } else if (SRVK == MCSymbolRefExpr::VK_TLSLDM) {
+    LEA.setOpcode(X86::LEA32r);
+    LEA.addOperand(MCOperand::CreateReg(X86::EAX)); // dest
+    LEA.addOperand(MCOperand::CreateReg(X86::EBX)); // base
+    LEA.addOperand(MCOperand::CreateImm(1));        // scale
+    LEA.addOperand(MCOperand::CreateReg(0));        // index
+    LEA.addOperand(MCOperand::CreateExpr(symRef));  // disp
+    LEA.addOperand(MCOperand::CreateReg(0));        // seg
   } else {
     LEA.setOpcode(X86::LEA32r);
     LEA.addOperand(MCOperand::CreateReg(X86::EAX)); // dest

Modified: llvm/trunk/test/CodeGen/X86/tls-pic.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls-pic.ll?rev=158158&r1=158157&r2=158158&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls-pic.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls-pic.ll Thu Jun  7 13:39:19 2012
@@ -75,7 +75,7 @@
 }
 
 ; X32:    f5:
-; X32:      leal {{[jk]}}@TLSLDM
+; X32:      leal {{[jk]}}@TLSLDM(%ebx)
 ; X32-NEXT: calll ___tls_get_addr at PLT
 ; X32-NEXT: movl {{[jk]}}@DTPOFF(%eax)
 ; X32-NEXT: addl {{[jk]}}@DTPOFF(%eax)





More information about the llvm-commits mailing list