【发布时间】:2015-12-04 10:58:32
【问题描述】:
根据gnu(https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Attributes.html) noclone 属性定义为:
此函数属性可防止函数被考虑用于克隆——一种生成函数的专用副本并且(当前)由过程间常量传播执行的机制。
上面的定义对when和where我们应该使用这个函数属性意味着什么?
【问题讨论】:
根据gnu(https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Attributes.html) noclone 属性定义为:
此函数属性可防止函数被考虑用于克隆——一种生成函数的专用副本并且(当前)由过程间常量传播执行的机制。
上面的定义对when和where我们应该使用这个函数属性意味着什么?
【问题讨论】:
我知道这个属性的两个用例,都非常特定于 gcc。它们是:
如果您获取标签的地址(GNU 扩展),该地址将 如果函数体是,则函数特化之间存在差异 克隆。如果您希望地址为 一样的。
__builtin_return_address 可能返回不同的返回地址,但如果不进行克隆,它们将是相同的。
我建议不要使用这个属性,让优化器完成它的工作。
【讨论】: