2012-12-19 34 views
11

Durante la creazione di profili di un programma compilato con gcc, ho notato funzioni come foo.isra.3. Cosa indica isra? Ho notato che una delle funzioni viene chiamata solo in alcuni punti e uno degli argomenti viene sempre specificato come valore letterale. Forse significa che è una variante della funzione ottimizzata per determinati argomenti?Cosa significa "isra" per la funzione GCC?

risposta

16

Secondo un commento su this bug report (e simili commenti che ho potuto trovare):

ISRA è il nome della variabile che viene creato da IPA SRA ...

IPA SRA è un optimization option:

-fipa-sra

Eseguire la sostituzione scalare interprocedurale degli aggregati, la rimozione dei parametri non utilizzati e la sostituzione dei parametri passati per riferimento tramite i parametri passati per valore.

Abilitato a livelli -O2, -O3 e -Os.

Quindi molto probabilmente, è una versione di una funzione con tali ottimizzazioni.

Nel caso che hai menzionato, è possibile che stia sostituendo un pass-by-reference con un pass-by-value poiché sa che non ha senso passare un letterale per riferimento.

Problemi correlati