aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-01-12 12:15:33 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2004-01-12 11:15:33 +0000
commit9ddb66ca2c45a7b33ccabfa750292234928d6a2c (patch)
tree5e9cab849c3f60977861853b4d2869f626c7215c /gcc/cse.c
parentc65ecebc826db604a52f546fe956da2926ee3486 (diff)
downloadgcc-9ddb66ca2c45a7b33ccabfa750292234928d6a2c.zip
gcc-9ddb66ca2c45a7b33ccabfa750292234928d6a2c.tar.gz
gcc-9ddb66ca2c45a7b33ccabfa750292234928d6a2c.tar.bz2
alias.c: Invlude varray.h
* alias.c: Invlude varray.h (alias_sets): Turn into varray. (get_alias_set_entry): Use VARRAY; mark inline. (mems_in_disjoint_alias_sets_p): Mark inline. (record_alias_subset): Use varray. (init_alias_once): Initialize varray. (new_alias_set): Grow array. * varray.c: Make VARRAY_GENERIC_PTR non GTYized. From-SVN: r75711
Diffstat (limited to 'gcc/cse.c')
-rw-r--r--gcc/cse.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index 4b0f1ec..bcfe68f 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -1768,6 +1768,7 @@ struct check_dependence_data
{
enum machine_mode mode;
rtx exp;
+ rtx addr;
};
static int
@@ -1775,7 +1776,8 @@ check_dependence (rtx *x, void *data)
{
struct check_dependence_data *d = (struct check_dependence_data *) data;
if (*x && GET_CODE (*x) == MEM)
- return true_dependence (d->exp, d->mode, *x, cse_rtx_varies_p);
+ return canon_true_dependence (d->exp, d->mode, d->addr, *x,
+ cse_rtx_varies_p);
else
return 0;
}
@@ -1797,6 +1799,7 @@ invalidate (rtx x, enum machine_mode full_mode)
{
int i;
struct table_elt *p;
+ rtx addr;
switch (GET_CODE (x))
{
@@ -1887,6 +1890,7 @@ invalidate (rtx x, enum machine_mode full_mode)
return;
case MEM:
+ addr = canon_rtx (get_addr (XEXP (x, 0)));
/* Calculate the canonical version of X here so that
true_dependence doesn't generate new RTL for X on each call. */
x = canon_rtx (x);
@@ -1914,6 +1918,7 @@ invalidate (rtx x, enum machine_mode full_mode)
if (!p->canon_exp)
p->canon_exp = canon_rtx (p->exp);
d.exp = x;
+ d.addr = addr;
d.mode = full_mode;
if (for_each_rtx (&p->canon_exp, check_dependence, &d))
remove_from_table (p, i);