У меня есть следующий код C:
int main(){
int array[10];
array[0] = 1;
int a;
a = 1;
return 0;
}
Для следующего кода я получаю следующий IR LLVM:
define dso_local i32 @main() #0 {
%1 = alloca i32, align 4
%2 = alloca [10 x i32], align 16
%3 = alloca i32, align 4
store i32 0, i32* %1, align 4
%4 = getelementptr inbound [10 x i32], [10 x i32]* %2, i64 0, i64 0
store i32 1, i32* %4, align 16
store i32 1, i32* %3, align 4
ret i32 0
}
Теперь я пишу проход, который считается только store
работа с массивами. Теперь, если мы проверим строку 6 store i32 i, i32* %4, align 16
, мы увидим, что %4
указывает на другой Instruction
, который мы можем проверить, относится к типу массива со следующим if(auto *Ai = dyn_cast<AllocaInst>(value))
. У меня вопрос: как я могу получить это Instruction
, если увижу, что Instruction
относится к типу store
? В принципе, как получить Instruction %4
?