Bug 14060 – Internal error: backend/cg87.c 3394 only in MacOSX
Status
RESOLVED
Resolution
WONTFIX
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Mac OS X
Creation time
2015-01-27T13:26:06Z
Last change time
2020-08-06T16:07:11Z
Keywords
ice
Assigned to
No Owner
Creator
Kenji Hara
Comments
Comment #0 by k.hara.pg — 2015-01-27T13:26:06Z
I found this issue from the auto-tester result of my PR:
https://github.com/D-Programming-Language/dmd/pull/4331
Following code is a part of test/runnable/interpret.d. With -m32 -O -inline -release, the code would cause following backend ICE.
Internal error: backend/cg87.c 3394
If you add writefln call in the compare function, the ICE would disappear.
version(addWriteln) import std.stdio;
else extern(C) int printf(const char*, ...);
void test113()
{
import core.math;
static void compare(real a, real b)
{
version(addWriteln) writefln("compare(%30.30f, %30.30f);", a, b);
assert(fabs(a - b) < 128 * real.epsilon);
}
static if (__traits(compiles, (){ enum real ctval1 = yl2x(3.14, 1); }))
{
enum real ctval1 = yl2x(3.14, 1);
enum real ctval2 = yl2x(2e1500L, 3);
enum real ctval3 = yl2x(1, 5);
real rtval1 = yl2x(3.14, 1);
real rtval2 = yl2x(2e1500L, 3);
real rtval3 = yl2x(1, 5);
compare(ctval1, rtval1);
compare(ctval2, rtval2);
compare(ctval3, rtval3);
}
static if (__traits(compiles, (){ enum real ctval4 = yl2xp1(3.14, 1); }))
{
enum real ctval4 = yl2xp1(3.14, 1);
enum real ctval5 = yl2xp1(2e1500L, 3);
enum real ctval6 = yl2xp1(1, 5);
real rtval4 = yl2xp1(3.14, 1);
real rtval5 = yl2xp1(2e1500L, 3);
real rtval6 = yl2xp1(1, 5);
compare(ctval4, rtval4);
compare(ctval5, rtval5);
compare(ctval6, rtval6);
}
}
int main()
{
test113();
printf("Success\n");
return 0;
}
Comment #1 by pro.mathias.lang — 2020-08-06T16:07:11Z
MacOSX 32 bits have been retired, so closing as WONTFIX.