我有一个奇怪的优化错误,所以我试图确定是哪个标志导致它。错误(不正确的计算)发生在-O1
,但不是-O0
。因此,我认为我可以使用所有-f flags
这些-O1 includes to narrow down the culprit
. 但是,当我尝试这样做(使用此列表http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html)时,它又可以正常工作了!
任何人都可以解释这一点,或提供其他关于寻找什么的建议吗?我已经通过运行代码valgrind
,它没有报告任何错误。
编辑
我发现计算是正确的-O0
,不正确的-O1
,但又是正确的-O1 -ffloat-store
。任何关于寻找什么的想法都会导致它没有工作-ffloat-store
?
编辑2
如果我使用正常的发布标志进行编译,则会出现计算错误。但是,如果我添加任何一个:
-ffloat-store
或者
-mpc64
到标志列表中,错误就消失了。
任何人都可以提出一种方法来追踪该标志产生影响的行,以便我可以更改它而不是要求每个使用代码的人都使用附加标志进行编译?