re PR fortran/45648 (Unnecessary temporary for transpose calls as actual argument.)
authorMikael Morin <mikael@gcc.gnu.org>
Tue, 21 Sep 2010 19:04:09 +0000 (19:04 +0000)
committerMikael Morin <mikael@gcc.gnu.org>
Tue, 21 Sep 2010 19:04:09 +0000 (19:04 +0000)
commit0b4f2770ff14ee139b9f5d0aa16c1507eb60cb55
treeaa4f4a282ac80b91b29b28096d4af2a6ad0d5e3f
parent5e68c77aff8d9c984668f8932e54b28d02456bba
re PR fortran/45648 (Unnecessary temporary for transpose calls as actual argument.)

2010-09-21  Mikael Morin  <mikael@gcc.gnu.org>

PR fortran/45648
* trans-array.c (gfc_conv_expr_descriptor): Calculate dim out of n and
info->dim.

PR fortran/45648
* trans-array.c (gfc_conv_expr_descriptor): Unset full if we are
accessing dimensions in reversed order.

PR fortran/45648
* trans-array.c (gfc_conv_expr_descriptor): Special case noncopying
intrinsic function call.

* trans-array.c (gfc_conv_expr_descriptor): Remove ss lookup.
Update asserts accordingly.

PR fortran/45648
* trans.h (gfc_se): New field force_tmp.
* trans-expr.c (gfc_conv_procedure_call): Check for argument alias
and set parmse.force_tmp if some alias is found.
* trans-array.c (gfc_conv_expr_descriptor): Force a temporary creation
if se->force_tmp is set.

2010-09-21  Mikael Morin  <mikael@gcc.gnu.org>

PR fortran/45648
* gfortran.dg/inline_transpose_1.f90: Update temporary's locations
and counts. Add non-elemental function call check.

PR fortran/45648
* gfortran.dg/inline_transpose_1.f90: Add function calls with aliasing
arguments checks. Update temporary counts.
* gfortran.dg/transpose_optimization_1.f90: New.

From-SVN: r164494
gcc/fortran/ChangeLog
gcc/fortran/trans-array.c
gcc/fortran/trans-expr.c
gcc/fortran/trans.h
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/inline_transpose_1.f90
gcc/testsuite/gfortran.dg/transpose_optimization_1.f90 [new file with mode: 0644]