OtakuAssembly Vol.2 第一章『データフロー最適化の実装』サンプル実装
OtakuAssembly Vol.2 | OtakuAssembly Vol.2 電子版 |
---|---|
usage: oir [options]
-i input_file (default: "-")
-f input_format (default: "text")
-o output_file (default: "-")
-g output_format (default: "text")
-p passes (default: "reach,prop,available,cse,live,dce")
-l number_of_loops (default: "1")
-h help (default: "false")
oir
は入力のOIRに解析や最適化を施して出力するプログラムです。-o
と-i
でそれぞれ出力と入力ファイルを指定できます。指定しない場合は標準入出力がデフォルトで使われます。
-p
オプションで入力に施す解析や最適化とその順番をカンマ区切りで指定できます。さらに、-l
オプションで-p
で指定した手順を指定回数繰り返させることができます。
-g
オプションで出力の形式を指定できます。-g text
がデフォルトの形式です。-g json
で、解析結果を含めたOIRについてのほとんどの情報をJSON形式で出力します。-g graph
では、Graphvizのdot形式でOIRのCFGを出力します。出力したdot形式のファイルは、dot
コマンドでPDFや画像として見ることができます。
例えば、text/count.oir
にデッドコード削除を行った結果のOIRのCFGをcfg.pdf
に出力するには、次のようにします:
$ ./build/oir -i text/count.oir -g graph -p live,dce -o cfg.gv
$ dot -Tpdf -o cfg.pdf cfg.gv
$ make test.docker
OtakuAssembly Vol.2 第一章『データフロー最適化の実装』について、何か問題や誤植などを見つけた場合は当リポジトリのIssueにて対応いたします。正誤表はこのREADMEに掲載します。その他質問などございましたら、筆者coord_eまでお気軽にご連絡ください。