http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55072
--- Comment #17 from janus at gcc dot gnu.org 2012-12-15 21:26:32 UTC --- (In reply to comment #16) > > Question is: Is the packing needed here? I would guess that it isn't. > > Of course I might be wrong here. After all, array_t3_ptr is a pointer, so it's > not guaranteed to be contiguous, right? To answer that myself, I think the packing is indeed needed here. At least it is also done for similar cases in the same test case, such as this one: character, pointer :: array_char_ptr(:,:) call sub_array_assumed (array_char_ptr) > If the packing is indeed required in this place, we just need to fix the test > case (assumed_type_2.f90) ... ... like this: Index: gcc/testsuite/gfortran.dg/assumed_type_2.f90 =================================================================== --- gcc/testsuite/gfortran.dg/assumed_type_2.f90 (revision 194517) +++ gcc/testsuite/gfortran.dg/assumed_type_2.f90 (working copy) @@ -157,7 +157,7 @@ end ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_ptr._data.dat" 1 "original" } }a -! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 2 "original" } } +! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 3 "original" } } ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } } @@ -165,7 +165,6 @@ end ! { dg-final { scan-tree-dump-times "\\.data = \\(void .\\) &array_t1.0.;" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t3.0:. .\\) array_t3_ptr.data\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 1 "original" } }