我正试图从我正在使用的大型Fortran程序中获得更高的速度。我(还)不熟悉代码,所以我认为编译器优化将是一个很好的第一站。使用gfortran的-O1
选项很好,但-O2
和-O3
以意外的NaN形式产生运行时错误。通过将-O2
分解为其组成标志,我确定-ftree-pre
是问题,其他一切正常。
有没有办法只压制-ftree-pre
旗帜?这样我可以使用-O3 -no-ftree-pre
编译,如果这是有意义的。
我已经确定代码的哪一部分产生错误,因此我的长期计划是消除错误。但现在这将构成一个快速解决方案。
答案 0 :(得分:1)
如GCC手册页中所述:
许多选项的长名称以
-f
或-W
开头 - 例如,-fmove-loop-invariants
,-Wformat
等等。其中大多数都有积极和消极的形式;-ffoo
的否定形式为-fno-foo
。本手册仅记录这两种形式中的一种,无论哪种形式都不是默认形式。
在您的情况下,为了否定-O3
启用-ftree-pre
的效果,您应该在<{strong> -fno-tree-pre
标志后添加-O3
。