2 ! { dg-additional-options "-Wextra" }
4 ! PR 85599: warn about short-circuiting of logical expressions for non-pure functions
6 ! Contributed by Janus Weil <janus@gcc.gnu.org>
11 module procedure impl_pure_a1
16 logical function impl_pure_a1()
29 flag
= check() .and
. flag
30 flag
= flag
.and
. check() ! { dg-warning "might not be evaluated" }
31 flag
= flag
.and
. pure_check()
32 flag
= flag
.and
. impl_pure_1()
33 flag
= flag
.and
. impl_pure_2()
34 flag
= flag
.and
. impl_pure_a1()
35 flag
= flag
.and
. impl_pure_a()
39 logical function check()
40 integer, save :: i
= 1
46 logical pure
function pure_check()
50 logical function impl_pure_1()
54 logical function impl_pure_2()
55 impl_pure_2
= impl_pure_1()