我想獲取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是一個全球性的