i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and QImode fixups to general and...
authorUros Bizjak <ubizjak@gmail.com>
Mon, 16 Jan 2017 19:58:59 +0000 (20:58 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 16 Jan 2017 19:58:59 +0000 (20:58 +0100)
* config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and
QImode fixups to general and mask registers only.

From-SVN: r244504

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

index 5a318f9dc37deface255116538e485d6a54a1b34..d3cbda6afe88b51bbcd8d991db3afa31c77d74f4 100644 (file)
@@ -1,3 +1,8 @@
+2017-01-16  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and
+       QImode fixups to general and mask registers only.
+
 2017-01-16  Carl Love  <cel@us.ibm.com>
 
        * config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support
index a636439ecefd673ebdfb150da5ee60adf70c4e8c..f31f11c38f2b8ca08e367e95fdee18252e703450 100644 (file)
@@ -1211,9 +1211,10 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
   (CC_REGNO_P (REGNO) ? VOIDmode                                       \
    : (MODE) == VOIDmode && (NREGS) != 1 ? VOIDmode                     \
    : (MODE) == VOIDmode ? choose_hard_reg_mode ((REGNO), (NREGS), false) \
-   : (MODE) == HImode && !(TARGET_PARTIAL_REG_STALL                    \
+   : (MODE) == HImode && !((GENERAL_REGNO_P (REGNO)                    \
+                           && TARGET_PARTIAL_REG_STALL)                \
                           || MASK_REGNO_P (REGNO)) ? SImode            \
-   : (MODE) == QImode && !(TARGET_64BIT || QI_REGNO_P (REGNO)          \
+   : (MODE) == QImode && !(ANY_QI_REGNO_P (REGNO)                      \
                           || MASK_REGNO_P (REGNO)) ? SImode            \
    : (MODE))