如何识别LLVM bitcode中的循环?

时间:2017-11-11 21:01:22

标签: c++ assembly llvm

我有一个LLVM bitcode文件,我正在运行循环传递。每当我到达一个循环(" runOnLoop")时,我会提取有关循环体的几条信息(即正文中的指令数)并打印出来。但是,我需要一种方法将此信息与特定循环相关联 - 换句话说,我需要打印" name"从中提取信息的循环。

1 个答案:

答案 0 :(得分:1)

我不确定" name"的含义,但一种方法是打印与循环锁存块或类似内容相关的调试信息(行号/列)。

另一种方法是使用元数据来唯一标识每个循环,并将提取的信息与该标识符相关联。

我也有类似的需求,所以我为此创建了一个android:inputType。请注意,此方法对编译器优化很敏感,并且在发生这种情况时不会保留ID(例如,如果包含循环的函数是内联的)。为了获得最佳结果(离源更近),请使用已使用-O0编译的IR。此外,当您完成信息收集后,可以在之后应用优化。

但是,对于简单的事情,我会采用第一种方法。