]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR target/58792
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Oct 2013 12:58:20 +0000 (12:58 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Oct 2013 12:58:20 +0000 (12:58 +0000)
* config/i386/i386.c (ix86_function_value_regno): Add DX_REG,
ST1_REG and XMM1_REG for 32bit and 64bit targets.  Also add DI_REG
and SI_REG for 64bit SYSV ABI targets.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203857 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.c

index 7deefce85e64f293c2459d6106541cfbb872a729..78bc3bd56d7f313162bf1fdb1d50db0773478b70 100644 (file)
@@ -1,3 +1,10 @@
+2013-10-19  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/58792
+       * config/i386/i386.c (ix86_function_value_regno): Add DX_REG,
+       ST1_REG and XMM1_REG for 32bit and 64bit targets.  Also add DI_REG
+       and SI_REG for 64bit SYSV ABI targets.
+
 2013-10-19  Uros Bizjak  <ubizjak@gmail.com>
 
        * mode-switching.c (create_pre_exit): Rename maybe_builtin_apply
index 91e65105a5cb40b7945316a0b67142e5c3bc27e7..54bd5f21d2cb299cdb8d18449d8f8661b8361ab2 100644 (file)
@@ -7393,9 +7393,15 @@ ix86_function_value_regno_p (const unsigned int regno)
   switch (regno)
     {
     case AX_REG:
+    case DX_REG:
       return true;
+    case DI_REG:
+    case SI_REG:
+      return TARGET_64BIT && ix86_abi != MS_ABI;
 
-    case FIRST_FLOAT_REG:
+      /* Complex values are returned in %st(0)/%st(1) pair.  */
+    case ST0_REG:
+    case ST1_REG:
       /* TODO: The function should depend on current function ABI but
        builtins.c would need updating then. Therefore we use the
        default ABI.  */
@@ -7403,10 +7409,12 @@ ix86_function_value_regno_p (const unsigned int regno)
        return false;
       return TARGET_FLOAT_RETURNS_IN_80387;
 
-    case FIRST_SSE_REG:
+      /* Complex values are returned in %xmm0/%xmm1 pair.  */
+    case XMM0_REG:
+    case XMM1_REG:
       return TARGET_SSE;
 
-    case FIRST_MMX_REG:
+    case MM0_REG:
       if (TARGET_MACHO || TARGET_64BIT)
        return false;
       return TARGET_MMX;