diff mbox

[i386] : Tighten checks in HARD_REGNO_CALLER_SAVE_MODE

Message ID CAFULd4YD6oqTYJTmKVr3WEPqFvvkGvnwfP12k6LQsT_5s-2PEQ@mail.gmail.com
State New
Headers show

Commit Message

Uros Bizjak Jan. 16, 2017, 8:03 p.m. UTC
Hello!

In addition to mask registers, QImode and HImode fixups in
HARD_REGNO_CALLER_SAVE_MODE apply only to general registers.

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.

Bootstrapped and regression tested on x86_64-linux-gnu.

Committed to mainline SVN.

Uros.
diff mbox

Patch

Index: config/i386/i386.h
===================================================================
--- config/i386/i386.h	(revision 244497)
+++ config/i386/i386.h	(working copy)
@@ -1211,9 +1211,10 @@  extern const char *host_detect_local_cpu (int argc
   (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))