[7/9] Remove IOR_COMPL_HARD_REG_SET
diff mbox series

Message ID mptzhjd7925.fsf@arm.com
State New
Headers show
Series
  • Make HARD_REG_SETs easier to use
Related show

Commit Message

Richard Sandiford Sept. 9, 2019, 4:01 p.m. UTC
Use "x |= ~y" instead of "IOR_COMPL_HARD_REG_SET (x, y)", or just
"x | ~y" if the result is a temporary.


2019-09-09  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* hard-reg-set.h (IOR_COMPL_HARD_REG_SET): Delete.
	* config/aarch64/cortex-a57-fma-steering.c (rename_single_chain):
	Use "|~" instead of IOR_COMPL_HARD_REG_SET.
	* config/aarch64/falkor-tag-collision-avoidance.c (init_unavailable):
	Likewise.
	* ira-build.c (ira_create_object, ira_set_allocno_class): Likewise.
	* ira.c (setup_reg_renumber): Likewise.
	* lra-assigns.c (find_hard_regno_for_1): Likewise.
	* regrename.c (regrename_find_superclass): Likewise.
	* reload1.c (find_reg): Likewise.

Comments

Jeff Law Sept. 9, 2019, 5:41 p.m. UTC | #1
On 9/9/19 10:01 AM, Richard Sandiford wrote:
> Use "x |= ~y" instead of "IOR_COMPL_HARD_REG_SET (x, y)", or just
> "x | ~y" if the result is a temporary.
> 
> 
> 2019-09-09  Richard Sandiford  <richard.sandiford@arm.com>
> 
> gcc/
> 	* hard-reg-set.h (IOR_COMPL_HARD_REG_SET): Delete.
> 	* config/aarch64/cortex-a57-fma-steering.c (rename_single_chain):
> 	Use "|~" instead of IOR_COMPL_HARD_REG_SET.
> 	* config/aarch64/falkor-tag-collision-avoidance.c (init_unavailable):
> 	Likewise.
> 	* ira-build.c (ira_create_object, ira_set_allocno_class): Likewise.
> 	* ira.c (setup_reg_renumber): Likewise.
> 	* lra-assigns.c (find_hard_regno_for_1): Likewise.
> 	* regrename.c (regrename_find_superclass): Likewise.
> 	* reload1.c (find_reg): Likewise.
OK
jeff

Patch
diff mbox series

Index: gcc/hard-reg-set.h
===================================================================
--- gcc/hard-reg-set.h	2019-09-09 16:10:15.303545844 +0100
+++ gcc/hard-reg-set.h	2019-09-09 16:10:50.379298529 +0100
@@ -127,11 +127,6 @@  #define HARD_CONST(X) ((HARD_REG_ELT_TYP
    These take just one argument.
 
    Also define:
-   IOR_COMPL_HARD_REG_SET
-   This takes two arguments TO and FROM; it reads from FROM
-   and combines its complement bitwise into TO.
-
-   Also define:
 
    hard_reg_set_subset_p (X, Y), which returns true if X is a subset of Y.
    hard_reg_set_equal_p (X, Y), which returns true if X and Y are equal.
@@ -152,8 +147,6 @@  #define TEST_HARD_REG_BIT(SET, BIT)  \
 #define CLEAR_HARD_REG_SET(TO) ((TO) = HARD_CONST (0))
 #define SET_HARD_REG_SET(TO) ((TO) = ~ HARD_CONST (0))
 
-#define IOR_COMPL_HARD_REG_SET(TO, FROM) ((TO) |= ~ (FROM))
-
 static inline bool
 hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
 {
@@ -215,13 +208,6 @@  SET_HARD_REG_SET (HARD_REG_SET &set)
     set.elts[i] = -1;
 }
 
-inline void
-IOR_COMPL_HARD_REG_SET (HARD_REG_SET &to, const_hard_reg_set from)
-{
-  for (unsigned int i = 0; i < ARRAY_SIZE (to.elts); ++i)
-    to.elts[i] |= ~from.elts[i];
-}
-
 static inline bool
 hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
 {
Index: gcc/config/aarch64/cortex-a57-fma-steering.c
===================================================================
--- gcc/config/aarch64/cortex-a57-fma-steering.c	2019-04-08 21:55:28.290369445 +0100
+++ gcc/config/aarch64/cortex-a57-fma-steering.c	2019-09-09 16:10:50.379298529 +0100
@@ -267,7 +267,7 @@  rename_single_chain (du_head_p head, HAR
       if (DEBUG_INSN_P (tmp->insn))
 	continue;
       n_uses++;
-      IOR_COMPL_HARD_REG_SET (*unavailable, reg_class_contents[tmp->cl]);
+      *unavailable |= ~reg_class_contents[tmp->cl];
       super_class = reg_class_superunion[(int) super_class][(int) tmp->cl];
     }
 
Index: gcc/config/aarch64/falkor-tag-collision-avoidance.c
===================================================================
--- gcc/config/aarch64/falkor-tag-collision-avoidance.c	2019-03-08 18:15:38.224734558 +0000
+++ gcc/config/aarch64/falkor-tag-collision-avoidance.c	2019-09-09 16:10:50.379298529 +0100
@@ -229,7 +229,7 @@  init_unavailable (tag_insn_info *insn_in
       if (DEBUG_INSN_P (tmp->insn))
 	continue;
 
-      IOR_COMPL_HARD_REG_SET (*unavailable, reg_class_contents[tmp->cl]);
+      *unavailable |= ~reg_class_contents[tmp->cl];
       super_class = reg_class_superunion[(int) super_class][(int) tmp->cl];
     }
 
Index: gcc/ira-build.c
===================================================================
--- gcc/ira-build.c	2019-09-09 16:08:54.792113779 +0100
+++ gcc/ira-build.c	2019-09-09 16:10:50.379298529 +0100
@@ -458,10 +458,8 @@  ira_create_object (ira_allocno_t a, int
   OBJECT_NUM_CONFLICTS (obj) = 0;
   OBJECT_CONFLICT_HARD_REGS (obj) = ira_no_alloc_regs;
   OBJECT_TOTAL_CONFLICT_HARD_REGS (obj) = ira_no_alloc_regs;
-  IOR_COMPL_HARD_REG_SET (OBJECT_CONFLICT_HARD_REGS (obj),
-			  reg_class_contents[aclass]);
-  IOR_COMPL_HARD_REG_SET (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj),
-			  reg_class_contents[aclass]);
+  OBJECT_CONFLICT_HARD_REGS (obj) |= ~reg_class_contents[aclass];
+  OBJECT_TOTAL_CONFLICT_HARD_REGS (obj) |= ~reg_class_contents[aclass];
   OBJECT_MIN (obj) = INT_MAX;
   OBJECT_MAX (obj) = -1;
   OBJECT_LIVE_RANGES (obj) = NULL;
@@ -549,10 +547,8 @@  ira_set_allocno_class (ira_allocno_t a,
   ALLOCNO_CLASS (a) = aclass;
   FOR_EACH_ALLOCNO_OBJECT (a, obj, oi)
     {
-      IOR_COMPL_HARD_REG_SET (OBJECT_CONFLICT_HARD_REGS (obj),
-			      reg_class_contents[aclass]);
-      IOR_COMPL_HARD_REG_SET (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj),
-			      reg_class_contents[aclass]);
+      OBJECT_CONFLICT_HARD_REGS (obj) |= ~reg_class_contents[aclass];
+      OBJECT_TOTAL_CONFLICT_HARD_REGS (obj) |= ~reg_class_contents[aclass];
     }
 }
 
Index: gcc/ira.c
===================================================================
--- gcc/ira.c	2019-09-09 16:10:15.307545816 +0100
+++ gcc/ira.c	2019-09-09 16:10:50.379298529 +0100
@@ -2370,8 +2370,8 @@  setup_reg_renumber (void)
 	  for (i = 0; i < nwords; i++)
 	    {
 	      obj = ALLOCNO_OBJECT (a, i);
-	      IOR_COMPL_HARD_REG_SET (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj),
-				      reg_class_contents[pclass]);
+	      OBJECT_TOTAL_CONFLICT_HARD_REGS (obj)
+		|= ~reg_class_contents[pclass];
 	    }
 	  if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0
 	      && ira_hard_reg_set_intersection_p (hard_regno, ALLOCNO_MODE (a),
Index: gcc/lra-assigns.c
===================================================================
--- gcc/lra-assigns.c	2019-09-09 16:10:15.307545816 +0100
+++ gcc/lra-assigns.c	2019-09-09 16:10:50.379298529 +0100
@@ -611,7 +611,7 @@  find_hard_regno_for_1 (int regno, int *c
       }
   /* Make sure that all registers in a multi-word pseudo belong to the
      required class.  */
-  IOR_COMPL_HARD_REG_SET (conflict_set, reg_class_contents[rclass]);
+  conflict_set |= ~reg_class_contents[rclass];
   lra_assert (rclass != NO_REGS);
   rclass_size = ira_class_hard_regs_num[rclass];
   best_hard_regno = -1;
Index: gcc/regrename.c
===================================================================
--- gcc/regrename.c	2019-09-09 16:08:54.796113751 +0100
+++ gcc/regrename.c	2019-09-09 16:10:50.379298529 +0100
@@ -441,8 +441,7 @@  regrename_find_superclass (du_head_p hea
       if (DEBUG_INSN_P (tmp->insn))
 	continue;
       n_uses++;
-      IOR_COMPL_HARD_REG_SET (*punavailable,
-			      reg_class_contents[tmp->cl]);
+      *punavailable |= ~reg_class_contents[tmp->cl];
       super_class
 	= reg_class_superunion[(int) super_class][(int) tmp->cl];
     }
Index: gcc/reload1.c
===================================================================
--- gcc/reload1.c	2019-09-09 16:10:15.307545816 +0100
+++ gcc/reload1.c	2019-09-09 16:10:50.383298501 +0100
@@ -1823,8 +1823,9 @@  find_reg (class insn_chain *chain, int o
   static int regno_pseudo_regs[FIRST_PSEUDO_REGISTER];
   static int best_regno_pseudo_regs[FIRST_PSEUDO_REGISTER];
 
-  not_usable = bad_spill_regs | bad_spill_regs_global;
-  IOR_COMPL_HARD_REG_SET (not_usable, reg_class_contents[rl->rclass]);
+  not_usable = (bad_spill_regs
+		| bad_spill_regs_global
+		| ~reg_class_contents[rl->rclass]);
 
   CLEAR_HARD_REG_SET (used_by_other_reload);
   for (k = 0; k < order; k++)