具有不同数组大小的 LLVM ArrayType
LLVM ArrayType with varying array size
你好,我目前正在研究 LLVM IR,有一个问题。
我正在使用以下代码创建函数。
Function::Create(Ty, Linkage, "tile_load", mod);
这样做,我的函数类型 Ty 表示为:
FunctionType *Ty = FunctionType::get(Builder.getVoidTy(), params, false);
我的一个参数是一个数组,目前用 int32* 指向它。
params.push_back(Type::getInt32PtrTy(mod->getContext()));
我想用像 [10 * i32*]
这样的 ArrayType 来更改这部分,但数组大小不同。
我知道数组类型定义如下:
Type* I = IntegerType::getInt32Ty(mod->getContext());
auto num = 6;
ArrayType* arrayType = ArrayType::get(I, num);
但不知道如何制作大小可变的数组类型。
有人知道怎么做吗?
提前致谢。
jwlee
数组具有固定大小。 “可变数组大小”的数组本质上是一块内存。因此,您需要为此使用指针。如果在某个时候大小变成编译时常量,您可以位转换为数组类型。
你好,我目前正在研究 LLVM IR,有一个问题。
我正在使用以下代码创建函数。
Function::Create(Ty, Linkage, "tile_load", mod);
这样做,我的函数类型 Ty 表示为:
FunctionType *Ty = FunctionType::get(Builder.getVoidTy(), params, false);
我的一个参数是一个数组,目前用 int32* 指向它。
params.push_back(Type::getInt32PtrTy(mod->getContext()));
我想用像 [10 * i32*]
这样的 ArrayType 来更改这部分,但数组大小不同。
我知道数组类型定义如下:
Type* I = IntegerType::getInt32Ty(mod->getContext());
auto num = 6;
ArrayType* arrayType = ArrayType::get(I, num);
但不知道如何制作大小可变的数组类型。
有人知道怎么做吗?
提前致谢。
jwlee
数组具有固定大小。 “可变数组大小”的数组本质上是一块内存。因此,您需要为此使用指针。如果在某个时候大小变成编译时常量,您可以位转换为数组类型。