http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53974
--- Comment #10 from dave.anglin at bell dot net 2012-07-20 18:48:25 UTC --- On 7/20/2012 1:42 PM, ebotcazou at gcc dot gnu.org wrote: > 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. > On PA, b will be loaded into the second DImode call argument register which is the r23/r24 register pair. HARD_REGNO_MODE_OK is defined in a manner that is consistent with the calling conventions.