diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2007-02-02 12:35:57 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2007-02-02 12:35:57 +0000 |
commit | d4feb3d31ab828db75f8d9848cd833de964a75a6 (patch) | |
tree | 0569867556e0d5a7bd437b89e86d54632a6fbed1 /gcc/fortran/trans-expr.c | |
parent | 47742ccdded540d6e157ce49f89ec4148cd27154 (diff) | |
download | gcc-d4feb3d31ab828db75f8d9848cd833de964a75a6.zip gcc-d4feb3d31ab828db75f8d9848cd833de964a75a6.tar.gz gcc-d4feb3d31ab828db75f8d9848cd833de964a75a6.tar.bz2 |
re PR fortran/30284 ([4.1 only] ICE in gfc_add_modify with internal reads)
2007-02-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30284
PR fortran/30626
* trans-expr.c (gfc_conv_aliased_arg): Remove static attribute
from function and make sure that substring lengths are
translated.
(is_aliased_array): Remove static attribute.
* trans.c : Add prototypes for gfc_conv_aliased_arg and
is_aliased_array.
* trans-io.c (set_internal_unit): Add the post block to the
arguments of the function. Use is_aliased_array to check if
temporary is needed; if so call gfc_conv_aliased_arg.
(build_dt): Pass the post block to set_internal_unit and
add to the block after all io activiy is done.
2007-02-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30284
PR fortran/30626
* io/transfer.c (init_loop_spec, next_array_record): Change to
lbound rather than unity base.
2007-02-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30284
* gfortran.dg/arrayio_11.f90.f90: New test.
PR fortran/30626
* gfortran.dg/arrayio_12.f90.f90: New test.
From-SVN: r121500
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r-- | gcc/fortran/trans-expr.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 487b6a7..723ffab 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1682,9 +1682,9 @@ gfc_apply_interface_mapping (gfc_interface_mapping * mapping, an actual argument derived type array is copied and then returned after the function call. TODO Get rid of this kludge, when array descriptors are capable of - handling aliased arrays. */ + handling arrays with a bigger stride in bytes than size. */ -static void +void gfc_conv_aliased_arg (gfc_se * parmse, gfc_expr * expr, int g77, sym_intent intent) { @@ -1733,7 +1733,7 @@ gfc_conv_aliased_arg (gfc_se * parmse, gfc_expr * expr, { gfc_ref *char_ref = expr->ref; - for (; expr->ts.cl == NULL && char_ref; char_ref = char_ref->next) + for (; char_ref; char_ref = char_ref->next) if (char_ref->type == REF_SUBSTRING) { gfc_se tmp_se; @@ -1928,7 +1928,7 @@ gfc_conv_aliased_arg (gfc_se * parmse, gfc_expr * expr, /* Is true if an array reference is followed by a component or substring reference. */ -static bool +bool is_aliased_array (gfc_expr * e) { gfc_ref * ref; |