aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2017-01-16 20:58:59 +0100
committerUros Bizjak <uros@gcc.gnu.org>2017-01-16 20:58:59 +0100
commita60c3351032bbaad8c45dbad341437ba47540568 (patch)
treed5c4e1b03b8136a83c203b71f8516c316dee8ace /gcc/config/i386
parent05c6bc14cbb03b9398f65b3a9490d90740d86dcc (diff)
downloadgcc-a60c3351032bbaad8c45dbad341437ba47540568.zip
gcc-a60c3351032bbaad8c45dbad341437ba47540568.tar.gz
gcc-a60c3351032bbaad8c45dbad341437ba47540568.tar.bz2
i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and QImode fixups to general and mask registers only.
* config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and QImode fixups to general and mask registers only. From-SVN: r244504
Diffstat (limited to 'gcc/config/i386')
-rw-r--r--gcc/config/i386/i386.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index a636439..f31f11c 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -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))