Получение минимального SSA из LLVM

Проход LLVM opt -S -mem2reg создает так называемый «обрезанный» SSA - форма, в которой удалены все мертвые функции phi. Я хотел бы сохранить эти инструкции phi в IR, получив "минимальный" SSA, но я не могу найти простой способ сделать это.

Обречен ли я реализовать весь алгоритм построения SSA с нуля или есть способ сделать это с помощью существующих инструментов?


person Kostya    schedule 16.08.2015    source источник
comment
Гм. Вы говорите о -reg2mem, обратном -mem2reg?   -  person arrowd    schedule 20.08.2015


Ответы (1)


LLVM не поддерживает формирование чего-либо, кроме сокращенной формы SSA, и вряд ли вырастет такой механизм. Мы буквально даже не делаем работу по обобщению этой информации при размещении фи.

person Chandler Carruth    schedule 31.05.2016
comment
LLVM, похоже, даже не имеет механизма для построения SSA. Этап mem2reg сочетает в себе построение SSA с некоторыми другими оптимизациями, по крайней мере, с распространением копий, возможно, даже с локальной нумерацией значений. Итак, для тех, кто изучает SSA и его построение, LLVM - не лучший выбор. - person pfalcon; 28.07.2019