GCC函数后缀"isra"是什么意思?

z0r*_*z0r 13 gcc profiling name-mangling

在分析用gcc编译的程序时,我注意到了像foo.isra.3.有什么isra表明?我注意到其中一个函数只在几个地方调用,其中一个参数总是指定为文字值.也许这意味着它是针对某些参数优化的函数的变体?

Rei*_*ica 21

根据对此错误报告的评论(以及我能找到的类似评论):

ISRA是由IPA SRA创建的变量的名称...

IPA SRA是一个优化选项:

-fipa-SRA

执行过程的标量替换聚合,删除未使用的参数以及通过值传递的参数替换参考传递的参数.

在-O2,-O3和-Os级别启用.

所以很有可能,它是具有这些优化的函数的一个版本.

在你提到的情况下,它有可能用pass-by-value替换pass-by-reference,因为它知道通过引用传递文字是没有意义的.