如何识别 LLVM 位码中的循环
How do I identify a loop in LLVM bitcode?
我有一个LLVM位码文件,我正在对它运行循环传递。每次我到达一个循环("runOnLoop"(时,我都会提取有关循环体的几条信息(即主体中的指令数(并打印出来。但是,我需要一种方法将此信息与特定循环相关联 - 换句话说,我需要打印从中提取信息的循环的"名称"。
我不确定"名称"是什么意思,但一种方法是打印与环路锁存块或类似内容相关的调试信息(行号/列(。
另一种方法是使用元数据来唯一标识每个循环,并将提取的信息与该标识符相关联。
我也有类似的需求,所以我为此创建了一个通行证。请注意,此方法对编译器优化很敏感,并且在发生这种情况时不会保留 ID(例如,如果包含循环的函数是内联的(。为获得最佳结果(更接近源(,请在使用 -O0
编译的 IR 上使用它。此外,当您完成信息收集后,可以应用优化。
但是,对于简单的事情,我会选择第一种方法。
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- while循环中while循环的时间复杂度是多少
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 为什么在这个代码结束循环中没有得到结束
- 如何将 I->getType() 作为参数传递给 llvm 中的 CreateCall?
- 如何识别 LLVM 位码中的循环
- 标识LLVM中块的封闭循环
- 奇怪的 LLVM 在 For 循环中无符号到有符号的转换
- Apple LLVM 4.2 段错误使用基于范围的循环和引用