Probable g77 compiler bug

Tim Prince tprince@computer.org
Thu Oct 18 22:27:00 GMT 2001


----- Original Message -----
From: "Jonathan Ravens" <J.Ravens@gns.cri.nz>
To: <gcc-bugs@gcc.gnu.org>
Sent: Thursday, October 18, 2001 5:58 PM
Subject: Probable g77 compiler bug


> !
> !Dear g77 people,
> !
> !Following code fragment illustrates a compiler bug under
RedHat7(.1?).
> !Code works if print statments are included (see below), or -O3
and -fno-automatic
> !are NOT on the command-line.  Otherwise it fails (see below).
> !
> !System details are :
> !
> !uname -a :Linux kereru 2.4.2-2 #1 Sun Apr 8 20:41:30 EDT 2001
i686 unknown
> !Hardware :Dell Optiplex, pentium 3.
> !g77 -v   :See bottom of message for full text
> !          __G77_LIBF77_VERSION__: 0.5.26 20000731 (prerelease)
> !          @(#)LIBF77 VERSION 19991115
> !          __G77_LIBI77_VERSION__: 0.5.26 20000731 (prerelease)
> !          @(#) LIBI77 VERSION pjw,dmg-mods 19991115
> !          __G77_LIBU77_VERSION__: 0.5.26 20000731 (prerelease)
> !          @(#) LIBU77 VERSION 19980709
> !gcc -v   :Reading specs from
/usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
> !          gcc version 2.96 20000731 (Red Hat Linux 7.1
2.96-81)
> !
> !If you need more info. please Email me J.Ravens@gns.cri.nz
> !
> !many thanks.
>
>         program test
>
>         implicit none
>         integer*4 nsamps, isamp
>         real*4  trace(36) /
>      -        17.6,  -1.6, -2.9, -3.9, -8.2, -10.4, -2.1, 11.0,
>      -        15.0,  -0.2, -2.5, -3.8, -10.7, -11.3, -0.3,
14.2,
>      -        20.4,  -1.7, -2.5, -3.7, -9.8, -14.1, -4.5, 12.8,
>      -        22.7,
 20.5, -1.4, -0.8, -2.28,  -9.9,-15.0, -5.5,
>      -        -5.8,  12.1, 23.0, 21.6 /
>
>         isamp=23                ! Start of search
>         nsamps=36
>         call nearest_minima (trace, isamp,nsamps)
>         print*,'isamp=',isamp   ! should be 22
>         end
>
> ! If compiled with -O3 or -fno-automatic, isamp=23 (wrong)
> ! else                                    isamp=22 (correct)
> !
> ! If print statement at line 50 is commented out, isamp=23
(wrong)
> ! If   "       "      "  "   "  is active, isamp=22 (works)
> !
> ! f77 -o nm nm.f;./nm
> ! f77 -o nm [-O3 -fno-automatic] nm.f;./nm
>
>
>
*****************************************************************
**********
>
>         subroutine nearest_minima (trace,isamp,nsamps)
>
>         implicit none
>         real*4      trace(*)
>         integer*4   isamp, nsamps
>
>         integer*4   left_is, right_is
>
>         left_is  = isamp
>         right_is = isamp
>
>         do while (left_is.gt.2)
>             left_is = left_is - 1
>             if (trace(left_is).lt.trace(left_is-1) .and.
>      -          trace(left_is).lt.trace(left_is+1)) goto 333
>         end do
> 333     continue
>
>         do while (right_is.lt.nsamps-1)
>             right_is = right_is + 1
> C            print*, '> right_is=',right_is
>             if (trace(right_is).lt.trace(right_is-1) .and.
>      -          trace(right_is).lt.trace(right_is+1)) goto 444
>         end do
> 444     continue
>
>         if (isamp-left_is .eq. right_is-isamp) then
>             if (trace(left_is) .gt. trace(right_is)) then
>                 isamp = left_is
>             else
>                 isamp = right_is
>             end if
>         else if (isamp-left_is .gt. right_is-isamp) then
>             isamp = right_is
>         else
>             isamp = left_is
>         end if
>         return
>         end
>
> Full output of g77 -v :
>
>
> g77 version 2.96 20000731 (Red Hat Linux 7.1 2.96-81) (from
FSF-g77 version 0.5.26 20000731 (Red Hat Linux 7.1 2.96-81))
> Driving: g77 -v -c -xf77-version /dev/null -xnone
> Reading specs from
/usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
> gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)
>

/usr/lib/gcc-lib/i386-redhat-linux/2.96/tradcpp0 -lang-fortran -v
 -D__GNUC__=2 -D__GNUC_MINOR__=96 -D__GNUC_PATCHLEVEL__=0 -D__ELF
__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__l
inux -Asystem(posix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 
-D__i386__ -D__tune_i386__ /dev/null /dev/null
> GNU traditional CPP version 2.96 20000731 (Red Hat Linux 7.1
2.96-81)
>

/usr/lib/gcc-lib/i386-redhat-linux/2.96/f771 -fnull-version -quie
t -dumpbase g77-version.f -version -fversion -o
/work/tmp/ccWW0fzt.s /dev/null
> GNU F77 version 2.96 20000731 (Red Hat Linux 7.1 2.96-81)
(i386-redhat-linux) compiled by GNU C version 2.96 20000731 (Red
Hat Linux 7.1 2.96-81).
> GNU Fortran Front End version 0.5.26 20000731 (Red Hat Linux
7.1 2.96-81)
>  as -V -Qy -o /work/tmp/ccimmgwO.o /work/tmp/ccWW0fzt.s
> GNU assembler version 2.10.91 (i386-redhat-linux) using BFD
version 2.10.91.0.2
>  ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o
/work/tmp/ccgHD278 /work/tmp/ccimmgwO.o
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crt1.o
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crti.o
/usr/lib/gcc-lib/i386-redhat-linux/2.96/crtbegin.o -L/usr/lib/gcc
-lib/i386-redhat-linux/2.96 -L/usr/lib/gcc-lib/i386-redhat-linux/
2.96/../../.. -lg2c -lm -lgcc -lc -lgcc
/usr/lib/gcc-lib/i386-redhat-linux/2.96/crtend.o
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crtn.o
>  /work/tmp/ccgHD278
> __G77_LIBF77_VERSION__: 0.5.26 20000731 (prerelease)
> @(#)LIBF77 VERSION 19991115
> __G77_LIBI77_VERSION__: 0.5.26 20000731 (prerelease)
> @(#) LIBI77 VERSION pjw,dmg-mods 19991115
> __G77_LIBU77_VERSION__: 0.5.26 20000731 (prerelease)
> @(#) LIBU77 VERSION 19980709

I don't reproduce the problem, with the reported proprietary fork
of g77, nor with my installations of gcc-2.95.3 or gcc-3.1.



More information about the Gcc-bugs mailing list