我正在尝试比较一个LLVM类型和一个Type*。我正在使用LLVM C API。有没有可能的方法可以做到这一点?
我有一个Type*,因为我使用了LLVMTypeOf API从LLVM值中获取类型。所以如果我可以从一个值中获取类型,那么它也会解决这个问题。
在LLVM世界中,类型是独一无二的,因此您可以比较它们的地址。
llvm-c
代码示例,您可以像比较任何两个指针一样比较两个LLVMTypeRef
以检查它们是否相等。LLVMTypeRef type1 = whatever1(); // e.g. LLVMTypeOf(...)
LLVMTypeRef type2 = whatever2(); // e.g. LLVMDoubleType()
if (type1 == type2)
{
// the two types are equal
}
您可以直接比较两个值的LLVM类型。例如:
llvm/lib/Analysis/BasicAliasAnalysis.cpp:967
GEP1->getPointerOperandType() == GEP2->getPointerOperandType() &&
LLVMTypeRef LLVMTypeOf(LLVMValueRef Val)
函数,通过传递一个Type
类型的对象来获取类型。另一种方法是使用LLVMTypeRef LLVMGetTypeByName(LLVMModuleRef M, const char *Name);
函数,通过传递Type*
的名称来获取类型。 - A. K.