Ottimizzazioni del compilatore prima della fase IR / CFG

3

Comprendo le ottimizzazioni del CFG (Control-Flow Graph) e in genere operano su SSA Intermediate Representations (IR). Mi chiedo però se il compilatore ottimizza l'AST in qualsiasi modo prima dell'IR, o fa qualche ottimizzazione prima della fase IR / CFG.

    
posta Lance Pollard 29.04.2018 - 22:42
fonte

1 risposta

4

Sì, la piegatura costante è un esempio di ottimizzazione che può essere eseguita molto presto, possibilmente anche nelle funzioni di costruzione del nodo AST. D'altra parte, l'esecuzione di un piegamento costante sull'AST potrebbe non essere auspicabile se ciò risultasse dannoso per i messaggi di errore. Alcuni linguaggi (ad es. Java) non possono eseguire il piegamento costante nella fase sintattica in quanto devono essere in grado di risolvere determinate variabili.

Esiste, naturalmente, un'enorme varietà di architetture di compilazione. LLVM con molti passaggi che utilizzano tutti lo stesso IR è una variante estrema, penso che GCC usi più IR in diverse fasi. All'altro estremo sarebbe la VM Perl, che usa le sue strutture opcode sia come AST che come bytecode.

    
risposta data 29.04.2018 - 23:41
fonte

Leggi altre domande sui tag