OSDN Git Service

TLS_addr64 and TLS_addr32 define RDI and EAX. They don't use them.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 21 Apr 2009 08:22:09 +0000 (08:22 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 21 Apr 2009 08:22:09 +0000 (08:22 +0000)
This fixes PR4002.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69672 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86Instr64bit.td
lib/Target/X86/X86InstrInfo.td

index 69c74b2..e84d136 100644 (file)
@@ -1303,7 +1303,7 @@ def MOV64ri64i32 : Ii32<0xB8, AddRegFrm, (outs GR64:$dst), (ins i64i32imm:$src),
 // Thread Local Storage Instructions
 //===----------------------------------------------------------------------===//
 
-let hasSideEffects = 1, Uses = [RDI] in
+let hasSideEffects = 1, Defs = [RDI] in
 def TLS_addr64 : I<0, Pseudo, (outs), (ins i64imm:$sym),
               ".byte\t0x66; leaq\t${sym:mem}(%rip), %rdi; .word\t0x6666; rex64",
                   [(X86tlsaddr tglobaltlsaddr:$sym)]>,
index 7cf1ad3..462433b 100644 (file)
@@ -2977,7 +2977,7 @@ def MOV32r0  : I<0x31, MRMInitReg,  (outs GR32:$dst), (ins),
 // Thread Local Storage Instructions
 //
 
-let hasSideEffects = 1, Uses = [EAX, EBX] in
+let hasSideEffects = 1, Uses = [EBX], Defs = [EAX] in
 def TLS_addr32 : I<0, Pseudo, (outs), (ins i32imm:$sym),
                   "leal\t${sym:mem}(,%ebx,1), %eax",
                   [(X86tlsaddr tglobaltlsaddr:$sym)]>,