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:
parent
3bd2680ed5
commit
931e6c29a7
@ -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>
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user