Я новичок в работе с бэкэндом LLVM. У меня есть проход X86, на котором я отмечаю некоторые машинные инструкции, а затем хочу найти зависимые от данных инструкции отмеченных инструкций. Под зависимостью от данных я подразумеваю пользователей инструкций (например, цепочки def-use). Для этого на уровне IR я использовал такой код:
for (auto it = marked_instructions.begin(), eit = marked_instructions.end(); it != eit; it++)
{
for (User *U : (*it)->users())
{
if (Instruction *Inst = dyn_cast<Instruction>(U))
{
dependent_instructions.insert(Inst);
}
}
}
Теперь я хочу сделать то же самое на бэкэнде и с MachineInstr
s. Кроме того, мой пропуск в настоящее время имеет место после распределения регистра. Тем не менее, нет никаких ограничений для выполнения этого перед распределением регистров, если легче найти цепочки def-use до распределения регистров.
Спасибо