Bug 7675 - [3.2/3.3/3.4 regression] ICE in fixup_var_refs_1
|
Bug#:
7675
|
Product: gcc
|
Version: 3.2.1
|
|
Host:
|
Target:
|
Build:
|
|
Status: RESOLVED
|
Severity: normal
|
Priority: P3
|
|
Resolution: FIXED
|
Assigned To: ebotcazou@gcc.gnu.org
|
Reported By: sowhat@amnis.co.jp
|
|
Component: rtl-optimization
|
Target Milestone: ---
|
|
Summary: [3.2/3.3/3.4 regression] ICE in fixup_var_refs_1
|
|
Keywords: ice-on-valid-code
|
|
Opened: 2002-08-21 03:06
|
Reading specs from
/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/specs
Configured with: ./configure --enable-languages=c,c++,objc --disable-shared
--enable-threads --without-cvs --prefix=/usr/local/snap/gcc-20020819
i686-pc-linux-gnu
Thread model: posix
gcc version 3.2.1 20020819 (prerelease)
/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/cpp0 -lang-c
-v -I. -I. -I../../src/sdbm.v0 -iprefix
/usr/local/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.2.1/ -D__GNUC__=3
-D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=1 -D__GXX_ABI_VERSION=102 -D__ELF__
-Dunix -D__gnu_linux__ -Dlinux -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__
-D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -dD
-Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__i586 -D__i586__
-D__pentium -D__pentium__ -D__tune_i586__ -D__tune_pentium__ -DAXIS_LIBOBJ
-DcCompo=cCompoSdbmV0 ../../src/sdbm.v0/sdbmfldu.c -Wall -Wcast-align
-Wno-format -Werror sdbmfldu.i
GNU CPP version 3.2.1 20020819 (prerelease) (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory
"/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include"
ignoring nonexistent directory
"/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/../../../../i686-pc-linux-gnu/include"
ignoring nonexistent directory
"/usr/local/snap/gcc-20020819/i686-pc-linux-gnu/include"
ignoring duplicate directory "."
#include "..." search starts here:
#include <...> search starts here:
.
../../src/sdbm.v0
/usr/local/include
/usr/local/snap/gcc-20020819/include
/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/include
/usr/include
End of search list.
/usr/local/snap/gcc-20020819/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/cc1
-fpreprocessed sdbmfldu.i -quiet -dumpbase sdbmfldu.c -mcpu=pentium
-march=pentium -malign-double -g3 -O2 -Wall -Wcast-align -Wno-format -Werror
-version -fexceptions -o sdbmfldu.s
GNU CPP version 3.2.1 20020819 (prerelease) (cpplib) (i386 Linux/ELF)
GNU C version 3.2.1 20020819 (prerelease) (i686-pc-linux-gnu)
compiled by GNU C version 2.95.4 20011002 (Debian prerelease).
../../src/sdbm.v0/sdbmfldu.c: In function `SdbmListData':
../../src/sdbm.v0/sdbmfldu.c:1590: Internal compiler error in fixup_var_refs_1,
at function.c:1964
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
Release:
3.2.1 20020819 (prerelease)
Environment:
Configured with: ./configure --enable-languages=c,c++,objc --disable-shared
--enable-threads --without-cvs --prefix=/usr/local/snap/gcc-20020819
i686-pc-linux-gnu
Thread model: posix
gcc version 3.2.1 20020819 (prerelease)
How-To-Repeat:
It reappears only in this specific source file.
It does not reappear in GCC-2.95.
It reappears in any GCC-3.x(3.0.0/3.1/3.1.1/3.2)
State-Changed-From-To: open->analyzed
State-Changed-Why: Confirmed.
The bug is still present in gcc 3.2.1 and mainline.
Responsible-Changed-From-To: unassigned->ebotcazou
Responsible-Changed-Why: Working on a fix.
From: Janis Johnson <janis187@us.ibm.com>
To: gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org,
sowhat@amnis.co.jp, ebotcazou@gcc.gnu.org
Cc:
Subject: Re: optimization/7675: [3.2/3.3 regression] ICE in fixup_var_refs_1
Date: Tue, 24 Dec 2002 12:24:53 -0800
The regression reported in PR optimization/7675 showed up
starting with this patch:
2000-11-11 Jason Merrill <jason@redhat.com>
* function.c (assign_parms): If TREE_ADDRESSABLE is set, try to
give the parm a register and then call put_var_into_stack.
* stmt.c (expand_decl): Likewise.
cp/
* typeck.c (mark_addressable): Don't call put_var_into_stack.
Here's a small test case that causes the compiler to ICE
when compiled on i686-linux with -O:
-------------------
/* ICE when compiled with -O */
int dummy (int *);
void foo(int i, int j)
{
int k=j;
void bar() { int x=k, y=i, z=j; }
dummy(&j);
}
-------------------
Output from the mainline compiler:
7675.c: In function `foo':
7675.c:9: internal compiler error: in fixup_var_refs_1, at
function.c:1900
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
Eric, I just noticed that you're working on a patch. Perhaps
this information will be useful for you.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7675
From: "Eric Botcazou" <ebotcazou@libertysurf.fr>
To: <janis187@us.ibm.com>
Cc: <gcc-gnats@gcc.gnu.org>,
<gcc-prs@gcc.gnu.org>,
<gcc-bugs@gcc.gnu.org>,
<sowhat@amnis.co.jp>
Subject: Re: optimization/7675: [3.2/3.3 regression] ICE in fixup_var_refs_1
Date: Tue, 31 Dec 2002 09:19:06 +0100
> Eric, I just noticed that you're working on a patch. Perhaps
> this information will be useful for you.
See the analysis and the patch at:
http://gcc.gnu.org/ml/gcc-patches/2002-12/msg00336.html
Unfortunately, the bug is the consequence of a fundamental problem with
nested functions in the C front-end, whose right solution is the one
proposed by Richard:
http://gcc.gnu.org/ml/gcc-patches/2002-12/msg00367.html
I'll try to address it for 3.4 and, in the meantime, ask Richard what to do
for the 3.2 and 3.3 branches, in light of you pinpointing Jason's patch.
Thanks.
- Eric