return 0;
case EXPR_ARRAY:
- return gfc_check_dependency (var, expr, 1);
+ /* the scalarizer always generates a temporary for array constructors,
+ so there is no dependency. */
+ return 0;
case EXPR_FUNCTION:
if (intent != INTENT_IN)
+2013-06-15 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/49074
+ PR fortran/56136
+ * gfortran.dg/typebound_assignment_5.f03: Check the absence of any
+ packing.
+ * gfortran.dg/typebound_assignment_6.f03: New.
+
2013-06-15 Oleg Endo <olegendo@gcc.gnu.org>
* gcc.target/h8300/h8300.exp: New.
! { dg-do run }
+! { dg-options "-fdump-tree-original" }
!
! PR fortran/49074
! ICE on defined assignment with class arrays.
if (any(foobar%i /= [1, 2])) call abort
end program
+! { dg-final { scan-tree-dump-not "_gfortran_internal_pack" "original" } }
+! { dg-final { scan-tree-dump-not "_gfortran_internal_unpack" "original" } }
+! { dg-final { cleanup-tree-dump "original"} }
--- /dev/null
+! { dg-do run }
+! { dg-options "-fdump-tree-original" }
+!
+! PR fortran/56136
+! ICE on defined assignment with class arrays.
+!
+! Original testcase by Alipasha <alipash.celeris@gmail.com>
+
+ MODULE A_TEST_M
+ TYPE :: A_TYPE
+ INTEGER :: I
+ CONTAINS
+ GENERIC :: ASSIGNMENT (=) => ASGN_A
+ PROCEDURE, PRIVATE :: ASGN_A
+ END TYPE
+
+ CONTAINS
+
+ ELEMENTAL SUBROUTINE ASGN_A (A, B)
+ CLASS (A_TYPE), INTENT (INOUT) :: A
+ CLASS (A_TYPE), INTENT (IN) :: B
+ A%I = B%I
+ END SUBROUTINE
+ END MODULE A_TEST_M
+
+ PROGRAM ASGN_REALLOC_TEST
+ USE A_TEST_M
+ TYPE (A_TYPE), ALLOCATABLE :: A(:)
+ INTEGER :: I, J
+
+ ALLOCATE (A(100))
+ A = (/ (A_TYPE(I), I=1,SIZE(A)) /)
+ A(1:50) = A(51:100)
+ IF (ANY(A%I /= (/ ((50+I, I=1,SIZE(A)/2), J=1,2) /))) CALL ABORT
+ A(::2) = A(1:50) ! pack/unpack
+ IF (ANY(A( ::2)%I /= (/ (50+I, I=1,SIZE(A)/2) /))) CALL ABORT
+ IF (ANY(A(2::2)%I /= (/ ((50+2*I, I=1,SIZE(A)/4), J=1,2) /))) CALL ABORT
+ END PROGRAM
+
+! { dg-final { scan-tree-dump-times "_gfortran_internal_pack" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_internal_unpack" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+