Your change to floor_log2_wide
Richard Kenner
kenner@vlsi1.ultra.nyu.edu
Tue Jun 8 20:27:00 GMT 2004
It fails for 64-bit targets. I think the following is needed:
*** toplev.c 8 Jun 2004 19:24:02 -0000 1.903
--- toplev.c 8 Jun 2004 20:25:40 -0000
*************** floor_log2_wide (unsigned HOST_WIDE_INT
*** 1260,1278 ****
if (x == 0)
return -1;
! if (sizeof (HOST_WIDE_INT)*8 > 64)
! if (x >= (unsigned HOST_WIDE_INT)(1 << (t+64)))
t += 64;
! if (sizeof (HOST_WIDE_INT)*8 > 32)
! if (x >= (unsigned HOST_WIDE_INT)(1 << (t+32)))
t += 32;
! if (x >= (unsigned HOST_WIDE_INT)(1 << (t+16)))
t += 16;
! if (x >= (unsigned HOST_WIDE_INT)(1 << (t+8)))
t += 8;
! if (x >= (unsigned HOST_WIDE_INT)(1 << (t+4)))
t += 4;
! if (x >= (unsigned HOST_WIDE_INT)(1 << (t+2)))
t += 2;
! if (x >= (unsigned HOST_WIDE_INT)(1 << (t+1)))
t += 1;
return t;
--- 1260,1278 ----
if (x == 0)
return -1;
! if (sizeof (HOST_WIDE_INT) * 8 > 64)
! if (x >= (unsigned HOST_WIDE_INT) 1 << (t + 64))
t += 64;
! if (sizeof (HOST_WIDE_INT) * 8 > 32)
! if (x >= ((unsigned HOST_WIDE_INT) 1) << (t + 32))
t += 32;
! if (x >= ((unsigned HOST_WIDE_INT) 1) << (t + 16))
t += 16;
! if (x >= ((unsigned HOST_WIDE_INT) 1) << (t + 8))
t += 8;
! if (x >= ((unsigned HOST_WIDE_INT) 1) << (t + 4))
t += 4;
! if (x >= ((unsigned HOST_WIDE_INT) 1) << (t + 2))
t += 2;
! if (x >= ((unsigned HOST_WIDE_INT) 1) << (t + 1))
t += 1;
return t;
More information about the Gcc
mailing list