| ! { dg-additional-options "-fdump-tree-original" } |
| ! |
| ! Check that EXPR_EQ works with __builtin_omp_is_initial_device, |
| ! which returns an 'int' while Fortran uses 'logical(4)'. |
| ! |
| ! Check that 'call ff (omp_is_initial_device)' accesses the library |
| ! function and not the builtin. |
| ! |
| ! { dg-final { scan-tree-dump-times "__builtin_omp_is_initial_device \\(\\)" 14 "original" } } */ |
| ! { dg-final { scan-tree-dump "ff \\(omp_is_initial_device\\);" "original" } } */ |
| ! |
| program main |
| use omp_lib, only: omp_is_initial_device |
| implicit none (type, external) |
| |
| logical(1) :: t1 |
| logical(2) :: f2 |
| t1 = .true. |
| f2 = .false. |
| |
| if (omp_is_initial_device () .eqv. .true.) then |
| else |
| stop 1 |
| end if |
| if (omp_is_initial_device () .neqv. .true.) stop 2 |
| if (omp_is_initial_device () .eqv. .false.) stop 3 |
| if (omp_is_initial_device () .neqv. .false.) then |
| else |
| stop 4 |
| end if |
| |
| if (omp_is_initial_device () .neqv. .true._1) stop 5 |
| if (omp_is_initial_device () .eqv. .false._1) stop 6 |
| if (omp_is_initial_device () .neqv. .true._2) stop 7 |
| if (omp_is_initial_device () .eqv. .false._2) stop 8 |
| if (omp_is_initial_device () .neqv. .true._4) stop 9 |
| if (omp_is_initial_device () .eqv. .false._4) stop 10 |
| if (omp_is_initial_device () .neqv. .true._8) stop 11 |
| if (omp_is_initial_device () .eqv. .false._8) stop 12 |
| |
| if (omp_is_initial_device () .neqv. t1) stop 13 |
| if (omp_is_initial_device () .eqv. f2) stop 14 |
| |
| call ff (omp_is_initial_device) |
| contains |
| subroutine ff(xx) |
| procedure (omp_is_initial_device) :: xx |
| if (.not. xx ()) stop 15 |
| end |
| end |