我正在运行一组比较不同libc字符串函数的基准测试。问题是GCC和Clang正在优化循环中的计算,因为函数被标记为“纯”和“常量”。是否有某种方法可以关闭优化或绕过它?
答案 0 :(得分:0)
我解决了!解决方案很讨厌,但它确实有效:
volatile int x;
for (...)
{
// ...
x = (int)f(args);
}
我从不使用x的值,所以演员不会成为问题。更好的是,现在我没有因为没有使用return value of function declared with pure attribute
而感到错误。