diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2010-02-05 05:28:37 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2010-02-05 05:28:37 +0000 |
commit | 430f2d1f6fcde2ccbf5ae935e15e13f0bb3e8c4c (patch) | |
tree | 9ce142b33f6bfd6ae121c00b831210a43bbbf320 /gcc/fortran/trans-io.c | |
parent | e7da179e4d159e5e7efef8459b97463e70161f37 (diff) | |
download | gcc-430f2d1f6fcde2ccbf5ae935e15e13f0bb3e8c4c.zip gcc-430f2d1f6fcde2ccbf5ae935e15e13f0bb3e8c4c.tar.gz gcc-430f2d1f6fcde2ccbf5ae935e15e13f0bb3e8c4c.tar.bz2 |
re PR fortran/42309 (Problem with a pointer array passed to a subroutine)
2010-02-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/42309
* trans-expr.c (gfc_conv_subref_array_arg): Add new argument
'formal_ptr'. If this is true, give returned descriptor unity
lbounds, in all dimensions, and the appropriate offset.
(gfc_conv_procedure_call); If formal is a pointer, set the last
argument of gfc_conv_subref_array_arg to true.
* trans.h : Add last argument for gfc_conv_subref_array_arg.
* trans-io.c (set_internal_unit, gfc_trans_transfer): Set the
new arg of gfc_conv_subref_array_arg to false.
* trans-stmt.c (forall_make_variable_temp): The same.
2010-02-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/42309
* gfortran.dg/subref_array_pointer_4.f90 : New test.
From-SVN: r156512
Diffstat (limited to 'gcc/fortran/trans-io.c')
-rw-r--r-- | gcc/fortran/trans-io.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 690464e..30561bb 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -741,7 +741,7 @@ set_internal_unit (stmtblock_t * block, stmtblock_t * post_block, /* Use a temporary for components of arrays of derived types or substring array references. */ gfc_conv_subref_array_arg (&se, e, 0, - last_dt == READ ? INTENT_IN : INTENT_OUT); + last_dt == READ ? INTENT_IN : INTENT_OUT, false); tmp = build_fold_indirect_ref_loc (input_location, se.expr); se.expr = gfc_build_addr_expr (pchar_type_node, tmp); @@ -2211,7 +2211,7 @@ gfc_trans_transfer (gfc_code * code) if (seen_vector && last_dt == READ) { /* Create a temp, read to that and copy it back. */ - gfc_conv_subref_array_arg (&se, expr, 0, INTENT_OUT); + gfc_conv_subref_array_arg (&se, expr, 0, INTENT_OUT, false); tmp = se.expr; } else |