Hello,
I am confused by the following code in
ifcvt.c:noce_mem_write_may_trap_or_fault_p():
static bool
noce_mem_write_may_trap_or_fault_p (const_rtx mem)
{
rtx addr;
if (MEM_READONLY_P (mem))
return true;
(...)
addr = XEXP (mem, 0);
/* Call target hook to avoid the effects of -fpic etc.... */
addr = targetm.delegitimize_address (addr);
while (addr)
switch (GET_CODE (addr))
{
(...) case SYMBOL_REF:
if (SYMBOL_REF_DECL (addr)
&& decl_readonly_section (SYMBOL_REF_DECL (addr), 0))
return true;
If decl_readonly_section (SYMBOL_REF_DECL (addr), 0) is true, I would
expect that MEM_READONLY_P is set, and the decl_readonly_section check
is never true.
Is there a difference between "could be read-only"
(decl_readonly_section) and "is read-only" (MEM_READONLY_P)?
Thanks for any help you can give,
Ciao!
Steven