https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91386
--- Comment #5 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- (In reply to Richard Earnshaw from comment #4) > 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? Scratch that, can't be the case in main.