------- Comment #5 from kargl at gcc dot gnu dot org 2008-09-10 15:42 ------- Daniel,
I looked at this briefly last week. Here's another test case that might be easier to trace. implicit none real(4) r real(8) rd complex(8) z rd = dble(b'0000000000000000000000000000000001000000001010010101001111111101') z = cmplx(b'0000000000000000000000000000000001000000001010010101001111111101',0,8) r = 0. if (z /= rd) call abort end Of course, bugzilla has wrapped the long lines. -fdump-parse-tree gives ASSIGN MAIN__:rd 5.31837115e-315_8 ASSIGN MAIN__:z (complex 5.3183711317956924e-315_8 0_8) ASSIGN MAIN__:r 0 IF (/= MAIN__:z __convert_r8_c8[[((MAIN__:rd))]]) CALL _gfortran_abort () ENDIF I suspect that the conversion of the boz to the rd value is done with a kind=4 conversion rather than kind=8, but I haven't been able to substantial my suspicions. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36214