]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
hard-reg-set.h (call_fixed_regs): Remove.
authorAnatoly Sokolov <aesok@post.ru>
Wed, 2 Sep 2009 22:20:52 +0000 (02:20 +0400)
committerAnatoly Sokolov <aesok@gcc.gnu.org>
Wed, 2 Sep 2009 22:20:52 +0000 (02:20 +0400)
* hard-reg-set.h (call_fixed_regs): Remove.
* reginfo.c (call_fixed_regs): Remove.
(init_reg_sets_1): Remove initialization of call_fixed_regs.
(globalize_reg): Don't use call_fixed_regs.
* caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
call_fixed_regs.

From-SVN: r151353

gcc/ChangeLog
gcc/caller-save.c
gcc/hard-reg-set.h
gcc/reginfo.c

index fce97535542ad62f03bdebbc687e7fea306b5aab..93c6092a2ef0af283290fbae2f7e14cd299a7261 100644 (file)
@@ -1,3 +1,12 @@
+2009-09-02  Anatoly Sokolov  <aesok@post.ru>
+
+       * hard-reg-set.h (call_fixed_regs): Remove.
+       * reginfo.c (call_fixed_regs): Remove.
+       (init_reg_sets_1): Remove initialization of call_fixed_regs.
+       (globalize_reg): Don't use call_fixed_regs.
+       * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
+       call_fixed_regs.
+
 2009-09-01  Michael Matz  <matz@suse.de>
 
        * expr.h (emit_storent_insn, expand_expr_real_1,
index 778a3edeec40c1c4f1510cef938341315e4de469..377ffad5e55d70e01b82dedcc71d5fb3cbaf1d3d 100644 (file)
@@ -215,7 +215,8 @@ init_caller_save (void)
 
   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
     {
-      if (call_used_regs[i] && ! call_fixed_regs[i])
+      if (call_used_regs[i]
+          && !TEST_HARD_REG_BIT (call_fixed_reg_set, i))
        {
          for (j = 1; j <= MOVE_MAX_WORDS; j++)
            {
@@ -223,7 +224,6 @@ init_caller_save (void)
                                                                   VOIDmode);
              if (regno_save_mode[i][j] == VOIDmode && j == 1)
                {
-                 call_fixed_regs[i] = 1;
                  SET_HARD_REG_BIT (call_fixed_reg_set, i);
                }
            }
@@ -291,7 +291,6 @@ init_caller_save (void)
          regno_save_mode[i][j] = VOIDmode;
          if (j == 1)
            {
-             call_fixed_regs[i] = 1;
              SET_HARD_REG_BIT (call_fixed_reg_set, i);
              if (call_used_regs[i])
                SET_HARD_REG_BIT (no_caller_save_reg_set, i);
index 2ee713d204c6e139c843cab2925f0effb93e5d55..1f2c1aea9119b55e333407c3d370e5f58405d32b 100644 (file)
@@ -600,16 +600,11 @@ extern char call_really_used_regs[];
 /* The same info as a HARD_REG_SET.  */
 
 extern HARD_REG_SET call_used_reg_set;
-  
-/* Indexed by hard register number, contains 1 for registers that are
-   fixed use -- i.e. in fixed_regs -- or a function value return register
-   or TARGET_STRUCT_VALUE_RTX or STATIC_CHAIN_REGNUM.  These are the
-   registers that cannot hold quantities across calls even if we are
-   willing to save and restore them.  */
-
-extern char call_fixed_regs[FIRST_PSEUDO_REGISTER];
 
-/* The same info as a HARD_REG_SET.  */
+/* Contains registers that are fixed use -- i.e. in fixed_reg_set -- or
+   a function value return register or TARGET_STRUCT_VALUE_RTX or
+   STATIC_CHAIN_REGNUM.  These are the registers that cannot hold quantities
+   across calls even if we are willing to save and restore them.  */
 
 extern HARD_REG_SET call_fixed_reg_set;
 
index 9842dc14f77e2915c8fdd05b335cd03bc9cce12d..9b03d64f5904cc9b59d244e0544eae928033355b 100644 (file)
@@ -101,13 +101,11 @@ char call_really_used_regs[] = CALL_REALLY_USED_REGISTERS;
 #endif
 
 
-/* Indexed by hard register number, contains 1 for registers that are
-   fixed use or call used registers that cannot hold quantities across
-   calls even if we are willing to save and restore them.  call fixed
-   registers are a subset of call used registers.  */
-char call_fixed_regs[FIRST_PSEUDO_REGISTER];
+/* Contains registers that are fixed use -- i.e. in fixed_reg_set -- or
+   a function value return register or TARGET_STRUCT_VALUE_RTX or
+   STATIC_CHAIN_REGNUM.  These are the registers that cannot hold quantities
+   across calls even if we are willing to save and restore them.  */
 
-/* The same info as a HARD_REG_SET.  */
 HARD_REG_SET call_fixed_reg_set;
 
 /* Indexed by hard register number, contains 1 for registers
@@ -515,8 +513,6 @@ init_reg_sets_1 (void)
   else
     CLEAR_REG_SET (regs_invalidated_by_call_regset);
 
-  memcpy (call_fixed_regs, fixed_regs, sizeof call_fixed_regs);
-
   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
     {
       /* call_used_regs must include fixed_regs.  */
@@ -531,8 +527,6 @@ init_reg_sets_1 (void)
 
       if (call_used_regs[i])
        SET_HARD_REG_BIT (call_used_reg_set, i);
-      if (call_fixed_regs[i])
-       SET_HARD_REG_BIT (call_fixed_reg_set, i);
 
       /* There are a couple of fixed registers that we know are safe to
         exclude from being clobbered by calls:
@@ -571,12 +565,14 @@ init_reg_sets_1 (void)
         }
     }
 
+  COPY_HARD_REG_SET(call_fixed_reg_set, fixed_reg_set);
+
   /* Preserve global registers if called more than once.  */
   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
     {
       if (global_regs[i])
        {
-         fixed_regs[i] = call_used_regs[i] = call_fixed_regs[i] = 1;
+         fixed_regs[i] = call_used_regs[i] = 1;
          SET_HARD_REG_BIT (fixed_reg_set, i);
          SET_HARD_REG_BIT (call_used_reg_set, i);
          SET_HARD_REG_BIT (call_fixed_reg_set, i);
@@ -870,7 +866,7 @@ globalize_reg (int i)
   if (fixed_regs[i])
     return;
 
-  fixed_regs[i] = call_used_regs[i] = call_fixed_regs[i] = 1;
+  fixed_regs[i] = call_used_regs[i] = 1;
 #ifdef CALL_REALLY_USED_REGISTERS
   call_really_used_regs[i] = 1;
 #endif