https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111157
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
I think if IPA modref declares the argument dead at the call site then IPA
CP/SRA cannot declare it known constant.
Now, I wonder why IPA CP/SRA does not replace the known constant parameter
with an automatic var like
point.constprop.isra (double ISRA.1740, int & restrict ipoint, double &
restrict x, double & restrict y, double & restrict z, int & restrict istat)
{
...
const int istat.local = 0;
istat = &istat.local;
? So if not all uses of 'istat' get resolved we avoid generating wrong
code. The expense is a constant pool entry (if not all uses are removed),
but I think that's OK. It would also work for aggregates. It would also
relieve IPA-CP modification phase from doing anything but trival value
replacement (in case the arg isn't apointer).