Извлечение структуры высокого уровня CFG из LLVM-IR - PullRequest
0 голосов
/ 21 февраля 2019

Один из моих текущих проектов нуждается в преобразовании некоторого примера IR LLVM обратно в C-код без использования операторов goto и слишком большого количества избыточных переменных.Я знаю, что преобразование LLVM обратно в C не рекомендуется, но это самый быстрый способ в моем проекте, учитывая бюджет времени.

C-бэкэнд LLVM, такой как https://github.com/JuliaComputing/llvm-cbe, обычно генерирует код ac со многими операторами goto.Поэтому мне интересно, не потому ли это, что CFG в LLVM не так структурирован, то есть серверная часть не знает, когда объединяется выбор (если-еще).

Я нашел проход под названием StructurizeCFG, который приносит множество переменных bool и фи-узлов, что может быть не лучшим вариантом для меня.

Так что мой вопрос в том, есть ли какие-нибудь способы извлечь высокоуровневый CFG (цикл-слияние, выбор-слияние и т. Д.) Из LLVM-IR?

...