https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67170
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
I wonder why IPA SRA doesn't turn the scalar parameter from by-reference to
by-value passing btw. I do see that IPA SRA doesn't handle recursion though,
thus
static int __attribute__((noinline)) foo (int *p)
{
if (*p)
return foo (p);
return *p;
}
int main()
{
int i = 0;
return foo (&i);
}
is not transformed. But in the testcase there isn't a recursive call using
the incoming parameter.
As for the idea to use the alias machinery I'm now leaning towards either
having PTA compute a "points-to-readonly" or SCCVN/LIM pre-compute the
parm-decl
property and have its own disambiguator handle the disambiguation.