aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2006-05-20 00:28:14 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2006-05-19 17:28:14 -0700
commita635db3debd75b2fe1bd839d6470bc6a313c3494 (patch)
treec31024deb2fff1611d809b67b595eaa74195a96d /gcc/fortran
parentab9ddafbc03f7af9c4954ca18a4f44cb1cfaed63 (diff)
downloadgcc-a635db3debd75b2fe1bd839d6470bc6a313c3494.zip
gcc-a635db3debd75b2fe1bd839d6470bc6a313c3494.tar.gz
gcc-a635db3debd75b2fe1bd839d6470bc6a313c3494.tar.bz2
re PR fortran/27662 ([4.1 only]: Transpose doesn't work on function return)
gcc/fortran/ 2006-05-19 H.J. Lu <hongjiu.lu@intel.com> PR fortran/27662 * trans-array.c (gfc_conv_expr_descriptor): Don't zere the first stride to indicate a temporary. * trans-expr.c (gfc_conv_function_call): Likewise. gcc/testsuite/ 2006-05-19 H.J. Lu <hongjiu.lu@intel.com> PR fortran/27662 * gfortran.dg/temporary_1.f90: New file. From-SVN: r113922
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/trans-array.c3
-rw-r--r--gcc/fortran/trans-expr.c5
3 files changed, 7 insertions, 8 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 1b62f79..94db2b4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2006-05-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR fortran/27662
+ * trans-array.c (gfc_conv_expr_descriptor): Don't zere the
+ first stride to indicate a temporary.
+ * trans-expr.c (gfc_conv_function_call): Likewise.
+
2006-05-18 Francois-Xavier Coudert <coudert@clipper.ens.fr>
Feng Wang <fengwang@nudt.edu.cn>
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 7e9d5a6..32283a3 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -4108,10 +4108,7 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
/* Finish the copying loops. */
gfc_trans_scalarizing_loops (&loop, &block);
- /* Set the first stride component to zero to indicate a temporary. */
desc = loop.temp_ss->data.info.descriptor;
- tmp = gfc_conv_descriptor_stride (desc, gfc_rank_cst[0]);
- gfc_add_modify_expr (&loop.pre, tmp, gfc_index_zero_node);
gcc_assert (is_gimple_lvalue (desc));
}
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 4eceab6..b91ebf6 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -2038,11 +2038,6 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym,
gfc_trans_create_temp_array (&se->pre, &se->post, se->loop, info, tmp,
false, !sym->attr.pointer, callee_alloc);
- /* Zero the first stride to indicate a temporary. */
- tmp = gfc_conv_descriptor_stride (info->descriptor, gfc_rank_cst[0]);
- gfc_add_modify_expr (&se->pre, tmp,
- convert (TREE_TYPE (tmp), integer_zero_node));
-
/* Pass the temporary as the first argument. */
tmp = info->descriptor;
tmp = build_fold_addr_expr (tmp);