| ! { dg-do run } |
| ! |
| ! From posting by Spectrum to clf on thread entitled "Bounds for array pointer dummy argument". |
| ! |
| PROGRAM X |
| implicit none |
| TYPE T |
| INTEGER :: I |
| END TYPE T |
| TYPE(T), TARGET :: T1( 0:3 ) |
| |
| associate( P => T1 % I ) |
| call check (lbound (P, 1), ubound (P, 1) ,1 , 4) |
| endassociate |
| |
| associate( P2 => T1(:) % I ) |
| call check (lbound (P2, 1), ubound (P2, 1) ,1 , 4) |
| endassociate |
| |
| associate( Q => T1 ) |
| call check (lbound (Q, 1), ubound (Q, 1) ,0 , 3) |
| endassociate |
| |
| associate( Q2 => T1(:) ) |
| call check (lbound (Q2, 1), ubound (Q2, 1) ,1 , 4) |
| endassociate |
| contains |
| subroutine check (lbnd, ubnd, lower, upper) |
| integer :: lbnd, ubnd, lower, upper |
| if (lbnd .ne. lower) STOP 1 |
| if (ubnd .ne. upper) STOP 2 |
| end subroutine |
| END PROGRAM X |