Commit 5dbc8499 by Jim Wilson

(note_mem_written): Varying structure memory access with

AND address can alias scalars.

From-SVN: r12417
parent c4a18992
...@@ -7583,10 +7583,15 @@ note_mem_written (written, writes_ptr) ...@@ -7583,10 +7583,15 @@ note_mem_written (written, writes_ptr)
and that's just as good as a structure element and that's just as good as a structure element
in implying that we need not invalidate scalar variables. in implying that we need not invalidate scalar variables.
However, we must allow QImode aliasing of scalars, because the However, we must allow QImode aliasing of scalars, because the
ANSI C standard allows character pointers to alias anything. */ ANSI C standard allows character pointers to alias anything.
We must also allow AND addresses, because they may generate
accesses outside the object being referenced. This is used to
generate aligned addresses from unaligned addresses, for instance,
the alpha storeqi_unaligned pattern. */
if (! ((MEM_IN_STRUCT_P (written) if (! ((MEM_IN_STRUCT_P (written)
|| GET_CODE (XEXP (written, 0)) == PLUS) || GET_CODE (XEXP (written, 0)) == PLUS)
&& GET_MODE (written) != QImode)) && GET_MODE (written) != QImode
&& GET_CODE (XEXP (written, 0)) != AND))
writes_ptr->all = 1; writes_ptr->all = 1;
writes_ptr->nonscalar = 1; writes_ptr->nonscalar = 1;
} }
......
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