This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
optimization/115: Re: horrible bug in gcc 2.95
- To: gcc-gnats at gcc dot gnu dot org
- Subject: optimization/115: Re: horrible bug in gcc 2.95
- From: "Martin v. Loewis" <martin at loewis dot home dot cs dot tu-berlin dot de>
- Date: Wed, 15 Mar 2000 10:28:36 +0100
- References: <199908092225.AAA14823@mail.cs.tu-berlin.de>
- Resent-Cc: gcc-prs at gcc dot gnu dot org, egnor at ofb dot net
- Resent-Reply-To: gcc-gnats@gcc.gnu.org, "Martin v. Loewis" <martin@loewis.home.cs.tu-berlin.de>
>Number: 115
>Category: optimization
>Synopsis: horrible bug in gcc 2.95
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: analyzed
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Wed Mar 15 01:36:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator: Dan Egnor <egnor@ofb.net>
>Release: 2.95.2
>Organization:
>Environment:
>Description:
Original-Message-Id: <199908092225.AAA14823@mail.cs.tu-berlin.de>
Date: Mon, 09 Aug 1999 15:25:09 -0700
The gcc 2.95 loop optimizer (?) seems to have some kind of horrible flaw.
Reproduction case is below; note that every other compiler, and indeed gcc
2.95 with optimization off, gives the expected result.
** compile command **
<ofb> gcc -v --save-temps -O2 bug.c
Reading specs from /usr/lib/gcc-lib/i386-pc-linux/2.95/specs
gcc version 2.95 19990728 (release)
/usr/lib/gcc-lib/i386-pc-linux/2.95/cpp -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__OPTIMIZE__ -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ bug.c bug.i
GNU CPP version 2.95 19990728 (release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc-lib/i386-pc-linux/2.95/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
/usr/lib/gcc-lib/i386-pc-linux/2.95/../../../../include/g++-3
/usr/lib/gcc-lib/i386-pc-linux/2.95/../../../../i386-pc-linux/include
End of omitted list.
/usr/lib/gcc-lib/i386-pc-linux/2.95/cc1 bug.i -quiet -dumpbase bug.c -O2 -version -o bug.s
GNU C version 2.95 19990728 (release) (i386-pc-linux) compiled by GNU C version 2.95 19990728 (release).
as -V -Qy -o bug.o bug.s
GNU assembler version 2.9.4 (i686-pc-linux-gnu) using BFD version 2.9.4.0.6
/usr/lib/gcc-lib/i386-pc-linux/2.95/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i386-pc-linux/2.95/crtbegin.o -L/usr/lib/gcc-lib/i386-pc-linux/2.95 bug.o -lgcc -lc -lgcc /usr/lib/gcc-lib/i386-pc-linux/2.95/crtend.o /usr/lib/crtn.o
** expected result of execution **
<ofb> ./a.out
count = 0
** actual result of execution **
<ofb> ./a.out
count = -123
** source file, preprocessed output, assembler output **
>How-To-Repeat:
begin 644 bug.tar.gz
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
AL6_1.,/`+L>3L]]0$GT^GH_GX_GX#1[_!>C.FBT`4```
`
end
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: