Fortran编译器在优化时是否会完全删除false if-blocks?

时间:2013-07-19 09:49:01

标签: optimization compiler-construction fortran90

如果我的程序中有以下声明:

logical, parameter :: verbose = .false.

会添加一些诸如

之类的东西
if (verbose) write(*,*) "Information here"

在使用“-03”进行编译时会影响性能? 我希望编译器会认识到块总是假的,因此完全删除它们,所以我可以随意添加调试打印。是这种情况吗?

我想这可能与编译器有关,但希望对于最常见的编译器有一个答案。如果没有,gfortran的行为是什么?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

根据上述评论者的好建议,我自己测试了这个。 用gfortran转向,即使是优化级别-O0似乎也可以完全删除死写块。