Я хотел бы найти способ определить, является ли операнд загрузки / хранения в LLVM IR адресом стека или адресом кучи в проходе LLVM (проход, закодированный в C ++), т.е.
if (inst is a store) {
if (inst->getOperand(1) is a heap address) {
// do something with the heap address
}
}
И действовать аналогично для нагрузок.Глядя в код IR, они ссылаются одинаково:
store i32 5, i32* %c, align 4 // storing value to a local variable
store i32 1, i32* %4, align 4 // storing value to something on the heap, do something with the heap address
Есть идеи?