https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29651
--- Comment #11 from Harald Anlauf <anlauf at gmx dot de> --- (In reply to Thomas Koenig from comment #10) > Is there anything left to fix? > > A dump with recent trunk shows > > integer(kind=4) D.3468; > > D.3468 = (integer(kind=4)) status2; > _gfortran_signal_sub_int (&i1, &i2, &D.3468); If you look further down in the dump, you'll see that the result of the optional status argument is not transferred to status2. Unless I am missing something... { integer(kind=4) D.3387; D.3387 = (integer(kind=4)) status2; _gfortran_signal_sub_int (&i1, &i2, &D.3387); } { struct __st_parameter_dt dt_parm.1; dt_parm.1.common.filename = &"xx.f90"[1]{lb: 1 sz: 1}; dt_parm.1.common.line = 9; dt_parm.1.common.flags = 128; dt_parm.1.common.unit = 6; _gfortran_st_write (&dt_parm.1); _gfortran_transfer_integer_write (&dt_parm.1, &status2, 2); _gfortran_st_write_done (&dt_parm.1); } Just add some -finit-integer=-42 to the flags and run the code.