首页 > 解决方案 > 在 LLVM 中检测整数比较条件

问题描述

#include <stdio.h>
#include <string.h>

int main (){
    unsigned short int a = 10;
    if (a == 10){
     //something
    }
}

在 LLVM 传递中,我将如何检测 2 个操作数整数比较条件语句,如上图所示:(a == 10)?请让我知道我应该在 LLVM api 中寻找什么。

标签: c++llvmllvm-clangllvm-irllvm-c++-api

解决方案


你所拥有的是一个ICmpInst,它的操作数是整数。由于两个操作数必须具有相同的类型,isa<ICmpInst>(foo) && isa<IntegerType>(foo->getOperand(0))因此足以识别特定指令是否是您要检测的类型。


推荐阅读