This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
i686-pc-linux-gnu: GNU C++ 2.96 19990908: ICE in `scan_region', at except.c:2578
- To: gcc-bugs at gcc dot gnu dot org
- Subject: i686-pc-linux-gnu: GNU C++ 2.96 19990908: ICE in `scan_region', at except.c:2578
- From: Raja R Harinath <harinath at cs dot umn dot edu>
- Date: 08 Sep 1999 14:51:35 -0500
Hi,
The following simple program causes an ICE with a recent CVS checkout
of the GNU compiler.
struct A
{
~A ();
};
bool foo (const A &, int);
A bar (A p)
{
for (int i = 0; i < 1; ++i)
if (foo (p, i))
{
A tmp (p);
return tmp;
}
return p;
}
Here's a sample run:
gcc version 2.96 19990908 (experimental)
/home/grad04/harinath/linux/lib/gcc-lib/i686-pc-linux-gnu/2.96/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=96 -D__cplusplus -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -D__OPTIMIZE__ -g -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di686 -Dpentiumpro -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ bug1.cc /tmp/ccI7cr1L.ii
cpp: GNU CPP version 2.96 19990908 (experimental) (i386 Linux/ELF)
cpp: ignoring nonexistent directory `/usr/local/include'
#include "..." search starts here:
#include <...> search starts here:
/home/grad04/harinath/include
/home/grad04/harinath/include/g++-3
/home/grad04/harinath/linux/i686-pc-linux-gnu/include
/home/grad04/harinath/linux/lib/gcc-lib/i686-pc-linux-gnu/2.96/include
/usr/include
End of search list.
/home/grad04/harinath/linux/lib/gcc-lib/i686-pc-linux-gnu/2.96/cc1plus /tmp/ccI7cr1L.ii -quiet -dumpbase bug1.cc -g -O2 -version -o /tmp/cckTMKhp.s
GNU C++ version 2.96 19990908 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.96 19990908 (experimental).
bug1.cc: In function `struct A bar(A)':
bug1.cc:17: Internal compiler error in `scan_region', at except.c:2578
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions.
A simple variant of the same program causes a different ICE:
--- bug1.cc Wed Sep 8 14:32:05 1999
+++ bug1a.cc Wed Sep 8 14:39:34 1999
@@ -5,7 +5,7 @@
bool foo (const A &, int);
-A bar (A p)
+A bar (A & p)
{
for (int i = 0; i < 1; ++i)
if (foo (p, i))
struct A
{
~A ();
};
bool foo (const A &, int);
A bar (A & p)
{
for (int i = 0; i < 1; ++i)
if (foo (p, i))
{
A tmp (p);
return tmp;
}
return p;
}
The sample compile session is:
han ~/z/z > c++ -v -c -g -O2 bug1a.cc
Reading specs from /home/grad04/harinath/linux/lib/gcc-lib/i686-pc-linux-gnu/2.96/specs
gcc version 2.96 19990908 (experimental)
/home/grad04/harinath/linux/lib/gcc-lib/i686-pc-linux-gnu/2.96/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=96 -D__cplusplus -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -D__OPTIMIZE__ -g -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di686 -Dpentiumpro -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ bug1a.cc /tmp/ccrLVf3M.ii
cpp: GNU CPP version 2.96 19990908 (experimental) (i386 Linux/ELF)
cpp: ignoring nonexistent directory `/usr/local/include'
#include "..." search starts here:
#include <...> search starts here:
/home/grad04/harinath/include
/home/grad04/harinath/include/g++-3
/home/grad04/harinath/linux/i686-pc-linux-gnu/include
/home/grad04/harinath/linux/lib/gcc-lib/i686-pc-linux-gnu/2.96/include
/usr/include
End of search list.
/home/grad04/harinath/linux/lib/gcc-lib/i686-pc-linux-gnu/2.96/cc1plus /tmp/ccrLVf3M.ii -quiet -dumpbase bug1a.cc -g -O2 -version -o /tmp/ccSjvX3s.s
GNU C++ version 2.96 19990908 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.96 19990908 (experimental).
bug1a.cc: In function `struct A bar(A &)':
bug1a.cc:17: Internal compiler error.
bug1a.cc:17: Please submit a full bug report.
bug1a.cc:17: See <URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions.
Notes:
1. The ICE happens only when optimization is turned on (-O1, -O2).
2. A similar ICE happens with earlier CVS checkouts, both on
ix86-pc-linux-gnu and sparc-sun-solaris2.6.
- Hari
--
Raja R Harinath ------------------------------ harinath@cs.umn.edu
"When all else fails, read the instructions." -- Cahn's Axiom
"Our policy is, when in doubt, do the right thing." -- Roy L Ash