Vous vous demandez si quelqu'un connaît l'indicateur pour que gcc désactive les optimisations d'appels descendants. Fondamentalement, dans une optimisation de queue, gcc remplacera une trame de pile lorsque la valeur de retour d'une fonction appelée est transmise (via le retour) ou rien d'autre ne se produit dans la fonction.Comment désactiver les optimisations d'appels descendants dans gcc?
qui est, en
void main() {
foo();
}
void foo() {
bar();
}
void bar() {
/* at this point in code, the foo() stack frame no longer exists! */
}
Lorsque foo appelle bar, gcc émet un code qui remplace le cadre de pile pour foo, plutôt que d'ajouter un nouveau cadre de pile.
Mon entreprise dispose d'un dérouleur de pile qui peut imprimer une trace de pile à partir de n'importe quel point du code. l'optimisation du tailcall fait disparaître les cadres de pile, ce qui peut quelque peu perturber la trace de la pile.
Je compile pour x86-64 en utilisant gcc4.3.
Merci d'avance! P
juste. Merci! – pgod