2 ! { dg-options "-fdump-tree-original" }
4 ! Test the fix for PR87284 in which the indexing in allocate with mold
5 ! was incorrect for class array initialization and resulted in the valgrind
7 ! "Conditional jump or move depends on uninitialised value(s)" at line 42.
9 ! Contributed by Andrew Baldwin on clf.
11 MODULE INTS_TYPE_MODULE
12 TYPE, ABSTRACT
:: BASE_TYPE
15 TYPE, EXTENDS (BASE_TYPE
) :: INTS_TYPE
16 INTEGER, ALLOCATABLE
:: INTS(:)
19 SUBROUTINE MOLD_ALLOCATE (IT_OBJS
, MOLD_OBJ
)
20 CLASS (BASE_TYPE
), ALLOCATABLE
, INTENT (OUT
) :: IT_OBJS(:)
21 CLASS (BASE_TYPE
), INTENT (IN
) :: MOLD_OBJ
23 ALLOCATE (IT_OBJS(2), mold
= MOLD_OBJ
)
26 END SUBROUTINE MOLD_ALLOCATE
27 END MODULE INTS_TYPE_MODULE
33 CLASS (BASE_TYPE
), ALLOCATABLE
:: IT_OBJS(:)
35 TYPE (INTS_TYPE
) :: MOLD_OBJ
37 ALLOCATE (INTS_TYPE
:: IT_OBJS(2))
41 ALLOCATE (IT_OBJS(1)%INTS(10))
43 ALLOCATE (IT_OBJS(2)%INTS(10))
49 CALL MOLD_ALLOCATE (IT_OBJS
, MOLD_OBJ
)
51 IF (ALLOCATED(IT_OBJS
)) THEN
52 IF (SIZE(IT_OBJS
) .GE
. 2) THEN
55 ALLOCATE (IT_OBJS(1)%INTS(10))
57 ALLOCATE (IT_OBJS(2)%INTS(10))
62 ! { dg-final { scan-tree-dump-times "it_objs->_vptr->_size" 1 "original" } }