OSDN Git Service

* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Only
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Jul 2013 22:37:30 +0000 (22:37 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Jul 2013 22:37:30 +0000 (22:37 +0000)
adjust register size for TDmode and TFmode for VSX registers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@200855 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 57d735b..aef3cb3 100644 (file)
@@ -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  Eric Botcazou  <ebotcazou@adacore.com>
 
        * Makefile.in (tree-ssa-reassoc.o): Add dependency on $(PARAMS_H).
index 526d839..0c3ce48 100644 (file)
@@ -2402,7 +2402,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]