这个问题与这个问题非常相似,但我不确定如何在以下情况下获得大小:
我有一个指针类型,例如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
传递给函数的类型总是指针类型)