https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112415
--- Comment #31 from Jeffrey A. Law <law at gcc dot gnu.org> --- IIRC r21 is call-clobbered. So I guess the question turns into what was the sequence before f-m-o got involved -- was it assuming r21 would be preserved, or did f-m-o make r21 live across the call?