This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

i686-pc-linux-gnu: GNU C++ 2.96 19990908: ICE in `scan_region', at except.c:2578


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]