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?