Я пишу оптимізатор для мови, схожої на JavaScript, і потрібно вибрати проміжне представлення коду. Очевидним / типовим вибором в наші дні є статичне одиночне призначення (SSA).
Однак реалізація сучасного компілятора в C також обговорює функціональну проміжну форму, що в основному означає функціонування чистого функціоналу для проміжного представлення (чисте з точки зору лише локальних змінних, дані купи все ще змінюються, а не CPS, просто прямі let
блоки та виклики хвоста) та має деякі переваги з точки зору того, що простіше міркувати.
Імовірно, це не безпроблемна людина, або кожен би вже використовував таке представлення, тому моє питання полягає в тому, які недоліки має функціональна проміжна форма порівняно з SSA?