gpt4 book ai didi

c++ - gcc 中的 "Assume"子句

转载 作者:可可西里 更新时间:2023-11-01 16:30:59 27 4
gpt4 key购买 nike

gcc(最新版本:4.8、4.9)是否有类似于icc 支持的__assume() 内置的“assume”子句?例如,__assume( n % 8 == 0 );

最佳答案

从 gcc 4.8.2 开始,gcc 中没有 __assume() 的等价物。我不知道为什么 - 它会非常有用。马夫索建议:

#define __assume(cond) do { if (!(cond)) __builtin_unreachable(); } while (0)

这是一个老把戏,至少可以追溯到 2010 年,甚至可能更早。编译器通常会优化“cond”的评估,因为任何 cond 为假的评估无论如何都是未定义的。但是,如果它包含对不透明(非内联)函数的调用,它似乎不会优化掉“cond”。编译器必须假定不透明调用可能有副作用(例如,更改全局)并且无法优化调用,尽管它可以优化结果的任何计算和分支。因此,宏观方法充其量只是一种部分解决方案。

关于c++ - gcc 中的 "Assume"子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25667901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com