[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[3.2/3.3 regression] ICE in extract_insn, at recog.c:2148



>Submitter-Id:	net
>Originator:	Rick Younie <rick@def.debian.net>
>Organization:	The Debian Project
>Confidential:	no
>Synopsis:	
>Severity:	serious
>Priority:	medium
>Category:	optimization
>Class:		ice-on-legal-code
>Release:	3.2.2 (Debian) (Debian unstable)
>Environment:
System: Debian GNU/Linux (unstable)
Architecture: m68k-linux
>Description:
[ Reported to the Debian BTS as report #177840.
  Please CC 177840@bugs.debian.org on replies.
  Log of report can be found at http://bugs.debian.org/177840 ]

  This is a regression compared to gcc-3.0.4 and gcc-2.95.[34].

  The following code, extracted from gtk+2.0 ICEs on m68k-linux, reducing
  to -O1 avoids the ICE.

  Checked with 3.2 branch 20021231 and 3.3 branch 20030221


$ gcc-3.2 -O2 -pthread -g -Wall -fPIC -c bug-177840-3.i
bug-177840-3.i: In function `bilinear_quadrant':
bug-177840-3.i:55: unrecognizable insn:
(insn 263 69 71 (set (reg:DF 17 %fp1)
        (const_double:DF 0 [0x0] 0 [0x0] 0 [0x0])) -1 (nil)
    (nil))
bug-177840-3.i:55: Internal compiler error in extract_insn, at recog.c:2148
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

$ /scratch/gcc/gcc-snapshot-20030221/build/gcc/xgcc -B/scratch/gcc/gcc-snapshot-20030221/build/gcc/ -O2 -pthread -g -Wall -fPIC -c bug-177840-3.i
bug-177840-3.i: In function `bilinear_quadrant':
bug-177840-3.i:55: error: unrecognizable insn:
(insn 256 67 68 6 (nil) (set (reg:DF 16 %fp0)
        (const_double:DF 0 [0x0] 0.0 [0x0.0p+0])) -1 (nil)
    (nil))
bug-177840-3.i:55: internal compiler error: in extract_insn, at recog.c:2175
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

-------------------------------------------
double
bilinear_quadrant (double bx0, double bx1, double by0, double by1)
{
  double ax0, ax1, ay0, ay1;
  double x0, x1, y0, y1;

  ax0 = 0.;
  ax1 = 1.;
  ay0 = 0.;
  ay1 = 1.;

  if (ax0 < bx0)
    {
      if (ax1 > bx0)
        {
          x0 = bx0;
          x1 = (((ax1) < (bx1)) ? (ax1) : (bx1));
        }
      else
        return 0;
    }
  else
    {
      if (bx1 > ax0)
        {
          x0 = ax0;
          x1 = (((ax1) < (bx1)) ? (ax1) : (bx1));
        }
      else
        return 0;
    }

  if (ay0 < by0)
    {
      if (ay1 > by0)
        {
          y0 = by0;
          y1 = (((ay1) < (by1)) ? (ay1) : (by1));
        }
      else
        return 0;
    }
  else
    {
      if (by1 > ay0)
        {
          y0 = ay0;
          y1 = (((ay1) < (by1)) ? (ay1) : (by1));
        }
      else
        return 0;
    }

  return 0.25 * (x1*x1 - x0*x0) * (y1*y1 - y0*y0);
}
-------------------------------------------

>How-To-Repeat:
	
>Fix:
	



Reply to: