[M3devel] another Snow Leopard compiler crash
Mika Nystrom
mika at async.caltech.edu
Mon Dec 27 11:16:53 CET 2010
===> calarm/regress/ximport
--- building in I386_DARWIN ---
new source -> compiling Main.m3
"../src/Main.m3", line 258: warning: potentially unhandled exception: Main.ParamErr
"../src/Main.m3", line 260: warning: potentially unhandled exception: Main.ParamErr
"../src/Main.m3", line 261: warning: potentially unhandled exception: Main.ParamErr
3 warnings encountered
../src/Main.m3: In function 'Main__DumpMatching__DumpOne':
../src/Main.m3:225:0: error: unable to find a register to spill in class 'CREG'
../src/Main.m3:225:0: error: this is the insn:
(insn 5 4 6 2 ../src/Main.m3:204 (parallel [
(set (reg:SI 0 ax [130])
(const_int 0 [0x0]))
(set (reg:SI 1 dx [128])
(plus:SI (ashift:SI (reg:SI 0 ax [130])
(const_int 2 [0x2]))
(reg:SI 1 dx [128])))
(set (reg:SI 4 si [129])
(plus:SI (ashift:SI (reg:SI 0 ax [130])
(const_int 2 [0x2]))
(reg:SI 4 si [129])))
(set (mem/s/c:BLK (reg:SI 1 dx [128]) [0 trade+0 S24 A64])
(mem/s/c:BLK (reg:SI 4 si [129]) [0 trade+0 S24 A32]))
(use (reg:SI 0 ax [130]))
]) 838 {*rep_movsi} (expr_list:REG_UNUSED (reg:SI 0 ax [130])
(expr_list:REG_UNUSED (reg:SI 4 si [129])
(expr_list:REG_UNUSED (reg:SI 1 dx [128])
(nil)))))
../src/Main.m3:225:0: internal compiler error: in spill_failure, at reload1.c:2163
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
m3_backend => 4
m3cc (aka cm3cg) failed compiling: Main.mc
compilation failed => not building program "ximport"
Fatal Error: package build failed
Here is the code:
PROCEDURE DumpMatching(tr : TickerRef;
trades, bids, asks : HFDataSSeq.T) RAISES { Wr.Failure } =
PROCEDURE DumpOne(trade, bid, ask : HFData.S) RAISES { Wr.Failure } =
BEGIN
<* ASSERT trade.time = bid.time AND bid.time = ask.time *>
Wr.PutText(wr, Fmt.LongReal(trade.time));
Wr.PutChar(wr, ' ');
Wr.PutText(wr, Fmt.LongReal(aFactor*trade.pv.price));
Wr.PutChar(wr, ' ');
Wr.PutText(wr, Fmt.LongReal(FLOAT(trade.pv.volume,LONGREAL)/aFactor));
Wr.PutChar(wr, ' ');
Wr.PutText(wr, Fmt.LongReal(aFactor*bid.pv.price));
Wr.PutChar(wr, ' ');
Wr.PutText(wr, Fmt.LongReal(FLOAT(bid.pv.volume,LONGREAL)/aFactor));
Wr.PutChar(wr, ' ');
Wr.PutText(wr, Fmt.LongReal(aFactor*ask.pv.price));
Wr.PutChar(wr, ' ');
Wr.PutText(wr, Fmt.LongReal(FLOAT(ask.pv.volume,LONGREAL)/aFactor));
Wr.PutChar(wr, '\n')
END DumpOne;
CONST
NoTime = FIRST(Time.T);
VAR
wr := FileWr.Open(odir & "/" & tr.ticker);
tp, bp, ap := 0;
ttime, btime, atime := NoTime;
aFactor : LONGREAL := 1.0d0;
BEGIN
WHILE tp < trades.size() AND bp < bids.size() AND ap < asks.size() DO
IF ttime = NoTime THEN ttime := trades.get(tp).time END;
IF btime = NoTime THEN btime := bids.get(bp).time END;
IF atime = NoTime THEN atime := asks.get(ap).time END;
IF ttime = btime AND btime = atime THEN
DumpOne(trades.get(tp),bids.get(bp),asks.get(ap));
INC(tp); INC(bp); INC(ap);
ttime := NoTime; btime := NoTime; atime := NoTime
ELSIF ttime < btime OR ttime < atime THEN
INC(tp); ttime := NoTime
ELSIF btime < atime OR btime < ttime THEN
INC(bp); btime := NoTime
ELSIF atime < btime OR atime < ttime THEN
INC(ap); atime := NoTime
END
END;
Wr.Close(wr)
END DumpMatching;
Miika
More information about the M3devel
mailing list