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
This commit is contained in:
parent
616fde536e
commit
66cce54da0
@ -1,3 +1,8 @@
|
|||||||
|
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
|
||||||
|
21
gcc/alias.c
21
gcc/alias.c
@ -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. */
|
||||||
|
Loading…
Reference in New Issue
Block a user