我有很多C源代码文件,我想在其上执行某种类型的静态分析。首先,我需要删除控制流图中的任何循环,为此我使用以下one-liners:
~$ clang -emit-llvm -c file.c -o file.bc
~$ opt -Oz -mem2reg -simplifycfg -loops -lcssa -loop-rotate -loop-unroll \
-unroll-threshold=1000000000 -unroll-count=3000 file.bc -o target.bc
我想知道target.bc
中的结果字节码是否仍然包含一些循环,例如。因为无法用给定的参数展开它。
一种选择是使用llvm-dis
,将结果解析为控制流图,然后检查是否存在任何循环。
但是,我想避免重新发明轮子,并使用现有的命令行工具。
问:您是否可以为我指出其中一种工具,以及如何使用它?