gprs 30 and 31 are handled differently when they are reserved as the base-pointer and frame-pointer respectively. This fixes the offset of their fixed-stack objects when there are fpr calle-saved registers.
Since you have a variable n here, I believe we've already had some testcases making sure frame pointer will definitely be used in this scenario, you can remove -frame-pointer=all. But I am okay if you want to keep it just in case. And if so, should we also add on for below 64bit case?
You are right, good catch.
I could have both a void return and a float return versions in the test, but I'm not sure its really worth the bother.
Good point. I removed it from the 64 bit run step but missed this one.