http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58975
Bug ID: 58975 Summary: Builtin function RAN() interferes with F77 program's own definition of INTEGER FUNCTION RAN() Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: arthur.j.odwyer at gmail dot com Related to Bug 14993. "Adventure II" works perfectly with the old f77 compiler, but crashes under gfortran. http://www.mipmip.org/adv440/index.shtml http://www.ifarchive.org/if-archive/games/source/adv440.tgz If you compile the above-linked Fortran 77 program ("advII.f") with gfortran 4.8.1, you'll observe that it crashes every time the player enters an area forbidden to dwarves. This is because that particular computation involves random number generation, which in "advII.f" is implemented like this: INTEGER FUNCTION RAN(IR) [...snip...] IRAN=MOD(R,173) RAN=MOD(R,IR) RETURN END and used like this: PCT(N)=RAN(100).LT.N The problem is that the call to RAN(100) above is being turned into a call to the RAN() built-in real-valued function, rather than the integer function defined above. This leads to nonsensical codegen. When a Fortran 77 program defines its own version of RAN(), the program's version should override the compiler's built-in.