https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116028
--- Comment #14 from Surya Kumari Jangala <jskumari at gcc dot gnu.org> --- (In reply to Richard Earnshaw from comment #13) > (In reply to Surya Kumari Jangala from comment #3) > > The parameter register is > > saved in a volatile register which is saved on stack in the entry bb. > > Instead, if the volatile register is saved just before the call, then shrink > > wrapping will happen. > > /v on a register doesn't make it volatile. It simply means that the > register refers to a variable declared in the source-code. See > REG_USERVAR_P() in rtl.texi. >From the input RTL to the pro_and_epilogue pass (where shrink wrap happens), the parameter register r3 is copied to r9 which is then saved on stack. 'r9' is a volatile register on Power.