c++ - 获取 LLVM 类型/“取消引用”类型的大小
问题描述
这个问题与这个问题非常相似,但我不确定如何在以下情况下获得大小:
我有一个指针类型,例如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
传递给函数的类型总是指针类型)
解决方案
推荐阅读
- javascript - 如何缩放网站以使其对所有视口显示相同的可见区域?
- ios - SwiftUI Circle 线宽更改停止修剪动画
- javascript - 无法使用 javascript classList 在选择选项中添加或更改类
- reactjs - 使用 POST 时的 Axios 代理不起作用
- c# - 如何将 TimeSpan 乘以百分比
- sql-server - 存储过程重复插入相同的记录,而不是从 SELECT 循环遍历列表
- typescript - 在 Typescript 中重载类类型定义
- pandas - 如何删除列中的重复值但保留与一行中其他列相对应的唯一值?
- reactjs - 当我多次单击选项卡时,后退按钮无法正常工作
- visual-studio-code - 我的 VS 代码出错了(图形故障)