mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-25 05:40:26 +08:00
alias.c (alias_invariant, [...]): Remove.
* alias.c (alias_invariant, alias_invariant_size): Remove. (record_base_value): Remove. (memrefs_conflict_p): Don't look at alias_invariant. (end_alias_analysis): Don't free it. * alias.h (record_base_value): Remove prototype. From-SVN: r111574
This commit is contained in:
parent
d3b7269024
commit
63292ebfb4
@ -1,3 +1,11 @@
|
||||
2006-02-28 Steven Bosscher <stevenb.gcc@gmail.com>
|
||||
|
||||
* alias.c (alias_invariant, alias_invariant_size): Remove.
|
||||
(record_base_value): Remove.
|
||||
(memrefs_conflict_p): Don't look at alias_invariant.
|
||||
(end_alias_analysis): Don't free it.
|
||||
* alias.h (record_base_value): Remove prototype.
|
||||
|
||||
2006-02-28 Paolo Bonzini <bonzini@gnu.org>
|
||||
Adam Nemet <anemet@caviumnetworks.com>
|
||||
|
||||
|
61
gcc/alias.c
61
gcc/alias.c
@ -222,17 +222,6 @@ static GTY (()) rtx static_reg_base_value[FIRST_PSEUDO_REGISTER];
|
||||
(reg_base_value && REGNO (X) < VARRAY_SIZE (reg_base_value) \
|
||||
? VARRAY_RTX (reg_base_value, REGNO (X)) : 0)
|
||||
|
||||
/* Vector of known invariant relationships between registers. Set in
|
||||
loop unrolling. Indexed by register number, if nonzero the value
|
||||
is an expression describing this register in terms of another.
|
||||
|
||||
The length of this array is REG_BASE_VALUE_SIZE.
|
||||
|
||||
Because this array contains only pseudo registers it has no effect
|
||||
after reload. */
|
||||
static GTY((length("alias_invariant_size"))) rtx *alias_invariant;
|
||||
static GTY(()) unsigned int alias_invariant_size;
|
||||
|
||||
/* Vector indexed by N giving the initial (unchanging) value known for
|
||||
pseudo-register N. This array is initialized in init_alias_analysis,
|
||||
and does not change until end_alias_analysis is called. */
|
||||
@ -1079,31 +1068,6 @@ record_set (rtx dest, rtx set, void *data ATTRIBUTE_UNUSED)
|
||||
reg_seen[regno] = 1;
|
||||
}
|
||||
|
||||
/* Called from loop optimization when a new pseudo-register is
|
||||
created. It indicates that REGNO is being set to VAL. f INVARIANT
|
||||
is true then this value also describes an invariant relationship
|
||||
which can be used to deduce that two registers with unknown values
|
||||
are different. */
|
||||
|
||||
void
|
||||
record_base_value (unsigned int regno, rtx val, int invariant)
|
||||
{
|
||||
if (invariant && alias_invariant && regno < alias_invariant_size)
|
||||
alias_invariant[regno] = val;
|
||||
|
||||
if (regno >= VARRAY_SIZE (reg_base_value))
|
||||
VARRAY_GROW (reg_base_value, max_reg_num ());
|
||||
|
||||
if (REG_P (val))
|
||||
{
|
||||
VARRAY_RTX (reg_base_value, regno)
|
||||
= REG_BASE_VALUE (val);
|
||||
return;
|
||||
}
|
||||
VARRAY_RTX (reg_base_value, regno)
|
||||
= find_base_value (val);
|
||||
}
|
||||
|
||||
/* Clear alias info for a register. This is used if an RTL transformation
|
||||
changes the value of a register. This is used in flow by AUTO_INC_DEC
|
||||
optimizations. We don't need to clear reg_base_value, since flow only
|
||||
@ -1792,25 +1756,6 @@ memrefs_conflict_p (int xsize, rtx x, int ysize, rtx y, HOST_WIDE_INT c)
|
||||
return memrefs_conflict_p (xsize, x0, ysize, y0, c);
|
||||
}
|
||||
|
||||
case REG:
|
||||
/* Are these registers known not to be equal? */
|
||||
if (alias_invariant)
|
||||
{
|
||||
unsigned int r_x = REGNO (x), r_y = REGNO (y);
|
||||
rtx i_x, i_y; /* invariant relationships of X and Y */
|
||||
|
||||
i_x = r_x >= alias_invariant_size ? 0 : alias_invariant[r_x];
|
||||
i_y = r_y >= alias_invariant_size ? 0 : alias_invariant[r_y];
|
||||
|
||||
if (i_x == 0 && i_y == 0)
|
||||
break;
|
||||
|
||||
if (! memrefs_conflict_p (xsize, i_x ? i_x : x,
|
||||
ysize, i_y ? i_y : y, c))
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2696,12 +2641,6 @@ end_alias_analysis (void)
|
||||
reg_known_value_size = 0;
|
||||
free (reg_known_equiv_p);
|
||||
reg_known_equiv_p = 0;
|
||||
if (alias_invariant)
|
||||
{
|
||||
ggc_free (alias_invariant);
|
||||
alias_invariant = 0;
|
||||
alias_invariant_size = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Do control and data flow analysis; write some of the results to the
|
||||
|
@ -24,7 +24,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
extern HOST_WIDE_INT new_alias_set (void);
|
||||
extern HOST_WIDE_INT get_varargs_alias_set (void);
|
||||
extern HOST_WIDE_INT get_frame_alias_set (void);
|
||||
extern void record_base_value (unsigned int, rtx, int);
|
||||
extern bool component_uses_parent_alias_set (tree);
|
||||
|
||||
/* This alias set can be used to force a memory to conflict with all
|
||||
|
Loading…
x
Reference in New Issue
Block a user