builtins.c (get_memory_rtx): Set mem attributes for non-ADDR_EXPR expressions.

* builtins.c (get_memory_rtx): Set mem attributes for non-ADDR_EXPR
	expressions.  Always clear MEM_SIZE and alias set.

From-SVN: r88141
This commit is contained in:
Ulrich Weigand 2004-09-26 19:13:38 +00:00 committed by Ulrich Weigand
parent 3bd2680ed5
commit 931e6c29a7
2 changed files with 16 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2004-09-26 Ulrich Weigand <uweigand@de.ibm.com>
* builtins.c (get_memory_rtx): Set mem attributes for non-ADDR_EXPR
expressions. Always clear MEM_SIZE and alias set.
2004-09-26 Roger Sayle <roger@eyesopen.com>
Giovanni Bajo <giovannibajo@gcc.gnu.org>

View File

@ -990,15 +990,20 @@ get_memory_rtx (tree exp)
exp = TREE_OPERAND (exp, 0);
if (TREE_CODE (exp) == ADDR_EXPR)
{
exp = TREE_OPERAND (exp, 0);
set_mem_attributes (mem, exp, 0);
}
exp = TREE_OPERAND (exp, 0);
else if (POINTER_TYPE_P (TREE_TYPE (exp)))
exp = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (exp)), exp);
else
exp = NULL;
/* Honor attributes derived from exp, except for the alias set
(as builtin stringops may alias with anything) and the size
(as stringops may access multiple array elements). */
if (exp)
{
exp = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (exp)), exp);
/* memcpy, memset and other builtin stringops can alias with anything. */
set_mem_attributes (mem, exp, 0);
set_mem_alias_set (mem, 0);
set_mem_size (mem, NULL_RTX);
}
return mem;