41 lines
951 B
Fortran
41 lines
951 B
Fortran
! { 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" } } */
|