diff options
author | Janus Weil <janus@gcc.gnu.org> | 2013-04-22 21:14:22 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2013-04-22 21:14:22 +0200 |
commit | e361d18df77ed06994441e0b0d0c33409ede5b63 (patch) | |
tree | c9169197a1c8013e938b0c13132d766b4bcffb84 /gcc/fortran/check.c | |
parent | cefb0898ebc75fefdd2cf93d39e6ccbb1aa7ee51 (diff) | |
download | gcc-e361d18df77ed06994441e0b0d0c33409ede5b63.zip gcc-e361d18df77ed06994441e0b0d0c33409ede5b63.tar.gz gcc-e361d18df77ed06994441e0b0d0c33409ede5b63.tar.bz2 |
re PR fortran/53685 (surprising warns about transfer with explicit character range)
2013-04-22 Janus Weil <janus@gcc.gnu.org>
PR fortran/53685
PR fortran/57022
* check.c (gfc_calculate_transfer_sizes): Fix for array-valued SOURCE
expressions.
* simplify.c (gfc_simplify_sizeof,gfc_simplify_storage_size): Get rid
of special treatment for EXPR_ARRAY.
* target-memory.h (gfc_element_size): New prototype.
* target-memory.c (size_array): Remove.
(gfc_element_size): New function.
(gfc_target_expr_size): Modified to always return the full size of the
expression.
2013-04-22 Janus Weil <janus@gcc.gnu.org>
PR fortran/53685
PR fortran/57022
* gfortran.dg/transfer_check_4.f90: New.
From-SVN: r198155
Diffstat (limited to 'gcc/fortran/check.c')
-rw-r--r-- | gcc/fortran/check.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 870ca75..e531deb 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -4446,8 +4446,6 @@ gfc_calculate_transfer_sizes (gfc_expr *source, gfc_expr *mold, gfc_expr *size, size_t *result_length_p) { size_t result_elt_size; - mpz_t tmp; - gfc_expr *mold_element; if (source->expr_type == EXPR_FUNCTION) return false; @@ -4456,20 +4454,12 @@ gfc_calculate_transfer_sizes (gfc_expr *source, gfc_expr *mold, gfc_expr *size, return false; /* Calculate the size of the source. */ - if (source->expr_type == EXPR_ARRAY - && !gfc_array_size (source, &tmp)) - return false; - *source_size = gfc_target_expr_size (source); if (*source_size == 0) return false; - mold_element = mold->expr_type == EXPR_ARRAY - ? gfc_constructor_first (mold->value.constructor)->expr - : mold; - /* Determine the size of the element. */ - result_elt_size = gfc_target_expr_size (mold_element); + result_elt_size = gfc_element_size (mold); if (result_elt_size == 0) return false; |