【问题标题】:Purpose of function attribute noclone功能属性 noclone 的用途
【发布时间】:2015-12-04 10:58:32
【问题描述】:

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

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

上面的定义对whenwhere我们应该使用这个函数属性意味着什么?

【问题讨论】:

  • 猜测 - 拥有一个简单的函数实例有助于调试,因此,这是安装断点和/或即时修改其代码的唯一地方。
  • 在这个clang错误here和原始gcc补丁here中有一个争论的例子。

标签: c linux gcc x86-64


【解决方案1】:

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

  1. 如果您获取标签的地址(GNU 扩展),该地址将 如果函数体是,则函数特化之间存在差异 克隆。如果您希望地址为 一样的。

  2. __builtin_return_address 可能返回不同的返回地址,但如果不进行克隆,它们将是相同的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2010-10-17
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    相关资源
    最近更新 更多