https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63302
Mikael Pettersson <mikpelinux at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mikpelinux at gmail dot com
--- Comment #17 from Mikael Pettersson <mikpelinux at gmail dot com> ---
This bug also affects m68k-linux, since it doesn't set need_64bit_hwint=yes.
On m68k-linux, gcc-4.8 -O1 -fomit-frame-pointer generates:
pa_ldil_cint_p:
move.l %d2,-(%sp)
move.l 8(%sp),%d0
move.l 12(%sp),%d1
and.l #-2147481601,%d1
move.l %d0,%d2
or.l %d1,%d2
jeq .L3
move.w #-1,%a0
move.l #-2147483648,%a1
cmp.l %a0,%d0
jne .L4
cmp.l %a1,%d1
.L4:
seq %d0
extb.l %d0
neg.l %d0
jra .L2
.L3:
moveq #1,%d0
.L2:
move.l (%sp)+,%d2
rts
while gcc-4.9 generates:
pa_ldil_cint_p:
move.l 8(%sp),%d0
and.l #2047,%d0
seq %d0
neg.b %d0
and.l #255,%d0
rts
The gcc-4.9 code completely ignores the high 32-bits.
I'll try the patch in a couple of days when my current 4.9 bootstrap+regtest is
done.