bugpointを使ってみたよ

2021年1月7日木曜日

llvm

t f B! P L
前回、前々回とC-Reduceを使って、ここまで削れました。

$ ls -l test2.cc*
-rw-r--r-- 1 jam jam 1180 Dec 27 10:41 test2.cc
$ clang -O3 -fvectorize ... -S -emit-llvm test2.cc
$ ls -l test2.ll
-rw-r--r-- 1 jam jam 8500 Dec 27 11:04 test2.ll
$ wc test2.ll
136 981 8500 test2.ll

しかし、ビットコードで見るとまだ大きいので、これをbugpointで削ります。

$ cp test2.ll test3.ll
$ bugpoint --compile-custom --compile-command=./test3.sh test3.ll
...
Emitted bitcode to 'bugpoint-reduced-simplified.bc'
$ llvm-dis bugpoint-reduced-simplified.bc -o test3-reduced.ll
$ ls -l test3*.ll
-rw-r--r-- 1 jam jam 893 Dec 27 11:40 test3-reduced.ll
-rw-r--r-- 1 jam jam 8500 Dec 27 11:10 test3.ll
$ wc test3*.ll
24 100 893 test3-reduced.ll
136 981 8500 test3.ll
160 1081 9393 total

これでデバッグが本当に楽になります。何故俺はこれまでC-Reduceとbugpointを使っていなかったのか・・・。

ちなみに、test3.shは以下の通りです。C-Reduceと違い、bugpointのスクリプトは探索対象の場合0以外を返すため、!は必要ありません。

$ cat test3.sh
#!/bin/bash
llc -mtriple XX "$@"

ラベル

AndroidTV (1) chromebook (2) DIY (4) docker (1) git (4) Ingress (4) llvm (3) MacBook (1) MVNO (1) narou (1) PS4 (2) QNAPNAS (9) SIMD (9) SmartBand (8) Ubuntu (9) VAIO (1) Windows (2) wsl (2) wsl2 (1) Xperia (20) トルネ (3) プログラム (26) ルーター (18) 音楽 (6) 家事 (2) 自炊 (2) 電子書籍 (2) 洋食 (4)

フォロワー

QooQ