Извлечение циклов в llvm-биткоде из функций / модулей - PullRequest
0 голосов
/ 14 декабря 2018

Можно ли извлечь из битового кода llvm цикл (ы) внутри функции или модуля? Я переношу LLVM LoopPass в независимое приложение для чтения / записи битового кода.Основной причиной миграции являются трудности отладки опционных проходов, но есть и другие причины.Я искал API Function / Module / BasicBlock, но не смог найти ничего близкого. Поскольку LoopPass делает это точно, я уверен, что это возможно, верно? Я имею в виду что-то вроде этого:

Function f;
for (auto loop = f.getLoops().begin(); loop != f.getLoops().end(); loop++)
{
    // process loop here
}

1 Ответ

0 голосов
/ 14 декабря 2018

То, что вы хотите, называется LoopInfo , и вы создаете это через дерево доминаторов:

DominatorTree dt(function);
LoopInfo li(dt);
for(Instruction * foo : bar) {
  Loop * l = li.getLoopFor(foo->getParent());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...