0132ad413557471600278f581ab2575a015e0e77
Compiling okcatmov.fe's output crashed wcc386 hard enough to take DOSBox-X down with it -- "no byte handler for write to ffffffc", emulator exit 1, the whole suite lost rather than one case failing. `result catch fallback` in return position lowered to `((tmp = X), tmp.e ? fallback : tmp.v)`, and with a moved operand X is itself `(fe_live_x=0, x)`, so the compiler met a struct assignment whose right side was a comma expression. Lower it as statements, and clear a move flag on its own line rather than inside the assignment. Revert core=dynamic from the previous commit. It was about 5x faster and it is wrong: the recompiler loses abort()'s exit status, so a trapping program exits 0 and the M3 bounds cases stop reporting the trap they exist to prove. Checked against a compiler built under core=normal, so the fault is in running the generated program, not in building the compiler. Also fix the build cache: BUILD.BAT puts the Watcom binaries on PATH, and skipping it on a cache hit left the case commands without it, which silently changed how the trap programs terminated. Reproduce that line. Per milestone, warm cache: m1 2s, m2 5s, m3 20s, m4 7s, m5 6s, m6 14s, m7 11s. All green, 220 cases.
Description
doslang mirror
914 KiB
Languages
C
94.2%
Python
3%
Assembly
2%
JavaScript
0.6%