/ / LLVM: Премахнете задните ръбове от бримките във функция - loops, llvm

LLVM: Отстранете задните ръбове от контурите във функцията - контури, lvvm


Имам разгърнати контури във файла a.bc използвайки следната команда:
opt -loops -loop-rotate -loop-simplify -loop-unroll -unroll-count=3 -unroll-allow-partial -debug a.bc -o a.loop.bc
Сега, трябваше да премахна задните ръбове от всички бримки във функция, да речем F, Мислех да създам пропуск llvm, който ще намери блока за излизане от цикъла (предполагам само 1 изходен блок) и след това да заменя задната страна с ръб към изходния блок на всеки цикъл.
Има ли пряк начин да го направите?

Отговори:

0 за отговор № 1

Така че, ако не се лъжа, искате да имате уникаленизходен блок за всички бримки? ако всичките ви контури имат постоянен брой на пътуванията, тогава няма изходен блок в изходните блокове и затова е доста лесно да ги свържете, иначе има някои изходни фи възли, тогава трябва да ги реконструирате, за да запазите доминиращото свойство на SSA , което може да не е направо напред, можете да намерите различни методи за това в глава 5 на тази книга (можете да изтеглите книгата): SSA книга