2019-01-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/57992
* trans-array.c (gfc_conv_array_parameter): Do not pack/unpack
functions with contiguous results.
2019-01-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/59345
* gfortran.dg/internal_pack_18.f90: New test.
From-SVN: r267905
+2019-01-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/57992
+ * trans-array.c (gfc_conv_array_parameter): Do not pack/unpack
+ functions with contiguous results.
+
2019-01-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/59345
{
gfc_symbol *result = expr->value.function.esym->result;
if (result->attr.dimension
- && (result->as->type == AS_EXPLICIT || result->attr.allocatable))
+ && (result->as->type == AS_EXPLICIT
+ || result->attr.allocatable
+ || result->attr.contiguous))
no_pack = 1;
}
}
+2019-01-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/59345
+ * gfortran.dg/internal_pack_18.f90: New test.
+
2019-01-13 H.J. Lu <hongjiu.lu@intel.com>
* gcc.dg/pr51628-20.c: Updated.
--- /dev/null
+! { dg-do compile }
+! { dg-additional-options "-fdump-tree-original" }
+! PR 57992 - this was packed/unpacked unnecessarily.
+! Original case by Tobias Burnus.
+subroutine test
+ interface
+ function f2()
+ integer, pointer, contiguous :: f2(:)
+ end function f2
+ end interface
+
+ call bar(f2())
+end subroutine test
+! { dg-final { scan-tree-dump-not "_gfortran_internal_pack" "original" } }
+! { dg-final { scan-tree-dump-not "_gfortran_internal_unpack" "original" } }