具有不同数组大小的 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

数组具有固定大小。 “可变数组大小”的数组本质上是一块内存。因此,您需要为此使用指针。如果在某个时候大小变成编译时常量,您可以位转换为数组类型。