Commit 66cce54d by Richard Henderson Committed by Richard Henderson

alias.c (objects_must_conflict_p): Read-only slots may not conflict despite having the same type.

        * alias.c (objects_must_conflict_p): Read-only slots may not
        conflict despite having the same type.

From-SVN: r39285
parent 616fde53
2001-01-26 Richard Henderson <rth@redhat.com>
* alias.c (objects_must_conflict_p): Read-only slots may not
conflict despite having the same type.
2001-01-27 Michael Hayes <mhayes@redhat.com> 2001-01-27 Michael Hayes <mhayes@redhat.com>
* loop.c (loop_giv_reduce_benefit): Copy mode size into * loop.c (loop_giv_reduce_benefit): Copy mode size into
......
...@@ -309,21 +309,24 @@ int ...@@ -309,21 +309,24 @@ int
objects_must_conflict_p (t1, t2) objects_must_conflict_p (t1, t2)
tree t1, t2; tree t1, t2;
{ {
/* If one or the other has readonly fields or is readonly,
then they may not conflict. */
if ((t1 != 0 && readonly_fields_p (t1))
|| (t2 != 0 && readonly_fields_p (t2))
|| (t1 != 0 && TYPE_READONLY (t1))
|| (t2 != 0 && TYPE_READONLY (t2)))
return 0;
/* If they are the same type, they must conflict. */ /* If they are the same type, they must conflict. */
if (t1 == t2 if (t1 == t2
/* Likewise if both are volatile. */ /* Likewise if both are volatile. */
|| (t1 != 0 && TYPE_VOLATILE (t1) && t2 != 0 && TYPE_VOLATILE (t2))) || (t1 != 0 && TYPE_VOLATILE (t1) && t2 != 0 && TYPE_VOLATILE (t2)))
return 1; return 1;
/* We now know they are different types. If one or both has readonly fields /* If one is aggregate and the other is scalar then they may not
or if one is readonly and the other not, they may not conflict. conflict. */
Likewise if one is aggregate and the other is scalar. */ if ((t1 != 0 && AGGREGATE_TYPE_P (t1))
if ((t1 != 0 && readonly_fields_p (t1)) != (t2 != 0 && AGGREGATE_TYPE_P (t2)))
|| (t2 != 0 && readonly_fields_p (t2))
|| ((t1 != 0 && TYPE_READONLY (t1))
!= (t2 != 0 && TYPE_READONLY (t2)))
|| ((t1 != 0 && AGGREGATE_TYPE_P (t1))
!= (t2 != 0 && AGGREGATE_TYPE_P (t2))))
return 0; return 0;
/* Otherwise they conflict only if the alias sets conflict. */ /* Otherwise they conflict only if the alias sets conflict. */
......
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