aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cse.c')
-rw-r--r--gcc/cse.c69
1 files changed, 10 insertions, 59 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index be3277b..097fb94 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -561,7 +561,6 @@ static struct table_elt *insert_with_costs (rtx, struct table_elt *, unsigned,
static struct table_elt *insert (rtx, struct table_elt *, unsigned,
machine_mode);
static void merge_equiv_classes (struct table_elt *, struct table_elt *);
-static void invalidate_reg (rtx, bool);
static void invalidate (rtx, machine_mode);
static void remove_invalid_refs (unsigned int);
static void remove_invalid_subreg_refs (unsigned int, poly_uint64,
@@ -1822,12 +1821,10 @@ check_dependence (const_rtx x, rtx exp, machine_mode mode, rtx addr)
}
/* Remove from the hash table, or mark as invalid, all expressions whose
- values could be altered by storing in register X.
-
- CLOBBER_HIGH is set if X was part of a CLOBBER_HIGH expression. */
+ values could be altered by storing in register X. */
static void
-invalidate_reg (rtx x, bool clobber_high)
+invalidate_reg (rtx x)
{
gcc_assert (GET_CODE (x) == REG);
@@ -1852,10 +1849,7 @@ invalidate_reg (rtx x, bool clobber_high)
SUBREG_TICKED (regno) = -1;
if (regno >= FIRST_PSEUDO_REGISTER)
- {
- gcc_assert (!clobber_high);
- remove_pseudo_from_table (x, hash);
- }
+ remove_pseudo_from_table (x, hash);
else
{
HOST_WIDE_INT in_table = TEST_HARD_REG_BIT (hard_regs_in_table, regno);
@@ -1883,18 +1877,10 @@ invalidate_reg (rtx x, bool clobber_high)
if (!REG_P (p->exp) || REGNO (p->exp) >= FIRST_PSEUDO_REGISTER)
continue;
- if (clobber_high)
- {
- if (reg_is_clobbered_by_clobber_high (p->exp, x))
- remove_from_table (p, hash);
- }
- else
- {
- unsigned int tregno = REGNO (p->exp);
- unsigned int tendregno = END_REGNO (p->exp);
- if (tendregno > regno && tregno < endregno)
- remove_from_table (p, hash);
- }
+ unsigned int tregno = REGNO (p->exp);
+ unsigned int tendregno = END_REGNO (p->exp);
+ if (tendregno > regno && tregno < endregno)
+ remove_from_table (p, hash);
}
}
}
@@ -1921,7 +1907,7 @@ invalidate (rtx x, machine_mode full_mode)
switch (GET_CODE (x))
{
case REG:
- invalidate_reg (x, false);
+ invalidate_reg (x);
return;
case SUBREG:
@@ -4425,8 +4411,6 @@ canonicalize_insn (rtx_insn *insn, struct set **psets, int n_sets)
if (MEM_P (XEXP (x, 0)))
canon_reg (XEXP (x, 0), insn);
}
- else if (GET_CODE (x) == CLOBBER_HIGH)
- gcc_assert (REG_P (XEXP (x, 0)));
else if (GET_CODE (x) == USE
&& ! (REG_P (XEXP (x, 0))
&& REGNO (XEXP (x, 0)) < FIRST_PSEUDO_REGISTER))
@@ -4458,8 +4442,6 @@ canonicalize_insn (rtx_insn *insn, struct set **psets, int n_sets)
if (MEM_P (XEXP (y, 0)))
canon_reg (XEXP (y, 0), insn);
}
- else if (GET_CODE (y) == CLOBBER_HIGH)
- gcc_assert (REG_P (XEXP (y, 0)));
else if (GET_CODE (y) == USE
&& ! (REG_P (XEXP (y, 0))
&& REGNO (XEXP (y, 0)) < FIRST_PSEUDO_REGISTER))
@@ -6149,12 +6131,6 @@ invalidate_from_clobbers (rtx_insn *insn)
invalidate (XEXP (ref, 0), GET_MODE (ref));
}
}
- if (GET_CODE (x) == CLOBBER_HIGH)
- {
- rtx ref = XEXP (x, 0);
- gcc_assert (REG_P (ref));
- invalidate_reg (ref, true);
- }
else if (GET_CODE (x) == PARALLEL)
{
int i;
@@ -6171,12 +6147,6 @@ invalidate_from_clobbers (rtx_insn *insn)
|| GET_CODE (ref) == ZERO_EXTRACT)
invalidate (XEXP (ref, 0), GET_MODE (ref));
}
- else if (GET_CODE (y) == CLOBBER_HIGH)
- {
- rtx ref = XEXP (y, 0);
- gcc_assert (REG_P (ref));
- invalidate_reg (ref, true);
- }
}
}
}
@@ -6198,12 +6168,6 @@ invalidate_from_sets_and_clobbers (rtx_insn *insn)
rtx temx = XEXP (tem, 0);
if (GET_CODE (temx) == CLOBBER)
invalidate (SET_DEST (temx), VOIDmode);
- else if (GET_CODE (temx) == CLOBBER_HIGH)
- {
- rtx temref = XEXP (temx, 0);
- gcc_assert (REG_P (temref));
- invalidate_reg (temref, true);
- }
}
}
@@ -6231,12 +6195,6 @@ invalidate_from_sets_and_clobbers (rtx_insn *insn)
|| GET_CODE (clobbered) == ZERO_EXTRACT)
invalidate (XEXP (clobbered, 0), GET_MODE (clobbered));
}
- else if (GET_CODE (y) == CLOBBER_HIGH)
- {
- rtx ref = XEXP (y, 0);
- gcc_assert (REG_P (ref));
- invalidate_reg (ref, true);
- }
else if (GET_CODE (y) == SET && GET_CODE (SET_SRC (y)) == CALL)
invalidate (SET_DEST (y), VOIDmode);
}
@@ -6896,10 +6854,6 @@ count_reg_usage (rtx x, int *counts, rtx dest, int incr)
count_reg_usage (XEXP (XEXP (x, 0), 0), counts, NULL_RTX, incr);
return;
- case CLOBBER_HIGH:
- gcc_assert (REG_P ((XEXP (x, 0))));
- return;
-
case SET:
/* Unless we are setting a REG, count everything in SET_DEST. */
if (!REG_P (SET_DEST (x)))
@@ -6952,8 +6906,7 @@ count_reg_usage (rtx x, int *counts, rtx dest, int incr)
|| (REG_NOTE_KIND (x) != REG_NONNEG && GET_CODE (XEXP (x,0)) == USE)
/* FUNCTION_USAGE expression lists may include (CLOBBER (mem /u)),
involving registers in the address. */
- || GET_CODE (XEXP (x, 0)) == CLOBBER
- || GET_CODE (XEXP (x, 0)) == CLOBBER_HIGH)
+ || GET_CODE (XEXP (x, 0)) == CLOBBER)
count_reg_usage (XEXP (x, 0), counts, NULL_RTX, incr);
count_reg_usage (XEXP (x, 1), counts, NULL_RTX, incr);
@@ -7037,9 +6990,7 @@ insn_live_p (rtx_insn *insn, int *counts)
if (set_live_p (elt, insn, counts))
return true;
}
- else if (GET_CODE (elt) != CLOBBER
- && GET_CODE (elt) != CLOBBER_HIGH
- && GET_CODE (elt) != USE)
+ else if (GET_CODE (elt) != CLOBBER && GET_CODE (elt) != USE)
return true;
}
return false;