函数属性noclone的目的

时间:2015-12-04 10:58:32

标签: c linux gcc x86-64

根据gnuhttps://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Attributes.html),noclone属性定义为:

  

此函数属性阻止将函数考虑用于克隆 - 一种生成函数的专用副本并且(当前)通过过程间常量传播执行的机制。

上面的定义是什么意思哪里我们应该使用这个函数属性?

1 个答案:

答案 0 :(得分:4)

我知道这个属性的两个用例,两者都非常特定于gcc。这些是:

  1. 如果您获取标签的地址(GNU扩展名),则地址将为 如果函数体是,则函数特化之间有所不同 克隆。如果您希望地址可以使用该属性 同样。

  2. __builtin_return_address可能会返回不同的返回地址,而没有克隆则会返回相同的地址。

  3. 我建议不要使用此属性,让优化器完成它的工作。