在分析用gcc编译的程序时,我注意到了像 foo.isra.3
。是什么 isra
表明?我注意到其中一个函数只在几个地方调用,其中一个参数总是指定为文字值。也许这意味着它是针对某些参数优化的函数的变体?
在分析用gcc编译的程序时,我注意到了像 foo.isra.3
。是什么 isra
表明?我注意到其中一个函数只在几个地方调用,其中一个参数总是指定为文字值。也许这意味着它是针对某些参数优化的函数的变体?
根据评论 这个错误报告 (以及我能找到的类似评论):
ISRA是由IPA SRA创建的变量的名称...
IPA SRA是一个 优化选项:
-fipa-SRA
执行过程的标量替换聚合,删除未使用的参数以及通过值传递的参数替换参考传递的参数。
在-O2,-O3和-Os级别启用。
所以很有可能,它是具有这些优化的函数的一个版本。
在你提到的情况下,它有可能用pass-by-value替换pass-by-reference,因为它知道通过引用传递文字是没有意义的。