1! { dg-do run } 2! 3! PR 44541: [OOP] wrong code for polymorphic variable with INTENT(OUT)/Alloc w/ MOLD 4! 5! Contributed by Tobias Burnus <burnus@gcc.gnu.org> 6 7 implicit none 8 9 type t 10 integer :: a = 1 11 end type t 12 13 type, extends(t) :: t2 14 integer :: b = 3 15 end type t2 16 17 type(t2) :: y 18 19 y%a = 44 20 y%b = 55 21 call intent_out (y) 22 if (y%a/=1 .or. y%b/=3) STOP 1 23 24 y%a = 66 25 y%b = 77 26 call intent_out_unused (y) 27 if (y%a/=1 .or. y%b/=3) STOP 2 28 29contains 30 31 subroutine intent_out(x) 32 class(t), intent(out) :: x 33 select type (x) 34 type is (t2) 35 if (x%a/=1 .or. x%b/=3) STOP 3 36 end select 37 end subroutine 38 39 subroutine intent_out_unused(x) 40 class(t), intent(out) :: x 41 end subroutine 42 43end 44