aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-07-09 23:35:46 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2013-07-09 23:35:46 +0100
commitef43e8689888e0e0b56f8fd2f97b5a9e5ee7e6b8 (patch)
treebb0b3cbc44cd1ffe3e3b116d993720028396407b
parentd966b2749cc7addb143788e51b2e3e6ad43fb203 (diff)
downloadgcc-ef43e8689888e0e0b56f8fd2f97b5a9e5ee7e6b8.zip
gcc-ef43e8689888e0e0b56f8fd2f97b5a9e5ee7e6b8.tar.gz
gcc-ef43e8689888e0e0b56f8fd2f97b5a9e5ee7e6b8.tar.bz2
rs6000.c (rs6000_init_hard_regno_mode_ok): Only adjust register size for TDmode and TFmode for VSX registers.
* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Only adjust register size for TDmode and TFmode for VSX registers. From-SVN: r200853
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b7f2124..aeb7ccd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-09 Joseph Myers <joseph@codesourcery.com>
+
+ * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Only
+ adjust register size for TDmode and TFmode for VSX registers.
+
2013-07-08 Kai Tietz <ktietz@redhat.com>
PR target/56892
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 2331c50..aabef7f 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -2518,7 +2518,8 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
int reg_size2 = reg_size;
/* TFmode/TDmode always takes 2 registers, even in VSX. */
- if (m == TDmode || m == TFmode)
+ if (TARGET_VSX && VSX_REG_CLASS_P (c)
+ && (m == TDmode || m == TFmode))
reg_size2 = UNITS_PER_FP_WORD;
rs6000_class_max_nregs[m][c]