Я хочу найти каждую инструкцию, которая выделяет память в LLVM IR. Для распределения стека я просто делаю:LLVM Найти каждую инструкцию, которая выделяет память
Instruction* I;
if (AllocaInst* AI = dyn_cast<AllocaInst>(I)) {
//stack allocation
}
Но как насчет кучи и статических (глобальных) распределений? Что еще может выделить память в LLVM IR?
Если версия LLVM имеет значение, предоставьте версию, на которую вы ссылаетесь.
Нет смысла вкладывать все это, если вы можете непосредственно выполнить внутренний тест в инструкции. Также вы должны просто найти вызовы и проверить, является ли имя вызываемой функции malloc. – Joky
Спасибо за исправление, я внес соответствующие изменения. Проверка имени функции недостаточно, проверка «MemSetIntrinsic» является более общим способом. – DTharun
Malloc не является внутренним, класс «MemSetIntrinsic» обертывает внутренний llvm.memset, который не выделяет память (как задал оп). – Joky