optimization/9812: [3.2/3.3 regression] ICE in extract_insn, at recog.c:2148
Matthias Klose
doko@net.local
Sun Feb 23 07:16:00 GMT 2003
>Number: 9812
>Category: optimization
>Synopsis: [3.2/3.3 regression] ICE in extract_insn, at recog.c:2148
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Sun Feb 23 07:16:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: Rick Younie <rick@def.debian.net>
>Release: 3.2.2 (Debian) (Debian unstable)
>Organization:
The Debian Project
>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:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list