Suppose I have the following code
IF (a.eq.0.or.M(a)) THEN
With a an integer and M(1:3) an array of logicals. If a is equal to 0, then
Fortran allows for, but does not guarantee, short-circuit evaluation of logical operators. So to be safe, you will have to write your code under the assumption that each operand is evaluated.