编译器标志,以防止在gfortran中消除部分冗余

时间:2012-09-20 10:31:52

标签: gfortran

我正试图从我正在使用的大型Fortran程序中获得更高的速度。我(还)不熟悉代码,所以我认为编译器优化将是一个很好的第一站。使用gfortran的-O1选项很好,但-O2-O3以意外的NaN形式产生运行时错误。通过将-O2分解为其组成标志,我确定-ftree-pre是问题,其他一切正常。

有没有办法只压制-ftree-pre旗帜?这样我可以使用-O3 -no-ftree-pre编译,如果这是有意义的。

我已经确定代码的哪一部分产生错误,因此我的长期计划是消除错误。但现在这将构成一个快速解决方案。

1 个答案:

答案 0 :(得分:1)

如GCC手册页中所述:

  

许多选项的长名称以-f-W开头 - 例如,-fmove-loop-invariants-Wformat等等。其中大多数都有积极和消极的形式; -ffoo的否定形式为-fno-foo。本手册仅记录这两种形式中的一种,无论哪种形式都不是默认形式。

在您的情况下,为了否定-O3启用-ftree-pre的效果,您应该在<{strong> -fno-tree-pre标志后添加-O3