https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110419
--- Comment #17 from Mikael Morin <mikael at gcc dot gnu.org> --- Created attachment 55660 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55660&action=edit Update function type patch This patch changes the dummy argument declaration type. It changes the dump as follows. --- m32/pr110419_comment4.f90.005t.original 2023-07-05 13:05:58.743843174 +0000 +++ pr110419_comment4.f90.005t.original 2023-07-30 19:31:20.880043687 +0000 @@ -1,5 +1,5 @@ __attribute__((fn spec (". r w "))) -void val (character(kind=1)[1:1] & restrict x, character(kind=1)[1:1] c, integer(kind=4) _x, integer(kind=4) _c) +void val (character(kind=1)[1:1] & restrict x, character(kind=1) c, integer(kind=4) _x, integer(kind=4) _c) { { struct __st_parameter_dt dt_parm.0; @@ -25,7 +25,7 @@ _gfortran_transfer_character_write (&dt_parm.1, &c, 1); _gfortran_st_write_done (&dt_parm.1); } - if (c[1]{lb: 1 sz: 1} != (*x)[1]{lb: 1 sz: 1}) + if ((*x)[1]{lb: 1 sz: 1} != c) { _gfortran_stop_numeric (1, 0); } @@ -36,7 +36,7 @@ __attribute__((fn spec (". "))) void p () { - static void val (character(kind=1)[1:1] & restrict, character(kind=1)[1:1], integer(kind=4), integer(kind=4)); + static void val (character(kind=1)[1:1] & restrict, character(kind=1), integer(kind=4), integer(kind=4)); static integer(kind=4) a = 65; { It seems to fix comment #4 (both 32 and 64 bits).