https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99191

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jb at gcc dot gnu.org

--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> ---
Good, I can confirm that. The code contains a comment about it:

  if (n < 0)
    {
      negative = 1;
      t = -n; /*must use unsigned to protect from overflow*/
    }

Full back-trace:

/home/marxin/Programming/gcc2/libgfortran/io/write.c:835:7: runtime error:
negation of 0x80000000000000000000000000000000 cannot be represented in type
'__int128'; cast to an unsigned type to negate this value to itself
    #0 0x7ffff7844eec in write_decimal
/home/marxin/Programming/gcc2/libgfortran/io/write.c:835
    #1 0x7ffff7846d56 in write_integer
/home/marxin/Programming/gcc2/libgfortran/io/write.c:1369
    #2 0x7ffff7849b34 in list_formatted_write_scalar
/home/marxin/Programming/gcc2/libgfortran/io/write.c:1894
    #3 0x7ffff784a5eb in _gfortrani_list_formatted_write
/home/marxin/Programming/gcc2/libgfortran/io/write.c:1972
    #4 0x7ffff7812440 in wrap_scalar_transfer
/home/marxin/Programming/gcc2/libgfortran/io/transfer.c:2382
    #5 0x7ffff7812487 in _gfortran_transfer_integer
/home/marxin/Programming/gcc2/libgfortran/io/transfer.c:2393
    #6 0x7ffff78124b7 in _gfortran_transfer_integer_write
/home/marxin/Programming/gcc2/libgfortran/io/transfer.c:2399
    #7 0x400873 in check.0 (/home/marxin/Programming/testcases/a.out+0x400873)
    #8 0x4008b0 in MAIN__ (/home/marxin/Programming/testcases/a.out+0x4008b0)
    #9 0x4008e7 in main (/home/marxin/Programming/testcases/a.out+0x4008e7)
    #10 0x7ffff54edb24 in __libc_start_main (/lib64/libc.so.6+0x27b24)
    #11 0x40072d in _start (/home/marxin/Programming/testcases/a.out+0x40072d)

@Janne: Can you please take a look?

Reply via email to