MinCamlのバグ
http://blog.livedoor.jp/azounoman/archives/50392600.html
鋭い。場当たり的に直すのは簡単そうだが(おそらくNot_foundならSaveがいらない)「きれい」に修正するにはどうすべきか考え中。発見&報告多謝。
ちなみにオリジナルのregAlloc.ml(regAlloc.target-earlyspill.ml)ではノープロブレム…のはず。
追記:例によってSourceForgeのCVSサーバが落ちてるっぽいので、とりあえず直したつもりのコード。よく見たら元のコードは単に大ボケでした(TeXとPDFの擬似コードも)。どうもすみません。regAlloc.target-latespill.mlの105行目あたりから。
| Spill(y) -> let r = M.find y regenv1 in let (e2', regenv2) = g dest cont (add x r (M.remove y regenv1)) e in let save = try Save(M.find y regenv, y) with Not_found -> Nop in (seq(save, concat e1' (r, t) e2'), regenv2) | Alloc(r) ->