如何检查两个 GEP 指令在语义上是否相等?
How can I check if two GEP instructions are semantically equal or not?
我有两个如下所示的 GEP 指令:
%size = getelementptr inbounds %struct.ArrayInfo, %struct.ArrayInfo* %0, i32 0, i32 0
...
%size = getelementptr inbounds %struct.ArrayInfo, %struct.ArrayInfo* %1, i32 0, i32 0
这两个本质上访问的是同一个结构字段。有没有办法检查这两条指令在 llvm 中是否等效?我尝试比较 GEPOperator (GEPOperator*) 的指针,但看起来它们是不同的。
尝试isSameOperationAs()。如果您将示例中的两个 size
变量都转换为 llvm::Instruction
并在其中一个上调用此方法并将另一个作为参数,您将获得一个 true
值。
我有两个如下所示的 GEP 指令:
%size = getelementptr inbounds %struct.ArrayInfo, %struct.ArrayInfo* %0, i32 0, i32 0
...
%size = getelementptr inbounds %struct.ArrayInfo, %struct.ArrayInfo* %1, i32 0, i32 0
这两个本质上访问的是同一个结构字段。有没有办法检查这两条指令在 llvm 中是否等效?我尝试比较 GEPOperator (GEPOperator*) 的指针,但看起来它们是不同的。
尝试isSameOperationAs()。如果您将示例中的两个 size
变量都转换为 llvm::Instruction
并在其中一个上调用此方法并将另一个作为参数,您将获得一个 true
值。