mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-24 19:39:47 +08:00
expr.c (store_field): Don't set MEM_ALIAS_SET for a field in a structure at a variable address.
* expr.c (store_field): Don't set MEM_ALIAS_SET for a field in a structure at a variable address. From-SVN: r43256
This commit is contained in:
parent
c50174e729
commit
0ea834c115
@ -1,3 +1,8 @@
|
||||
2001-06-12 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* expr.c (store_field): Don't set MEM_ALIAS_SET for a field
|
||||
in a structure at a variable address.
|
||||
|
||||
2001-06-12 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* doc/gcov.texi: Use more logical markup.
|
||||
|
11
gcc/expr.c
11
gcc/expr.c
@ -5327,7 +5327,16 @@ store_field (target, bitsize, bitpos, mode, exp, value_mode,
|
||||
(bitpos
|
||||
/ BITS_PER_UNIT))));
|
||||
MEM_SET_IN_STRUCT_P (to_rtx, 1);
|
||||
MEM_ALIAS_SET (to_rtx) = alias_set;
|
||||
/* If the address of the structure varies, then it might be on
|
||||
the stack. And, stack slots may be shared across scopes.
|
||||
So, two different structures, of different types, can end up
|
||||
at the same location. We will give the structures alias set
|
||||
zero; here we must be careful not to give non-zero alias sets
|
||||
to their fields. */
|
||||
if (!rtx_varies_p (addr, /*for_alias=*/0))
|
||||
MEM_ALIAS_SET (to_rtx) = alias_set;
|
||||
else
|
||||
MEM_ALIAS_SET (to_rtx) = 0;
|
||||
|
||||
return store_expr (exp, to_rtx, value_mode != VOIDmode);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user