| ! { 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 |