https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38220
--- Comment #9 from anlauf at gcc dot gnu.org --- (In reply to Joost VandeVondele from comment #6) > ifort rejects this code, gfortran and cft compile but trigger the runtime > abort, pgf90 compiles and runs without abort. Actually that code has the logic wrong. Adjusted, portable testcase: MODULE M1 CONTAINS PURE INTEGER(C_INTPTR_T) FUNCTION F(a) RESULT(I) USE ISO_C_BINDING, ONLY: C_LOC, C_INTPTR_T INTEGER, INTENT(IN), TARGET :: a I=TRANSFER(C_LOC(a),I) END FUNCTION END MODULE M1 PROGRAM TEST USE M1 USE ISO_C_BINDING, ONLY: C_INTPTR_T INTEGER :: i, j integer(C_INTPTR_T) :: ri, rj i=4 ; j=4 ri=F(i) rj=F(j) IF (ri == rj) stop 1 rj=F(i) IF (ri /= rj) stop 2 END PROGRAM Works with Crayftn 14.0, Intel, Nvidia, gfortran. Wrong code with flang. Rejected by NAG with: NAG Fortran Compiler Release 7.1(Hanzomon) Build 7101 Error: pr38220.f90, line 9: Reference via generic C_LOC to impure C_LOC_PRIVATE from pure F Can we close it again?