这个问题与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
始终是指针类型)