1! { dg-do compile } 2! { dg-options "-O3 -fdump-tree-optimized" } 3! Tests whether volatile really works with modules 4! PR fortran/29601 5module volmod 6 implicit none 7 integer, volatile :: a 8 logical :: b,c 9 volatile :: b 10contains 11 subroutine sample 12 a = 33. 13 if(a /= 432) print *,'aPresent' 14 15 b = .false. 16 if(b) print *,'bPresent' 17 18 c = .false. 19 if(c) print *,'cPresent' 20 end subroutine sample 21end module volmod 22 23program main 24 use volmod 25 implicit none 26 27 a = 432 28 if(a /= 432) print *,'aStillPresent' 29 30 b = .false. 31 if(b) print *,'bStillPresent' 32 33 c = .false. 34 if(c) print *,'cStillPresent' 35end program main 36! { dg-final { scan-tree-dump "aPresent" "optimized" } } 37! { dg-final { scan-tree-dump "bPresent" "optimized" } } 38! { dg-final { scan-tree-dump "aStillPresent" "optimized" } } 39! { dg-final { scan-tree-dump "bStillPresent" "optimized" } } 40! { dg-final { scan-tree-dump-not "cPresent" "optimized" } } 41! { dg-final { scan-tree-dump-not "cStillPresent" "optimized" } } 42! { dg-final { cleanup-tree-dump "optimized" } } 43