| ! { dg-do compile } |
| ! { dg-options "-std=legacy -O2 --param max-inline-insns-auto=0 --param max-inline-insns-single=0 -fdump-tree-lim2-details" } |
| |
| MODULE mod_param |
| integer, parameter :: Ngrids = 1 |
| integer, dimension(Ngrids) :: N |
| END |
| MODULE mod_forces |
| TYPE T_FORCES |
| real, pointer :: sustr(:,:) |
| real, pointer :: svstr(:,:) |
| real, pointer :: bustr(:,:) |
| real, pointer :: bvstr(:,:) |
| real, pointer :: srflx(:,:) |
| real, pointer :: stflx(:,:,:) |
| END TYPE |
| TYPE (T_FORCES), allocatable :: FORCES(:) |
| END |
| MODULE mod_grid |
| TYPE T_GRID |
| real, pointer :: f(:,:) |
| real, pointer :: Hz(:,:,:) |
| real, pointer :: z_r(:,:,:) |
| real, pointer :: z_w(:,:,:) |
| END TYPE |
| TYPE (T_GRID), allocatable :: GRID(:) |
| END |
| MODULE mod_scalars |
| USE mod_param |
| END |
| MODULE mod_mixing |
| TYPE T_MIXING |
| integer, pointer :: ksbl(:,:) |
| real, pointer :: Akv(:,:,:) |
| real, pointer :: Akt(:,:,:,:) |
| real, pointer :: alpha(:,:) |
| real, pointer :: beta(:,:) |
| real, pointer :: bvf(:,:,:) |
| real, pointer :: hsbl(:,:) |
| real, pointer :: ghats(:,:,:,:) |
| END TYPE |
| TYPE (T_MIXING), allocatable :: MIXING(:) |
| END |
| MODULE mod_ocean |
| TYPE T_OCEAN |
| real, pointer :: pden(:,:,:) |
| real, pointer :: u(:,:,:,:) |
| real, pointer :: v(:,:,:,:) |
| END TYPE |
| TYPE (T_OCEAN), allocatable :: OCEAN(:) |
| END |
| MODULE lmd_skpp_mod |
| PRIVATE |
| PUBLIC lmd_skpp |
| CONTAINS |
| SUBROUTINE lmd_skpp |
| USE mod_forces |
| USE mod_grid |
| USE mod_mixing |
| USE mod_ocean |
| integer tile |
| integer UBi, UBj |
| CALL lmd_skpp_tile (ng, tile, LBi, UBi, LBj, UBj, & |
| IminS, ImaxS, JminS, JmaxS, nstp0, & |
| GRID(ng) % f, GRID(ng) % Hz, & |
| GRID(ng) % z_r, GRID(ng) % z_w, & |
| OCEAN(ng) % u, OCEAN(ng) % v, & |
| OCEAN(ng) % pden, FORCES(ng) % srflx, & |
| FORCES(ng) % stflx, FORCES(ng) % bustr, & |
| FORCES(ng) % bvstr, FORCES(ng) % sustr, & |
| FORCES(ng) % svstr, MIXING(ng) % alpha, & |
| MIXING(ng) % beta, MIXING(ng) % bvf, & |
| MIXING(ng) % ghats, MIXING(ng) % Akt, & |
| MIXING(ng) % Akv, MIXING(ng) % hsbl, MIXING(ng) % ksbl) |
| END |
| SUBROUTINE lmd_skpp_tile (ng, tile, LBi, UBi, LBj, UBj, & |
| IminS, ImaxS, JminS, JmaxS, nstp, f, Hz, z_r, z_w, & |
| u, v, pden, srflx, stflx, bustr, bvstr, sustr, svstr, & |
| alpha, beta, bvf, & |
| ghats, Akt, Akv, hsbl, ksbl) |
| USE mod_scalars |
| integer tile |
| integer UBi, UBj |
| real f(:,:) |
| real Hz(:,:,:) |
| real z_r(:,:,:) |
| real z_w(:,:,:) |
| real u(:,:,:,:) |
| real v(:,:,:,:) |
| real pden(:,:,:) |
| real srflx(:,:) |
| real stflx(:,:,:) |
| real alpha(:,:) |
| real beta(:,:) |
| real bustr(:,:) |
| real bvstr(:,:) |
| real sustr(:,:) |
| real svstr(:,:) |
| real bvf(:,:,:) |
| real Akt(:,:,:,:) |
| real Akv(:,:,:) |
| real hsbl(:,:) |
| integer ksbl(:,:) |
| real ghats(:,:,:,:) |
| DO j=Jstr,Jend |
| DO iik=IstrIstr,z_w(i,j,N(ng)) |
| IF (hsbl0.gt.z_w0) THEN |
| ksbl=zbl |
| END IF |
| END DO |
| END DO |
| END |
| END |
| |
| ! { dg-final { scan-tree-dump-not ": dependent" "lim2" } } |
| ! { dg-final { scan-tree-dump "Moving statement\[\n\r\]_\[0-9\]+ = n" "lim2" } } |