メモ

  • runtime.ll は現在 1164 行。コンパイルして最適化して disassemble すると 621 行になった。コンスセルとかを表示するためのそこそこ長くて冗長な関数 display_obj が400行から100行と最適化されているなどが大きいようだ。
  • よくみると最適化がスゴいというより自作のコンパイラが出力するコードが単にどんくさいだけ。
  • 自分では'br' しか使っていないのに、一度も書いたことの無い(そして理解していない) switch インストラクションが勝手に使われていてビビる。
  • せっかく "sub i32 %arg1, 4" などと減算命令を出力しているのに、最適化で "add i32 %arg1, -4" になっている。