如何创建 llvm 类型
how to create an llvm Type
我正在尝试创建具有 i8
目标类型的 TruncInst
。
但是,我 似乎找不到合适的类型构造函数
当我看 here。我希望它应该像这样简单:
if (val->getType()->isIntegerTy(32))
{
TruncInst *ti = new TruncInst(val,new IntegerType(8));
}
但显然不是。我可能没看过 API 中的某些内容。
非常感谢任何帮助,谢谢!
Type::getInt8Ty(getContext());
将为您获取一个类型,假设您有办法获取相关上下文。
您不能自己创建 IntegerType,因为 LLVM 的设计表明如果两种类型 t1 和 t2 相同(例如,两者都是 8 位整数类型)并且存在于相同的上下文中,那么 t1==t2
。许多 LLVM 代码期望使用 ==
.
来测试相等性
我正在尝试创建具有 i8
目标类型的 TruncInst
。
但是,我 似乎找不到合适的类型构造函数
当我看 here。我希望它应该像这样简单:
if (val->getType()->isIntegerTy(32))
{
TruncInst *ti = new TruncInst(val,new IntegerType(8));
}
但显然不是。我可能没看过 API 中的某些内容。 非常感谢任何帮助,谢谢!
Type::getInt8Ty(getContext());
将为您获取一个类型,假设您有办法获取相关上下文。
您不能自己创建 IntegerType,因为 LLVM 的设计表明如果两种类型 t1 和 t2 相同(例如,两者都是 8 位整数类型)并且存在于相同的上下文中,那么 t1==t2
。许多 LLVM 代码期望使用 ==
.