This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Your change to floor_log2_wide
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: dj at redhat dot com
- Cc: gcc at gcc dot gnu dot org
- Date: Tue, 8 Jun 04 16:28:18 EDT
- Subject: Your change to floor_log2_wide
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;