もっともコンパイルが難しいのはif文である

ありがたいMinCaml解説サイトが更新されていたので返信してみる。ちなみに僕のMinCamlの経験を一言でまとめるとタイトル↑のとおりです。正確にいうと末尾でないif文というか、制御フローの合流が問題。一方でspillされて他方ではspillされていない変数とか、同じ変数が別々のレジスタに割り当てられているとか。僕が見た命令型言語のコンパイラの本では、そのためにdef-use chain (connectedな定義と使用のグラフ?)をレジスタ割り当ての単位として利用しまくっていました。