Sto scrivendo un ottimizzatore per una lingua simile a JavaScript e devo scegliere una rappresentazione di codice intermedio. La scelta ovvia / tipica in questi giorni è Assegnazione singola statica (SSA).
Tuttavia, l'implementazione del compilatore moderno in C discute anche della forma intermedia funzionale, che fondamentalmente significa diventare pura funzione per la rappresentazione intermedia (pura in termini solo di variabili locali, i dati dell'heap sono ancora mutevoli, e non CPS, semplicemente let
blocchi e chiamate tail) e presenta alcuni vantaggi in termini di facilità di ragionamento.
Presumibilmente non è un gioco da ragazzi o tutti useranno già una tale rappresentazione, quindi la mia domanda è: quali svantaggi ha la forma intermedia funzionale rispetto a SSA?