OSDN Git Service

2010-04-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Apr 2010 16:30:32 +0000 (16:30 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:32:48 +0000 (14:32 +0900)
* config/s390/s390.c (s390_call_save_register_used): Switch back
to HARD_REGNO_NREGS.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158384 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/s390/s390.c

index e5e2080..d2d0f41 100644 (file)
@@ -1,3 +1,8 @@
+2010-04-15  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * config/s390/s390.c (s390_call_save_register_used): Switch back
+       to HARD_REGNO_NREGS.
+
 2010-04-15  Richard Guenther  <rguenther@suse.de>
 
        * alias.c (alias_set_subset_of): Handle alias-set zero
index 11939ef..a3783f0 100644 (file)
@@ -9452,17 +9452,9 @@ s390_call_saved_register_used (tree call_expr)
 
        if (REG_P (parm_rtx))
         {
-          int n_regs;
-
-          /* Only integer registers (r6) are call saved and used for
-             parameter passing.  */
-          if (REGNO_REG_CLASS (REGNO (parm_rtx)) == FP_REGS)
-            continue;
-
-          n_regs = ((GET_MODE_SIZE (GET_MODE (parm_rtx)) + UNITS_PER_LONG - 1)
-                    / UNITS_PER_LONG);
-
-          for (reg = 0; reg < n_regs; reg++)
+          for (reg = 0;
+               reg < HARD_REGNO_NREGS (REGNO (parm_rtx), GET_MODE (parm_rtx));
+               reg++)
             if (!call_used_regs[reg + REGNO (parm_rtx)])
               return true;
         }
@@ -9470,22 +9462,16 @@ s390_call_saved_register_used (tree call_expr)
        if (GET_CODE (parm_rtx) == PARALLEL)
         {
           int i;
+
           for (i = 0; i < XVECLEN (parm_rtx, 0); i++)
             {
               rtx r = XEXP (XVECEXP (parm_rtx, 0, i), 0);
-              int n_regs;
 
               gcc_assert (REG_P (r));
 
-              /* Only integer registers (r6) are call saved and used
-                 for parameter passing.  */
-              if (REGNO_REG_CLASS (REGNO (r)) == FP_REGS)
-                continue;
-
-              n_regs = ((GET_MODE_SIZE (GET_MODE (r)) + UNITS_PER_LONG - 1)
-                        / UNITS_PER_LONG);
-
-              for (reg = 0; reg < n_regs; reg++)
+              for (reg = 0;
+                   reg < HARD_REGNO_NREGS (REGNO (r), GET_MODE (r));
+                   reg++)
                 if (!call_used_regs[reg + REGNO (r)])
                   return true;
             }