Iterator 在LLVM中迭代机器指令

Iterator 在LLVM中迭代机器指令,iterator,llvm,Iterator,Llvm,有没有一种不使用基本块就迭代机器指令的方法?可以在函数上下文中使用instr_迭代器执行简单指令,如下所示:,但是我没有发现MachineFunction的类似示例。请问您为什么要这样做?问题是什么,为什么不能使用基本块呢?对于使用同一寄存器的每2条指令,我想迭代它们之间的指令并检查一些东西。当使用基本块时,代码变得非常笨拙。这是有原因的。当两条指令位于不同的基本块中时,“中间”并不是一个简单的概念。LLVM提供支配分析;在我需要做的事情中,我认为“A和B之间”是由B支配的一组指令,这不是唯一可

有没有一种不使用基本块就迭代机器指令的方法?可以在函数上下文中使用instr_迭代器执行简单指令,如下所示:,但是我没有发现MachineFunction的类似示例。

请问您为什么要这样做?问题是什么,为什么不能使用基本块呢?对于使用同一寄存器的每2条指令,我想迭代它们之间的指令并检查一些东西。当使用基本块时,代码变得非常笨拙。这是有原因的。当两条指令位于不同的基本块中时,“中间”并不是一个简单的概念。LLVM提供支配分析;在我需要做的事情中,我认为“A和B之间”是由B支配的一组指令,这不是唯一可能的定义,它比你想要的更笨拙,但是随意跳跃,对简单性有一个较低的限制。如果一条指令由A控制,但由返回或抛出而不是由B控制,或者如果它由B和返回的集合控制,该怎么办。这些指令在汇编代码中发出时有一个顺序,这就是我要寻找的。同样,关于IR也可以这样说,但它允许对指令进行迭代