我有许多 C 源代码文件,我想在这些文件上执行某种类型的静态分析。首先,我需要摆脱控制流图中的任何循环,为此我使用以下单行代码:
~$ 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
,将结果解析为控制流图,然后检查是否存在任何循环。
但是,我想避免重新发明轮子并使用现有的命令行工具。
问:您能指点我其中一个这样的工具,以及如何使用它吗?