| ! { dg-do compile } |
| ! { dg-options "-O2 -fdump-tree-optimized" } |
| ! Tests that volatile can be applied to members of common blocks or |
| ! equivalence groups (PR fortran/35037) |
| ! |
| subroutine wait1 |
| logical event |
| volatile event |
| common /dd/ event |
| event = .false. |
| do |
| if (event) print *, 'NotOptimizedAway1' |
| end do |
| end subroutine |
| |
| subroutine wait2 |
| logical event, foo |
| volatile event |
| equivalence (event, foo) |
| event = .false. |
| do |
| if (event) print *, 'NotOptimizedAway2' |
| end do |
| end subroutine |
| |
| subroutine wait3 |
| logical event |
| integer foo |
| volatile foo |
| equivalence (event, foo) |
| event = .false. |
| do |
| if (event) print *, 'IsOptimizedAway' |
| end do |
| end subroutine |
| |
| ! { dg-final { scan-tree-dump "NotOptimizedAway1" "optimized" } } */ |
| ! { dg-final { scan-tree-dump "NotOptimizedAway2" "optimized" } } */ |
| ! { dg-final { scan-tree-dump-not "IsOptimizedAway" "optimized" } } */ |
| ! { dg-final { cleanup-tree-dump "optimized" } } */ |