]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): New.
authorRichard Henderson <rth@redhat.com>
Wed, 11 Aug 2010 18:40:45 +0000 (11:40 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 11 Aug 2010 18:40:45 +0000 (11:40 -0700)
From-SVN: r163103

gcc/ChangeLog
gcc/config/i386/i386.h

index 92e6b580859c75f5847952d68150e8597e9d580a..f9ce2f45701af958be4dc210a8337cffc26af966 100644 (file)
@@ -1,3 +1,7 @@
+2010-08-11  Richard Henderson  <rth@redhat.com>
+
+       * config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): New.
+
 2010-08-11  Nick Clifton  <nickc@redhat.com>
 
        * config/stormy16/stormy16-lib2.c (__cmpsi2): New function.
index a2acc7131f7ee219de6ae1a19e0c64c7ea0e13e1..7fd874b93f8b9cd4e2206a9ce447d30af2ac9e4c 100644 (file)
@@ -1104,6 +1104,12 @@ enum target_cpu_default
    : (MODE) == QImode && (REGNO) > BX_REG && !TARGET_64BIT ? SImode    \
    : (MODE))
 
+/* The only ABI that saves SSE registers across calls is Win64 (thus no
+   need to check the current ABI here), and with AVX enabled Win64 only
+   guarantees that the low 16 bytes are saved.  */
+#define HARD_REGNO_CALL_PART_CLOBBERED(REGNO, MODE)             \
+  (SSE_REGNO_P (REGNO) && GET_MODE_SIZE (MODE) > 16)
+
 /* Specify the registers used for certain standard purposes.
    The values of these macros are register numbers.  */