Assembly LLVM分支指令:源中的if语句或循环?

Assembly LLVM分支指令:源中的if语句或循环?,assembly,llvm,compiler-optimization,llvm-ir,Assembly,Llvm,Compiler Optimization,Llvm Ir,对于LLVM IR中的条件分支指令(作为基本块的终止符),我想确定它是对应于源代码中的循环还是if语句。有没有办法对此进行分析?从概念上讲,分支前向是“if语句”,分支后向是循环。然而,这可能隐藏在某些复杂性背后,例如前端可能会创建一个有条件的前向分支,从而导致一个无条件的后向分支,因此总体上是一个循环 如果您想确定,请使用调试信息生成IR,然后使用该信息(特别是行号)来理解原始代码是什么。从概念上讲,向前分支是“If语句”,向后分支是循环。然而,这可能隐藏在某些复杂性背后,例如前端可能会创建一

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

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


如果您想确定,请使用调试信息生成IR,然后使用该信息(特别是行号)来理解原始代码是什么。

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


如果您想确定,请使用调试信息生成IR,然后使用该信息(特别是行号)来理解原始代码是什么。

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