2012-12-19 17 views
11

Podczas profilowania programu skompilowanego za pomocą gcc zauważyłem funkcje takie jak foo.isra.3. Co oznacza isra? Zauważam, że jedna z funkcji jest wywoływana tylko w kilku miejscach, a jeden z argumentów jest zawsze podawany jako wartość literalna. Może to znaczy, że jest to wariant funkcji zoptymalizowanej pod kątem określonych argumentów?Co oznacza przyrostek funkcji GCC "isra"?

Odpowiedz

16

Według komentarzu this bug report (i podobnych uwag mogę znaleźć):

ISRA jest nazwą zmiennej, która zostanie stworzona przez IPA SRA ...

IPA SRA jest optimization option:

-fipa-sra

Wykonaj międzyprocesorową zamianę skalarną agregatów, usunięcie nieużywanych parametrów i zastąpienie parametrów przekazywanych przez odniesienie parametrami przekazywanymi przez wartość.

Włączone na poziomach -O2, -O3 i -Os.

Najprawdopodobniej jest to wersja funkcji z tymi optymalizacjami.

W przypadku, o którym wspomniałeś, możliwe jest, że zastępuje on referencję wartością przekażnika, ponieważ wie, że nie ma sensu przekazywać literału przez odniesienie.