https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91386
--- Comment #4 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- R8 is the register used for the address of the return value location when the result cannot be stored in registers. Are you sure that this isn't a problem in the caller?