[llvm-commits] [llvm-gcc-4.2] r127187 - /llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h

Bill Wendling isanbard at gmail.com
Mon Mar 7 14:49:03 PST 2011


Author: void
Date: Mon Mar  7 16:49:03 2011
New Revision: 127187

URL: http://llvm.org/viewvc/llvm-project?rev=127187&view=rev
Log:
When we adjust the inline ASM type, we need to take into account an early
clobber with the 'y' constraint. Otherwise, we get the wrong return type and an
assert, because it created a '<1 x i64>' vector type instead of the x86_mmx
type. <rdar://problem/9091220>

Modified:
    llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h

Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=127187&r1=127186&r2=127187&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Mon Mar  7 16:49:03 2011
@@ -45,10 +45,11 @@
 
 /* For parameters to an asm, check the constraint and use X86_mmx if an MMX
    register is called for.  "y" means an MMX register. */
-#define LLVM_ADJUST_MMX_INLINE_PARAMETER_TYPE(Constraint, LLVMTy) \
-  ((TARGET_MMX &&                                                 \
-    StringRef(Constraint).equals(StringRef(std::string("y")))) ?  \
-    Type::getX86_MMXTy(Context) : LLVMTy)
+#define LLVM_ADJUST_MMX_INLINE_PARAMETER_TYPE(Constraint, LLVMTy)       \
+  ((TARGET_MMX &&                                                       \
+    (StringRef(Constraint).equals(StringRef(std::string("y"))) ||       \
+     StringRef(Constraint).equals(StringRef(std::string("&y"))))) ?     \
+   Type::getX86_MMXTy(Context) : LLVMTy)
 
 /* LLVM specific stuff for supporting calling convention output */
 #define TARGET_ADJUST_LLVM_CC(CC, type)                         \





More information about the llvm-commits mailing list