比较 LLVM 值的类型
Compare Types of LLVM values
我正在尝试比较 llvm 类型和类型*。我正在使用 LLVM C API。有没有可能的方法来做到这一点?
我有 Type* 因为我使用 LLVMTypeOf api 从 LLVM 值中获取类型。因此,如果我可以从值 中获取 Type,它也可以解决问题。
类型在 LLVM 世界中是独一无二的,因此您可以比较它们的地址。
您可以直接比较两个值的LLVM类型。例如见:
llvm/lib/Analysis/BasicAliasAnalysis.cpp:967
GEP1->getPointerOperandType() == GEP2->getPointerOperandType() &&
为了清楚起见,并使用适当的 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 C API。有没有可能的方法来做到这一点?
我有 Type* 因为我使用 LLVMTypeOf api 从 LLVM 值中获取类型。因此,如果我可以从值 中获取 Type,它也可以解决问题。
类型在 LLVM 世界中是独一无二的,因此您可以比较它们的地址。
您可以直接比较两个值的LLVM类型。例如见:
llvm/lib/Analysis/BasicAliasAnalysis.cpp:967
GEP1->getPointerOperandType() == GEP2->getPointerOperandType() &&
为了清楚起见,并使用适当的 llvm-c
代码示例扩展先前的答案,您只需比较两个 LLVMTypeRef
,就像比较任意两个指针以检查它们是否相等一样。
LLVMTypeRef type1 = whatever1(); // e.g. LLVMTypeOf(...)
LLVMTypeRef type2 = whatever2(); // e.g. LLVMDoubleType()
if (type1 == type2)
{
// the two types are equal
}