On 09/10/2026 12:15, Richard Sandiford wrote:
+ if (new_addr)
+ {
+ rtx new_mem = gen_rtx_MEM (outermode, new_addr);
+ set_mem_addr_space (new_mem, MEM_ADDR_SPACE (op));
+ MEM_VOLATILE_P (new_mem) = MEM_VOLATILE_P (op);
+ MEM_NOTRAP_P (new_mem) = MEM_NOTRAP_P (op);
+ return new_mem;
I think this should use change_address instead. AIUI, that is suitable
for any change that preserves the alias set.
That does seem like a good idea.
Question: change_address uses MEM_COPY_ATTRIBUTES ... another thing I
wasn't aware of ... should I add the new MEM_INDEPENDENT_P flag to that
copy?
/* Copy the attributes that apply to memory locations from RHS to LHS. */
#define MEM_COPY_ATTRIBUTES(LHS, RHS) \
(MEM_VOLATILE_P (LHS) = MEM_VOLATILE_P (RHS), \
MEM_NOTRAP_P (LHS) = MEM_NOTRAP_P (RHS), \
MEM_READONLY_P (LHS) = MEM_READONLY_P (RHS), \
MEM_KEEP_ALIAS_SET_P (LHS) = MEM_KEEP_ALIAS_SET_P (RHS), \
MEM_POINTER (LHS) = MEM_POINTER (RHS), \
+ MEM_INDEPENDENT_P (LHS) = MEM_INDEPENDENT_P (RHS), \
MEM_ATTRS (LHS) = MEM_ATTRS (RHS))
Andrew