https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122438

--- Comment #11 from Michael Matz <matz at gcc dot gnu.org> ---
It may even be that the calculation of hard_regno_nregs should be based
on the unadjusted basereg ('r' in the new routine), not on the adjusted one,
as the various target macros that feed this routine assume the latter.

It's just a sad fact that paradoxical subregs are an anomaly: in particular
on big-endian targets they don't work quite the same as normal multi-reg
hardregs. : A multi-reg hardreg works the same on all targets, it occupies
registers [X,X+nregs(X,mode)).  A paradoxical subreg one occupies registers
[adjust(X), nregs(...???..., mode)).  On little-endian targets adjust(X)==X,
so everything seems easy, and bit-rot for big-endians is very likely :-)

Reply via email to