2012-12-19 6 views
11

Beim Profiling eines Programms mit gcc kompiliert, bemerkte ich Funktionen wie foo.isra.3. Was bedeutet isra? Ich stelle fest, dass eine der Funktionen nur an wenigen Stellen aufgerufen wird und eines der Argumente immer als Literal angegeben wird. Vielleicht bedeutet es, dass es sich um eine für bestimmte Argumente optimierte Variante der Funktion handelt.Was bedeutet das GCC-Funktionssuffix "isra"?

Antwort

16

Nach einem Kommentar zu this bug report (und ähnlichen Kommentaren, die ich finden konnte):

ISRA ist der Name der Variablen, die von IPA SRA ...

IPA SRA erstellt werden, ist ein optimization option:

-fipa-sra

Führen Sie den interprozeduralen skalaren Ersatz der Aggregate durch, entfernen Sie die unbenutzten Parameter und ersetzen Sie die Parameter, die durch die Referenz von den Parametern übergeben sind, die vom Wert übergeben sind.

auf einem Niveau -O2, O3 und -Os aktiviert.

Also wahrscheinlich ist es eine Version einer Funktion mit diesen Optimierungen.

In dem Fall, dass Sie erwähnt haben, ist es möglich, dass es einen Pass-by-Reference durch einen Pass-by-Wert ersetzt, da es keinen Sinn hat, ein Literal als Referenz zu übergeben.