【问题标题】:LLVM branch instruction: if statement or loop in the source?LLVM 分支指令:源中的 if 语句或循环?
【发布时间】:2016-03-24 15:53:00
【问题描述】:

对于 LLVM IR 中的条件分支指令(作为基本块的终止符),我想确定它是对应于 源代码 中的循环还是 if 语句。有没有办法分析这个?

【问题讨论】:

  • 在处理 LLVM IR 时不一定有源代码的概念。你在谈论例如从 C 或 C++ 代码由 clang 生成的 IR?
  • 是的!这就是我的意思(IR 由 C 的 clang 生成)。

标签: assembly llvm compiler-optimization llvm-ir


【解决方案1】:

从概念上讲,向前分支是“if 语句”,向后分支是循环。然而,这可能隐藏在一些复杂性背后,例如前端可能会创建一个向前的条件分支,这会导致向后的无条件分支,因此总体上是一个循环。

如果您想确定,请生成带有调试信息的 IR,然后使用该信息(尤其是行号)来了解原始代码是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-18
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多