diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2019-01-11 06:32:10 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2019-01-11 06:32:10 +0000 |
commit | 7dc3df082b9edc8d78e0cd3846027afc345aebc7 (patch) | |
tree | bee65d939bd05507d8c1ee7b8e4d50924a28d8f4 /gcc/fortran/trans-array.c | |
parent | 0604d5672f51109bbd1397de439a3fce444a30d6 (diff) | |
download | gcc-7dc3df082b9edc8d78e0cd3846027afc345aebc7.zip gcc-7dc3df082b9edc8d78e0cd3846027afc345aebc7.tar.gz gcc-7dc3df082b9edc8d78e0cd3846027afc345aebc7.tar.bz2 |
re PR fortran/59345 (_gfortran_internal_pack on compiler generated temps)
2019-01-11 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/59345
* trans-array.c (gfc_conv_parameter_array): Temporary
arrays generated for expressions do not need to be repacked.
2019-01-11 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/59345
* gfortran.dg/internal_pack_16.f90: New test.
From-SVN: r267829
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index e71e76e..af3a2d8 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -7866,6 +7866,12 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, bool g77, no_pack = contiguous && no_pack; + /* If we have an expression, an array temporary will be + generated which does not need to be packed / unpacked + if passed to an explicit-shape dummy array. */ + + no_pack = no_pack || (g77 && expr->expr_type == EXPR_OP); + /* Array constructors are always contiguous and do not need packing. */ array_constructor = g77 && !this_array_result && expr->expr_type == EXPR_ARRAY; |