http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53974
--- Comment #9 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-07-20 17:42:19 UTC --- > I've never seen this. In addition to HARD_REGNO_MODE_OK, the definition of > CANNOT_CHANGE_MODE_CLASS prevents mode changes to larger modes > when it is greater than UNITS_PER_WORD. On SPARC, this is specified by the 32-bit ABI: if you have void foo(int32_t a, int64_t b) b will be loaded into DImode %o1, which is SImode %o1 & SImode %o2.