В среде компиляторщиков можно встретить утверждения в духе "SSA это функциональное программирование" и "в теории нет разницы между phi-функциями и базовыми блоками с параметрами". С инженерной же точки зрения различия, все-таки, имеются. В заметке ниже показан пример этих различий со сравнением императивного и функционального подходов к разработке компилятора:
http://blog.ezyang.com/2020/10/the-hidden-problem-with-basic-block-procedures-in-ssa/
Добавлю, что нельзя сказать, что одно из этих представлений в общем случае лучше, чем другое, с точки зрения вариантов проводимого анализа (см. также https://news.ycombinator.com/item?id=24872752 ). Но, в целом, можно отметить тенденцию использования базовых блоков с параметрами в высокоуровневых IR и для межпроцедурных преобразований, а phi-функций -- в низкоуровневых представлениях (вплоть до реализации мультиплексоров в описании генерируемой цифровой схемы).
#ssa
Post #61
791