LLVM:如何在循环展开后检查字节码中是否没有循环

时间:2017-02-02 14:33:09

标签: loops llvm llvm-clang loop-unrolling control-flow-graph

我有很多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,将结果解析为控制流图,然后检查是否存在任何循环。

但是,我想避免重新发明轮子,并使用现有的命令行工具。

问:您是否可以为我指出其中一种工具,以及如何使用它?

0 个答案:

没有答案