获取LLVM类型/“取消引用”类型的大小

时间:2019-08-26 07:09:16

标签: c++ llvm llvm-ir llvm-c++-api llvm-codegen

这个问题与this one非常相似,但是我不确定在以下情况下如何获取大小:

我有一个指针类型,例如i32*

现在,我想获取“指向”类型的大小,所以i32(又名4)。

现在我正在使用以下代码,这似乎可行,但是我不确定它是否正确:

Value *get_size(Type *t, IRBuilder<>& irb)
{
    Value *sizePtr = irb.CreateGEP(t->getContainedType(0),
            irb.CreateIntToPtr(ConstantInt::get(irb.getInt8Ty(), 0), t),
            ConstantInt::get(irb.getInt8Ty(), 1));

    return irb.CreatePtrToInt(sizePtr, irb.getInt64Ty());
}

(注意:传递给函数的类型t始终是指针类型)

0 个答案:

没有答案