| ! { dg-do compile } |
| ! { dg-options "-fdump-tree-original" } |
| ! |
| ! Test the fix for PR80850 in which the _len field was not being |
| ! set for 'arg' in the call to 'foo'. |
| ! |
| type :: mytype |
| integer :: i |
| end type |
| class (mytype), pointer :: c |
| |
| allocate (c, source = mytype (99_8)) |
| |
| call foo(c) |
| call bar(c) |
| |
| deallocate (c) |
| |
| contains |
| |
| subroutine foo (arg) |
| class(*) :: arg |
| select type (arg) |
| type is (mytype) |
| if (arg%i .ne. 99_8) STOP 1 |
| end select |
| end subroutine |
| |
| subroutine bar (arg) |
| class(mytype) :: arg |
| select type (arg) |
| type is (mytype) |
| if (arg%i .ne. 99_8) STOP 2 |
| end select |
| end subroutine |
| |
| end |
| ! { dg-final { scan-tree-dump-times "arg.*._len" 1 "original" } } |