https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109861
--- Comment #3 from Scot Breitenfeld <brtnfld at hdfgroup dot org> --- I see the same issue with NAG, regardless of the optimization level. Our CI testing had missed it because this was a parallel test, and we don't test parallel with NAG. I guess the issue is whether marking TYPE(C_PTR) as CLOBBER is correct. I looked through the 2018 standard and could not locate anything that addresses this use case. Are you interpreting the possibility that a TYPE(C_PTR) should not be declared INTENT(OUT)? I can instead change the subroutine to declare buf as INTEGER(C_INT), INTENT(OUT), TARGET :: buf and f_ptr = C_LOC(buf) and there is no issue. So it seems to depend on the TYPE of the argument being passed.