我正在使用LLVM C api编写一些C代码。我需要检查一个指令值是int类型还是指针类型。我尝试做的是使用LLVMTypeOf(LLVMValueRef val),看看它是否等于所有不同类型的int:LLVMInt1Type(),LLVMInt8Type(),LLVMInt16Type(),等等。我不知道如何判断它是否是指针类型,我想我用来判断它是否是整数类型的方法也不起作用。
下面是我一直在引用的接口:http://llvm.org/doxygen/modules.html
发布于 2012-11-22 17:20:43
C API是非常有限的。
我认为您必须自己使用C++ API或将C++ API包装为C API。
例如,
extern "C" int LLVMTypeIsPointerTy(LLVMTypeRef ty){
return ((llvm::Type*)ty)->isPointerTy();
}发布于 2014-12-03 23:26:56
在c中,您可以使用LLVMGetTypeKind和LLVMTypeOf来确定它的类型。
对于整数类型,可以使用以下命令进行检查:
if(LLVMGetTypeKind(LLVMTypeOf(LLVMValueRef val))==LLVMIntegerTypeKind)对于指针类型,您可以使用以下命令进行检查:
if(LLVMGetTypeKind(LLVMTypeOf(LLVMValueRef val))==LLVMPointerTypeKind)枚举引用:LLVMTypeKind
https://stackoverflow.com/questions/13455155
复制相似问题