gcc-2.95.3 internal error on head/MachOp.hs
Donald Bruce Stewart
dons at cse.unsw.edu.au
Thu Sep 9 05:09:00 EDT 2004
dons:
> A start on the gcc-2.95.3 issue provoked by MachOp.hs in the head, on
> the openbsd nightly builds. I haven't solved this, but I thought I'd put
> out some info, in case someone else can spot it, or has some hints...
And we have a minimal test case :) Maybe this will help.
module M where
f :: DT -> Bool
f a = case a of -- any less cases and we don't trigger it
A -> True
C -> True
D -> True
E -> True
F -> True
J -> True
M -> True
N -> True
_other -> False
-- any less constructors and we don't trigger it
data DT = A | B | C | D | E | F | G | H | I | J
| K | L | M | N | O | P | Q | R
Which provokes, using the stage1 compiler from the head:
manzano$ ~/head/i386-unknown-openbsd/ghc/compiler/ghc-inplace -c -keep-tmp-files -fvia-C T.hs
/tmp/ghc10780.hc: In function `s1Eo_ret':
/tmp/ghc10780.hc:859: Internal compiler error in `build_insn_chain', at global.c:1756
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
And the .hc function that gcc aborts in (full .hc at
http://www.cse.unsw.edu.au/~dons/ghc10780.hc):
static StgWord s1Eo_info[] = {
0x0, 0x24
};
EI_(GHCziBase_False_closure);
EI_(GHCziBase_True_closure);
IF_(s1Eo_ret) {
W_ _c1Ey;
FB_
_c1Ey = (W_)((*((StgWord16*)((*R1.p) + (-0x2)))));
if (_c1Ey < 0x5) goto _c1EH;
if (_c1Ey < 0xc) goto _c1EI;
if (_c1Ey < 0xd) goto _c1EJ;
if (_c1Ey != 0xd) goto _c1EK;
R1.p = (P_)(W_)GHCziBase_True_closure;
Sp=Sp+1;
JMP_(*((P_)((*Sp) + (-0x14))));
_c1EK:
R1.p = (P_)(W_)GHCziBase_False_closure;
Sp=Sp+1;
JMP_(*((P_)((*Sp) + (-0x10))));
_c1EL:
R1.p = (P_)(W_)GHCziBase_True_closure;
Sp=Sp+1;
JMP_(*((P_)((*Sp) + (-0x14))));
_c1EM:
R1.p = (P_)(W_)GHCziBase_True_closure;
Sp=Sp+1;
JMP_(*((P_)((*Sp) + (-0x14))));
_c1EN:
R1.p = (P_)(W_)GHCziBase_True_closure;
Sp=Sp+1;
JMP_(*((P_)((*Sp) + (-0x14))));
_c1EO:
R1.p = (P_)(W_)GHCziBase_True_closure;
Sp=Sp+1;
JMP_(*((P_)((*Sp) + (-0x14))));
_c1EP:
if (_c1Ey != 0x5) goto _c1EK;
R1.p = (P_)(W_)GHCziBase_True_closure;
Sp=Sp+1;
JMP_(*((P_)((*Sp) + (-0x14))));
_c1EJ:
R1.p = (P_)(W_)GHCziBase_True_closure;
Sp=Sp+1;
JMP_(*((P_)((*Sp) + (-0x14))));
_c1EI:
if (_c1Ey < 0x9) goto _c1EP;
if (_c1Ey != 0x9) goto _c1EK;
R1.p = (P_)(W_)GHCziBase_True_closure;
Sp=Sp+1;
JMP_(*((P_)((*Sp) + (-0x14))));
_c1EH:
switch (_c1Ey) {
case 0x0: goto _c1EL;
case 0x1: goto _c1EK;
case 0x2: goto _c1EM;
case 0x3: goto _c1EN;
case 0x4: goto _c1EO;
}
FE_
}
More information about the Cvs-ghc
mailing list