An alpha egcs bug
H.J. Lu
hjl@lucon.org
Wed Oct 22 16:49:00 GMT 1997
> > On Wed, Oct 22, 1997 at 12:48:44PM -0700, H.J. Lu wrote:
> > > But alpha.md doesn't reflect that detail. With my inline.cc, egcs
> > > generates incorrect asm code. Here is my kludge. It seems to work on
> > > my test case. I hope someone can find a better fix.
> >
> > I don't see what your patch changes at all, except to make two patterns
> > where once there was one. The problem is in reload, pure and simple.
> >
> > Or as simple as reload ever gets.
> I didn't read this thread real close, but it might be worth
> looking at CLASS_CANNOT_CHANGE_SIZE.
>
>From what I read in tm.texi:
`CLASS_CANNOT_CHANGE_SIZE'
If defined, a C expression for a class that contains registers
which the compiler must always access in a mode that is the same
size as the mode in which it loaded the register.
For the example, loading 32-bit integer or floating-point objects
into floating-point registers on the Alpha extends them to 64-bits.
Therefore loading a 64-bit object and then storing it as a 32-bit
object does not store the low-order 32-bits, as would be the case
for a normal register. Therefore, `alpha.h' defines this macro as
`FLOAT_REGS'.
it implies it doesn't apply to normal registers.
--
H.J. Lu (hjl@gnu.ai.mit.edu)
More information about the Gcc
mailing list