[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