При профилировании программы, скомпилированной с помощью gcc, я заметил такие функции, как foo.isra.3
. Что указывает isra
? Я замечаю, что одна из функций вызывается только в нескольких местах, и один из аргументов всегда указывается как буквальное значение. Может быть, это означает, что это вариант функции, оптимизированной для определенных аргументов?
Что означает суффикс функции GCC "isra"?
Ответ 1
В соответствии с комментарием этот отчет об ошибке (и аналогичные комментарии, которые я мог найти):
ISRA - это имя переменной, которая создается с помощью IPA SRA...
IPA SRA является опцией :
-fipa-SRA
Выполнять межпроцедурную скалярную замену агрегатов, удаление неиспользуемых параметров и замену параметров, переданных по ссылке, по параметрам, переданным по значению.
Включено на уровнях -O2, -O3 и -Os.
Скорее всего, это версия функции с этими оптимизациями.
В случае, о котором вы упомянули, возможно, что он заменяет pass-by-reference на pass-by-value, поскольку он не знает, что не нужно передавать литерал по ссылке.