Svantaggi della forma intermedia funzionale


16

Sto scrivendo un ottimizzatore per un linguaggio simile a JavaScript e devo scegliere una rappresentazione di codice intermedia. La scelta ovvia / tipica in questi giorni è Static Single Assignment (SSA).

Tuttavia, l'implementazione moderna del compilatore in C discute anche della forma intermedia funzionale, il che significa sostanzialmente diventare funzionali per la rappresentazione intermedia (puri solo in termini di variabili locali, i dati dell'heap sono ancora mutabili e non CPS, solo letblocchi semplici e chiamate di coda) e presenta alcuni vantaggi in termini di facilità di ragionamento.

Presumibilmente non è un gioco da ragazzi o tutti già utilizzerebbero una tale rappresentazione, quindi la mia domanda è: quali svantaggi ha la forma intermedia funzionale rispetto all'SSA?


3
Che tipo di analisi farai su questa forma intermedia? SSA è ottimo per l'eliminazione del codice morto, la propagazione costante, la specializzazione parziale e così via. Se questo tipo di cose non è presente nel tuo menu, puoi saltare SSA e utilizzare una rappresentazione più rilassata per passaggi di analisi più semplici. Ma generare un modulo SSA è un'attività piuttosto banale e puoi facilmente convertire SSA in CPS (e viceversa), il che raddoppia i vantaggi.
SK-logic

Sì, sto mirando alla totalità, praticamente, e il linguaggio di input e il formato di output (inizialmente C ++) sono entrambi linguaggi imperativi.
rwallace,

La generazione di un modulo SSA è un'attività piuttosto banale e puoi facilmente convertire SSA in CPS, inoltre puoi convertire CPS in SSA, il che raddoppia i vantaggi.
Cardinale Leon Alexis,

Risposte:


1

SSA è ottimo per l'eliminazione del codice morto, la propagazione costante, la specializzazione parziale e così via. Se questo tipo di cose non è presente nel tuo menu, puoi saltare SSA e utilizzare una rappresentazione più rilassata per passaggi di analisi più semplici

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.