f77 bug on decstation 3100
Lilian Leung
lilian at mips.COM
Fri Oct 6 04:27:31 AEST 1989
In article <wZ_Gp_u00YU5AAxIlC at andrew.cmu.edu> mikem+ at andrew.cmu.edu (Michael Meyer) writes:
>I'm not sure if this is a generic Mips compiler bug, or specific to the
>decstation. I've submitted a problem report to Digital.
>
>I believe that the following function is valid Fortran 77.
> program
> complex x,y
> complex fred
> x = (1.0,1.0)
> y = (2.0,1.0)
> write(*,*) fred(x,y)
> stop
> end
> complex function fred(x,y)
> complex x,y
> fred=(10,10)
> fred= x*conjg(y) + fred
> return
> end
>
>However on a decstation 3100, the line
>fred= x*conjg(y) + fred
>has the effect of just
>fred= x*conjg(y)
>That is the output from this program is (5,0) rather than (15,10).
>It appears that the compiler ignores "fred" on the left hand side of the
>assignment statement. Perhaps it is even trying to do a recursive call?
>I'm not sure if this behaviour happens only for complex functions, that
>is just the case where I ran into problems.
>
>The Fortran standard,
>ANSI X3.9-1978 15.5.3 states
>
> Within a function subprogram, the symbolic name of a
> function specified by a FUNCTION or ENTRY statement must not
> appear in any other nonexecutable statement, except a type-
> statement. In an executable statement, such a name may
> appear only as a variable.
>
>while section 15.5.1 of the Fortran 77 Ansi Standard:
>
> During every execution of the external function
> this variable [they are referring to the function name]
> must become defined and, once defined, may be referenced
> or become redefined.
>
>Here is the result of running this program on a decstation 3100, Ultrix
>3.1, UWS 2.1.
>temper> f77 -O0 -v -o fred fred.f
>/usr/lib/fcom1.31 -v -EL -g0 -O0 -automatic -XS/tmp/ctmsta12713 -t
>/tmp/ctmfa127
>13 fred.f
>fred.f:
> MAIN:
> fred:
>0.0u 0.1s 0:00 31% 107+191k 2+6io 6pf+0w
>/usr/lib/ugen1.31 -v -G 8 -EL -g0 -O0 /tmp/ctmfa12713 -o /tmp/ctmca12713
>-t /tmp
>/ctmsta12713 -temp /tmp/ctmgta12713
>0.0u 0.0s 0:00 20% 81+61k 3+7io 3pf+0w
>/usr/lib/as11.31 -v -G 8 -p0 -EL -g0 -O0 /tmp/ctmca12713 -o fred.o -t
>/tmp/ctmst
>a12713
>as1: MAIN__ fred_
>0.0u 0.0s 0:00 32% 74+67k 2+3io 3pf+0w
>/usr/bin/ld1.31 -o fred -B1.31 -G 8 -g0 -nocount /usr/lib/crt0.o1.31
>-count fred
>/usr/bin/ld1.31 -o fred -B1.31 -G 8 -g0 -nocount /usr/lib/crt0.o1.31
>-count fr/u
>sr/lib/libm.a1.31 -lc
>0.2u 0.7s 0:04 21% 70+228k 105+32io 2pf+0w
>temper> fred
> (5.000000,0.0000000E+00)
The above was a Mips FORTRAN release 1.31 bug, but has since been fixed
in our 2.0 release. The output should be (13,11) though, not (15,10).
--
UUCP: {ames,decwrl,prls,pyramid}!mips!lilian (or lilian at mips.com)
DDD: 408-991-7848 Lilian Leung (or 408-720-1700, Ext. 848)
USPS: MIPS Computer Systems, 930 Arques, Sunnyvale, CA 94086-3650
More information about the Comp.unix.ultrix
mailing list