diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2006-05-20 00:28:14 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2006-05-19 17:28:14 -0700 |
commit | a635db3debd75b2fe1bd839d6470bc6a313c3494 (patch) | |
tree | c31024deb2fff1611d809b67b595eaa74195a96d /gcc/fortran | |
parent | ab9ddafbc03f7af9c4954ca18a4f44cb1cfaed63 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/trans-array.c | 3 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 5 |
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); |