0fc0faef08
Because of the accidental deletion, mcgg on my machine followed a garbage pointer, and never wrote calls to emit_fragment. A wrong call to `data->emit_reg(0, 0)` instead of the correct `data->emit_fragment(0)` caused PowerPC mcg to emit an empty string instead of `8(fp)`, causing a syntax error in PowerPC as. The wrong `data->emit_reg(0, 0)` called the function emit_reg() in mach/proto/mcg/pass_instructionselection.c, but that function unfortunately has `if (vreg) { ... }`. The call had vreg == NULL because the fragment wasn't a vreg, but emit_reg() ignored the problem and emit nothing. |
||
---|---|---|
.. | ||
build.lua | ||
gram.y | ||
iburg.c | ||
iburg.h | ||
ir.dat | ||
ircodes.h | ||
ircodes.sh | ||
LICENSE | ||
mcgg.h | ||
README | ||
scan.l | ||
UPSTREAM |
mcgg is very heavily based on the iburg code generator by C. W. Fraser, D. R. Hanson and T. A. Proebsting, described in ACM Letters on Prog. Languages and Systems 1, 3 (Sep. 1992), 213-226: http://storage.webhop.net/documents/iburg.pdf For the original source, see the iburg-import branch (this is the version with all the mcgg extensions). iburg is licensed under the MIT open source license; see the LICENSE file.