alias.c (true_dependence): Allow non-unchanging read to conflict with unchanging write.

* alias.c (true_dependence): Allow non-unchanging read to conflict
	with unchanging write.

From-SVN: r36476
This commit is contained in:
Richard Kenner 2000-09-17 15:33:30 +00:00 committed by Richard Kenner
parent 23cb1766e0
commit ec56965643
2 changed files with 7 additions and 1 deletions

View File

@ -13,6 +13,9 @@ Sun Sep 17 18:48:32 2000 Denis Chertykov <denisc@overta.ru>
Sun Sep 17 10:46:17 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> Sun Sep 17 10:46:17 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* alias.c (true_dependence): Allow non-unchanging read to conflict
with unchanging write.
* expr.c (store_constructor_field): Accept ALIAS_SET arg. * expr.c (store_constructor_field): Accept ALIAS_SET arg.
(store_constructor): Pass alias_set to it. (store_constructor): Pass alias_set to it.

View File

@ -1600,10 +1600,13 @@ true_dependence (mem, mem_mode, x, varies)
A non-unchanging read can conflict with a non-unchanging write. A non-unchanging read can conflict with a non-unchanging write.
An unchanging read can conflict with an unchanging write since An unchanging read can conflict with an unchanging write since
there may be a single store to this address to initialize it. there may be a single store to this address to initialize it.
Note that an unchanging store can conflict with a non-unchanging read
since we have to make conservative assumptions when we have a
record with readonly fields and we are copying the whole thing.
Just fall through to the code below to resolve potential conflicts. Just fall through to the code below to resolve potential conflicts.
This won't handle all cases optimally, but the possible performance This won't handle all cases optimally, but the possible performance
loss should be negligible. */ loss should be negligible. */
if (RTX_UNCHANGING_P (x) != RTX_UNCHANGING_P (mem)) if (RTX_UNCHANGING_P (x) && ! RTX_UNCHANGING_P (mem))
return 0; return 0;
if (mem_mode == VOIDmode) if (mem_mode == VOIDmode)