blob: e5deace306e1c4493ab7cb99d14658f6818a2893 [file] [log] [blame]
! { dg-do compile }
! { dg-options "-fopenmp -O2 -fdump-tree-optimized -fdump-tree-original" }
! { dg-final { scan-tree-dump-times ".ASSUME \\(x == 42\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times ".ASSUME \\(x <= 41\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times ".ASSUME \\(y <= 6\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times ".ASSUME \\(y > 5\\);" 1 "original" } }
! { dg-final { scan-tree-dump-times "return 42;" 3 "optimized" } }
! { dg-final { scan-tree-dump-not "return -1;" "optimized" } }
integer function foo (x)
implicit none
integer, value :: x
integer :: y
!$omp assume holds (x == 42)
y = x;
!$omp end assume
foo = y
end
integer function bar (x)
implicit none
integer, value :: x
!$omp assume holds (x < 42)
block
end block
if (x == 42) then
bar = -1
return
end if
bar = 42
end
integer function foobar (y)
implicit none
integer, value :: y
!$omp assume holds(y > 5) holds (y < 7)
block
if (y == 6) then
foobar = 42
return
end if
end block
foobar = -1
end