我想获取getelementptr指令引用的数组的名称。这似乎当阵列被索引到工作到在实际的C代码使用一个中间变量,像这样获取LLVM getelementptr的操作数名称
int a = 0;
i[a] = 3;
在这种情况下,出现以下位码
%arrayidx = getelementptr inbounds [2 x i32], [2 x i32]* @i, i64 0, i64 %idxprom
store i32 3, i32* %arrayidx, align 4
在这种情况下我可以遍历通过getelementptr指令的操作数 ,并通过第一个操作数的getName()方法找到数组(i)的名称。
但是,如果在源中,数组是指数直接作为这样,
i[0] = 3;
然后,产生位码是如下
store i32 3, i32* getelementptr inbounds ([2 x i32], [2 x i32]* @i, i64 0, i64 0), align 4
在这里,我不知道怎么走数组名称(i)来自位码。 存储指令的第二个操作数的类型设置为PointerTy。第二个操作数的包含类型是一个int。这两个都是预期的,因为操作数是i32 *。但是,在这种情况下,我不确定如何获取getelementptr指令的句柄来迭代操作数。
编辑:我应该指出,在阵列i是一个全球性的