[llvm-commits] [llvm] r57704 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/2008-10-17-Asm64bitRConstraint.ll

Chris Lattner sabre at nondot.org
Fri Oct 17 10:59:52 PDT 2008


Author: lattner
Date: Fri Oct 17 12:59:52 2008
New Revision: 57704

URL: http://llvm.org/viewvc/llvm-project?rev=57704&view=rev
Log:
Fix a bug where the x86 backend would reject 64-bit r constraints when
in 32-bit mode instead of assigning a register pair.  This has nothing to
do with PR2356, but I happened to notice it while working on it.

Added:
    llvm/trunk/test/CodeGen/X86/2008-10-17-Asm64bitRConstraint.ll
Modified:
    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=57704&r1=57703&r2=57704&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri Oct 17 12:59:52 2008
@@ -7511,7 +7511,7 @@
     case 'l':   // INDEX_REGS
       if (VT == MVT::i64 && Subtarget->is64Bit())
         return std::make_pair(0U, X86::GR64RegisterClass);
-      if (VT == MVT::i32)
+      if (VT == MVT::i32 || VT == MVT::i64)
         return std::make_pair(0U, X86::GR32RegisterClass);
       else if (VT == MVT::i16)
         return std::make_pair(0U, X86::GR16RegisterClass);

Added: llvm/trunk/test/CodeGen/X86/2008-10-17-Asm64bitRConstraint.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2008-10-17-Asm64bitRConstraint.ll?rev=57704&view=auto

==============================================================================
--- llvm/trunk/test/CodeGen/X86/2008-10-17-Asm64bitRConstraint.ll (added)
+++ llvm/trunk/test/CodeGen/X86/2008-10-17-Asm64bitRConstraint.ll Fri Oct 17 12:59:52 2008
@@ -0,0 +1,9 @@
+; RUN: llvm-as < %s | llc -march=x86
+; RUN: llvm-as < %s | llc -march=x86-64
+
+define void @test(i64 %x) nounwind {
+entry:
+	tail call void asm sideeffect "ASM: $0", "r,~{dirflag},~{fpsr},~{flags}"(i64 %x) nounwind
+	ret void
+}
+





More information about the llvm-commits mailing list