[ssa] [проверка на эквивалентность]
Максим Иванов
bipsqwake42 at gmail.com
Mon Apr 9 01:57:32 MSK 2018
Залил набросанную пока что на коленке проверку на эквивалентность двух
ssa-форм.
Работает вкратце так:
Исходим из предположения, что исходная форма верна. Проверям, что ни одно
из имён в проверяемой не инициализируется дважды.
Затем для каждого блока сравниваем фи функции:
Строим набор фи функций для исходной формы, затем проходим по всем фи в
проверяемой, и если в наборе из исходной не нашлось эквивалентной фи, то
возвращаем false, иначе удаляем совпавшую. Если после этого список из
исходной не пуст, возвращаем false. Проверка на эквивалентность фи -
следующим образом: строим набор аргументов фи функции их исходной формы.
Затем строим набор переменных, переведённых из имён проверяемой формы в
исходную. Перевод осуществляется следующим образом - смотрим в блок, где
переменная из проверяемой формы, ищем первую инструкцию, в которой
инициализируется эта переменная, затем берём ту же по счёту инструкцию из
исходной формы (Здесь, кажется, не очень красиво, надо потестить этот
момент).
Заранее говорю, что не претендую на верность. Думаю, требует доработки, но
хоть что-то.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://compilers.ispras.ru/pipermail/ssa/attachments/20180409/45c034ec/attachment.html>
More information about the ssa
mailing list