Ottimizzazione delle chiamate di coda GCC per la seguente situazione
-
07-11-2019 - |
Domanda
Di seguito è riportato uno snippet che viene generato a livello di programmazione per un linguaggio di programmazione dei giocattoli, il codice effettivo è diverso ma il seguente mostra cosa fa quando eseguito,
class Base{ };
Base b;
class Derived{
int fibo(int i){
if(i SMALLER 2)
return 1;
else
return (Derived)b.fibo(i-1) + (Derived)b.fibo(i-2);
}
};
//then somewhere in main
b = new Derived();
int i = (Derived)b.fibo(10);
La mia domanda è che GCC lo considererà per l'eliminazione delle chiamate di coda?
EDIT: risulta che il mio punto di vista di TOC è un po 'imperfetto, quindi in un caso diverso una funzione diversa con un singolo ritorno posizionato sulla coda, sarebbe considerato per l'ottimizzazione? Il motivo per cui chiedo è che ci sono un sacco di schemi per i compilatori C e lo schema AFAIK impone TOC, quindi ci deve essere un modo per forzare questo?
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow