GCC原子内置:是否有一个列表显示在哪个平台上支持哪些?

GCC原子内置:是否有一个列表显示在哪个平台上支持哪些?,gcc,atomic,Gcc,Atomic,是否有一个网站列出了各种平台及其对GCC原子内置的支持,用于各种GCC版本 编辑: 更清楚地说: GCC添加了_sync。。。作为平台上的内部函数,它包含对的支持。在所有其他平台上,它将这些作为普通函数声明保留,但不提供实现。这必须通过某种框架来实现 所以问题是:GCC为哪些平台提供哪些内部函数而不需要添加函数实现?我不知道是否有这样一个列表,但是说自从GCC 4.4以来原子就得到了支持 GCC libstdc++实现) 这些函数可以在目标的机器描述中使用特定于机器的扩展器(通常在名为“sync

是否有一个网站列出了各种平台及其对GCC原子内置的支持,用于各种GCC版本

编辑:

更清楚地说: GCC添加了_sync。。。作为平台上的内部函数,它包含对的支持。在所有其他平台上,它将这些作为普通函数声明保留,但不提供实现。这必须通过某种框架来实现


所以问题是:GCC为哪些平台提供哪些内部函数而不需要添加函数实现?

我不知道是否有这样一个列表,但是说自从GCC 4.4以来原子就得到了支持

GCC libstdc++实现)


这些函数可以在目标的机器描述中使用特定于机器的扩展器(通常在名为“sync.md”的文件中)进行扩展,也可以在缺少此类扩展器的情况下使用CAS循环进行扩展。如果“sync.md”文件的存在表明原子支持是正确的,那么您可以在MIPS、i386、ARM、BlackFin、Alpha、PowerPC、IA64和Sparc中计算。

[虽然这是一个老问题,但我认为我应该更新并完成答案]

我不知道每个体系结构版本和每个gcc版本的表,描述支持的内置

gcc的_sync内置函数自版本4.1起就存在(例如,参见此处所述:

并非所有目标处理器都支持所有操作。如果无法在目标处理器上实现特定操作,将生成警告并调用外部函数。外部函数将与内置函数同名,并附加后缀“\u n”,其中n是数据类型的大小

因此,当没有针对特定体系结构的实现时,将出现编译警告,我猜是链接时间错误,除非您使用适当的名称提供所需的函数

在GCC4.7之后,还有_原子内置和_同步内置被弃用。
例如,在我将代码切换到uuu原子内置时,看看Fedora如何使用gcc uuu sync和uuuu atomic