https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103246
--- Comment #5 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Looking into optimized dump, I wonder why IPA-SRA is rpelacing some of parameters passed by reference but not all of them: -__attribute__((fn spec (". w w w w w w w w w w w w w "))) -double dco (int & restrict l, int & restrict m, int & restrict kx, int & restrict ky, int & restrict kz, int & restrict lp, int & restrict mp, double[15625] * restrict fpqr, double[0:] * restrict zlm, int[0:] * restrict lmf, int[0:] * restrict lmx, int[0:] * restrict lmy, int[0:] * restrict lmz) +double dco.isra (int ISRA.1, int ISRA.1, int & restrict kx, int & restrict ky, int & restrict kz, int ISRA.2, int ISRA.3, double[15625] * restrict fpqr, double[0:] * restrict zlm, int[0:] * restrict lmf, int[0:] * restrict lmx, int[0:] * restrict lmy, int[0:] * restrict lmz) I would expect kx,ky and kz to be also replaced. -void formdr.constprop (double[0:] * restrict g, double[0:] * restrict g2, double[0:] * restrict xin, double[0:] * restrict yin, double[0:] * restrict zin, int & restrict mini, int & restrict maxi, int & restrict minj, int & restrict maxj, logical(kind=4) & restrict norm) +void formdr.constprop (double[0:] * restrict g, double[0:] * restrict g2, double[0:] * restrict xin, double[0:] * restrict yin, double[0:] * restrict zin, int & restrict minj, int & restrict maxj) similarly here we drop some parameters by we do not seem to do the replacement for rest of them.