http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55633
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org --- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-12-10 08:57:04 UTC --- Can you pin-point which version causes the regression? BIT_SIZE(m) is (correctly) 64 while "ma" is (wrongly) "0". And "NOT returns the bitwise Boolean inverse of I." Can you run the following code? It matches the failing code but contains some debugging printout. Can you also try "kind=4"? That seems to work while "kind=8" seems to fail. integer(kind=8) m, ma ma = 0 m = 0 print '("m =",i21,z17," ma=",i2,z13)', m, m, ma, ma m = not(m) print '("m =",i21,z17," ma=",i2,z13)', m, m, ma, ma do while ( (m.ne.0) .and. (ma.lt.127) ) ma = ma + 1 m = ishft(m,-1) print '("m =",i21,z17,", ma=",i2,z13)', m, m, ma, ma end do print *, BIT_SIZE(m), ma if (BIT_SIZE(m) /= ma) error stop end