Commit 40e02b4a by Jan Hubicka Committed by Jan Hubicka

alias.c (find_base_term, get_addr): Do not dereference NULL pointer when all…

alias.c (find_base_term, get_addr): Do not dereference NULL pointer when all VALUE's locations has been invalidated.

	* alias.c (find_base_term, get_addr):  Do not dereference NULL
	pointer when all VALUE's locations has been invalidated.
	(rtx_equal_for_memref_p): Simplify checking of VALUEs.

From-SVN: r77201
parent 1c02f6f2
2004-02-04 Jan Hubicka <jh@suse.cz>
* alias.c (find_base_term, get_addr): Do not dereference NULL
pointer when all VALUE's locations has been invalidated.
(rtx_equal_for_memref_p): Simplify checking of VALUEs.
2004-02-03 Wolfgang Bangerth <bangerth@dealii.org> 2004-02-03 Wolfgang Bangerth <bangerth@dealii.org>
* doc/invoke.texi (x86 options): Fix spelling/wording. * doc/invoke.texi (x86 options): Fix spelling/wording.
......
...@@ -1139,9 +1139,6 @@ rtx_equal_for_memref_p (rtx x, rtx y) ...@@ -1139,9 +1139,6 @@ rtx_equal_for_memref_p (rtx x, rtx y)
/* Some RTL can be compared without a recursive examination. */ /* Some RTL can be compared without a recursive examination. */
switch (code) switch (code)
{ {
case VALUE:
return CSELIB_VAL_PTR (x) == CSELIB_VAL_PTR (y);
case REG: case REG:
return REGNO (x) == REGNO (y); return REGNO (x) == REGNO (y);
...@@ -1151,6 +1148,7 @@ rtx_equal_for_memref_p (rtx x, rtx y) ...@@ -1151,6 +1148,7 @@ rtx_equal_for_memref_p (rtx x, rtx y)
case SYMBOL_REF: case SYMBOL_REF:
return XSTR (x, 0) == XSTR (y, 0); return XSTR (x, 0) == XSTR (y, 0);
case VALUE:
case CONST_INT: case CONST_INT:
case CONST_DOUBLE: case CONST_DOUBLE:
/* There's no need to compare the contents of CONST_DOUBLEs or /* There's no need to compare the contents of CONST_DOUBLEs or
...@@ -1325,6 +1323,8 @@ find_base_term (rtx x) ...@@ -1325,6 +1323,8 @@ find_base_term (rtx x)
case VALUE: case VALUE:
val = CSELIB_VAL_PTR (x); val = CSELIB_VAL_PTR (x);
if (!val)
return 0;
for (l = val->locs; l; l = l->next) for (l = val->locs; l; l = l->next)
if ((x = find_base_term (l->loc)) != 0) if ((x = find_base_term (l->loc)) != 0)
return x; return x;
...@@ -1502,14 +1502,17 @@ get_addr (rtx x) ...@@ -1502,14 +1502,17 @@ get_addr (rtx x)
if (GET_CODE (x) != VALUE) if (GET_CODE (x) != VALUE)
return x; return x;
v = CSELIB_VAL_PTR (x); v = CSELIB_VAL_PTR (x);
for (l = v->locs; l; l = l->next) if (v)
if (CONSTANT_P (l->loc)) {
return l->loc; for (l = v->locs; l; l = l->next)
for (l = v->locs; l; l = l->next) if (CONSTANT_P (l->loc))
if (GET_CODE (l->loc) != REG && GET_CODE (l->loc) != MEM) return l->loc;
return l->loc; for (l = v->locs; l; l = l->next)
if (v->locs) if (GET_CODE (l->loc) != REG && GET_CODE (l->loc) != MEM)
return v->locs->loc; return l->loc;
if (v->locs)
return v->locs->loc;
}
return x; return x;
} }
......
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