Commit 4897c5aa by Richard Sandiford Committed by Richard Sandiford

Remove IOR_COMPL_HARD_REG_SET

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.

From-SVN: r275533
parent d15e5131
2019-09-09 Richard Sandiford <richard.sandiford@arm.com> 2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
* 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.
2019-09-09 Richard Sandiford <richard.sandiford@arm.com>
* hard-reg-set.h (AND_COMPL_HARD_REG_SET): Delete. * hard-reg-set.h (AND_COMPL_HARD_REG_SET): Delete.
* caller-save.c (setup_save_areas): Use "&~" instead of * caller-save.c (setup_save_areas): Use "&~" instead of
AND_COMPL_HARD_REG_SET. AND_COMPL_HARD_REG_SET.
......
...@@ -267,7 +267,7 @@ rename_single_chain (du_head_p head, HARD_REG_SET *unavailable) ...@@ -267,7 +267,7 @@ rename_single_chain (du_head_p head, HARD_REG_SET *unavailable)
if (DEBUG_INSN_P (tmp->insn)) if (DEBUG_INSN_P (tmp->insn))
continue; continue;
n_uses++; 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]; super_class = reg_class_superunion[(int) super_class][(int) tmp->cl];
} }
......
...@@ -229,7 +229,7 @@ init_unavailable (tag_insn_info *insn_info, tag_map_t &tag_map, du_head_p head, ...@@ -229,7 +229,7 @@ init_unavailable (tag_insn_info *insn_info, tag_map_t &tag_map, du_head_p head,
if (DEBUG_INSN_P (tmp->insn)) if (DEBUG_INSN_P (tmp->insn))
continue; 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]; super_class = reg_class_superunion[(int) super_class][(int) tmp->cl];
} }
......
...@@ -127,11 +127,6 @@ struct hard_reg_set_container ...@@ -127,11 +127,6 @@ struct hard_reg_set_container
These take just one argument. These take just one argument.
Also define: 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_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. hard_reg_set_equal_p (X, Y), which returns true if X and Y are equal.
...@@ -152,8 +147,6 @@ struct hard_reg_set_container ...@@ -152,8 +147,6 @@ struct hard_reg_set_container
#define CLEAR_HARD_REG_SET(TO) ((TO) = HARD_CONST (0)) #define CLEAR_HARD_REG_SET(TO) ((TO) = HARD_CONST (0))
#define SET_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 static inline bool
hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y) 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) ...@@ -215,13 +208,6 @@ SET_HARD_REG_SET (HARD_REG_SET &set)
set.elts[i] = -1; 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 static inline bool
hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y) hard_reg_set_subset_p (const_hard_reg_set x, const_hard_reg_set y)
{ {
......
...@@ -458,10 +458,8 @@ ira_create_object (ira_allocno_t a, int subword) ...@@ -458,10 +458,8 @@ ira_create_object (ira_allocno_t a, int subword)
OBJECT_NUM_CONFLICTS (obj) = 0; OBJECT_NUM_CONFLICTS (obj) = 0;
OBJECT_CONFLICT_HARD_REGS (obj) = ira_no_alloc_regs; OBJECT_CONFLICT_HARD_REGS (obj) = ira_no_alloc_regs;
OBJECT_TOTAL_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), OBJECT_CONFLICT_HARD_REGS (obj) |= ~reg_class_contents[aclass];
reg_class_contents[aclass]); OBJECT_TOTAL_CONFLICT_HARD_REGS (obj) |= ~reg_class_contents[aclass];
IOR_COMPL_HARD_REG_SET (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj),
reg_class_contents[aclass]);
OBJECT_MIN (obj) = INT_MAX; OBJECT_MIN (obj) = INT_MAX;
OBJECT_MAX (obj) = -1; OBJECT_MAX (obj) = -1;
OBJECT_LIVE_RANGES (obj) = NULL; OBJECT_LIVE_RANGES (obj) = NULL;
...@@ -549,10 +547,8 @@ ira_set_allocno_class (ira_allocno_t a, enum reg_class aclass) ...@@ -549,10 +547,8 @@ ira_set_allocno_class (ira_allocno_t a, enum reg_class aclass)
ALLOCNO_CLASS (a) = aclass; ALLOCNO_CLASS (a) = aclass;
FOR_EACH_ALLOCNO_OBJECT (a, obj, oi) FOR_EACH_ALLOCNO_OBJECT (a, obj, oi)
{ {
IOR_COMPL_HARD_REG_SET (OBJECT_CONFLICT_HARD_REGS (obj), OBJECT_CONFLICT_HARD_REGS (obj) |= ~reg_class_contents[aclass];
reg_class_contents[aclass]); OBJECT_TOTAL_CONFLICT_HARD_REGS (obj) |= ~reg_class_contents[aclass];
IOR_COMPL_HARD_REG_SET (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj),
reg_class_contents[aclass]);
} }
} }
......
...@@ -2370,8 +2370,8 @@ setup_reg_renumber (void) ...@@ -2370,8 +2370,8 @@ setup_reg_renumber (void)
for (i = 0; i < nwords; i++) for (i = 0; i < nwords; i++)
{ {
obj = ALLOCNO_OBJECT (a, i); obj = ALLOCNO_OBJECT (a, i);
IOR_COMPL_HARD_REG_SET (OBJECT_TOTAL_CONFLICT_HARD_REGS (obj), OBJECT_TOTAL_CONFLICT_HARD_REGS (obj)
reg_class_contents[pclass]); |= ~reg_class_contents[pclass];
} }
if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0 if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0
&& ira_hard_reg_set_intersection_p (hard_regno, ALLOCNO_MODE (a), && ira_hard_reg_set_intersection_p (hard_regno, ALLOCNO_MODE (a),
......
...@@ -611,7 +611,7 @@ find_hard_regno_for_1 (int regno, int *cost, int try_only_hard_regno, ...@@ -611,7 +611,7 @@ find_hard_regno_for_1 (int regno, int *cost, int try_only_hard_regno,
} }
/* Make sure that all registers in a multi-word pseudo belong to the /* Make sure that all registers in a multi-word pseudo belong to the
required class. */ required class. */
IOR_COMPL_HARD_REG_SET (conflict_set, reg_class_contents[rclass]); conflict_set |= ~reg_class_contents[rclass];
lra_assert (rclass != NO_REGS); lra_assert (rclass != NO_REGS);
rclass_size = ira_class_hard_regs_num[rclass]; rclass_size = ira_class_hard_regs_num[rclass];
best_hard_regno = -1; best_hard_regno = -1;
......
...@@ -441,8 +441,7 @@ regrename_find_superclass (du_head_p head, int *pn_uses, ...@@ -441,8 +441,7 @@ regrename_find_superclass (du_head_p head, int *pn_uses,
if (DEBUG_INSN_P (tmp->insn)) if (DEBUG_INSN_P (tmp->insn))
continue; continue;
n_uses++; n_uses++;
IOR_COMPL_HARD_REG_SET (*punavailable, *punavailable |= ~reg_class_contents[tmp->cl];
reg_class_contents[tmp->cl]);
super_class super_class
= reg_class_superunion[(int) super_class][(int) tmp->cl]; = reg_class_superunion[(int) super_class][(int) tmp->cl];
} }
......
...@@ -1823,8 +1823,9 @@ find_reg (class insn_chain *chain, int order) ...@@ -1823,8 +1823,9 @@ find_reg (class insn_chain *chain, int order)
static int regno_pseudo_regs[FIRST_PSEUDO_REGISTER]; static int regno_pseudo_regs[FIRST_PSEUDO_REGISTER];
static int best_regno_pseudo_regs[FIRST_PSEUDO_REGISTER]; static int best_regno_pseudo_regs[FIRST_PSEUDO_REGISTER];
not_usable = bad_spill_regs | bad_spill_regs_global; not_usable = (bad_spill_regs
IOR_COMPL_HARD_REG_SET (not_usable, reg_class_contents[rl->rclass]); | bad_spill_regs_global
| ~reg_class_contents[rl->rclass]);
CLEAR_HARD_REG_SET (used_by_other_reload); CLEAR_HARD_REG_SET (used_by_other_reload);
for (k = 0; k < order; k++) for (k = 0; k < order; k++)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment