https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100799
--- Comment #24 from Peter Bergner <bergner at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #23) > if the PowerPC backend maintainers wanted, there could be a similar workaround > on the rs6000 backend side, in the decisions whether the callee can use > the parameter save area or not ignore counting DECL_HIDDEN_STRING_LENGTH > PARM_DECLs, so if e.g. 9 arguments are passed but one of them is > DECL_HIDDEN_STRING_LENGTH, assume parameter save area is not there. If the callee has 9 arguments, even if one is a hidden str len arg, then there MUST be a parameter save area, since that is where the callee is supposed to load the 9th argument from. There is simply no other location that 9th argument exists at. I think the only viable rs6000 workaround is for the caller to allocate a parameter save area in some cases where it doesn't think it needs one. Ie, the caller is calling a function which it thinks has 8 parameters and there might be a hidden one (maybe one param is a string or whatever the Fortran CHARACTER with len great than 1 maps to) because the callee might be a Fortran routine. That would solve the problem of the callee scribbling data into the caller's frame, but wouldn't solve the issue of the caller didn't actually place a valid value for the missing hidden parameter. Thoughts on that?