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" } }

Reply via email to