我在 Fortran 90 中使用了太多参数的子程序。在这些子例程的第一次调用中,第二个是无用的,但仍然存在。我知道这不是一个很好的做事方式,但由于历史原因,它被做成了这样。
例如:
CALL myroutine(A, B + C)
在哪里:
SUBROUTINE myroutine (A, B)
IF(.NOT. first) THEN
!Using B in a way or another..
ELSE
!Other operations, not using B.
END IF
END SUBROUTINE routine
我正在使用 gfortran 4.4.7 使用 -O3 进行编译。
我想知道操作 B + C,在第一次调用 myroutine 因为第二个参数未使用时无用,是否执行...
此外,精确的编译优化对我来说是新事物,我很想知道在遇到此类问题时可以参考哪些资源。