aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-stmt.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2011-08-30 15:34:01 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2011-08-30 15:34:01 +0000
commit505920d6b128de2b78279486a2a1a95e38f5f940 (patch)
tree571e9966557aae713059987b1bd1f315293784a7 /gcc/fortran/trans-stmt.c
parenta728a2ada0698cbd8688d5eb6d88d357ec27eb5b (diff)
downloadgcc-505920d6b128de2b78279486a2a1a95e38f5f940.zip
gcc-505920d6b128de2b78279486a2a1a95e38f5f940.tar.gz
gcc-505920d6b128de2b78279486a2a1a95e38f5f940.tar.bz2
re PR fortran/45170 ([F2003] allocatable character lengths)
2011-08-30 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/45170 * trans-stmt.c (gfc_trans_allocate): Evaluate the substring. 2011-08-30 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/45170 * gfortran.dg/allocate_with_source_2.f90: New test From-SVN: r178329
Diffstat (limited to 'gcc/fortran/trans-stmt.c')
-rw-r--r--gcc/fortran/trans-stmt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index a911a5b..7d8b4e0 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -4783,6 +4783,10 @@ gfc_trans_allocate (gfc_code * code)
|| code->expr3->expr_type == EXPR_CONSTANT)
{
gfc_conv_expr (&se_sz, code->expr3);
+ gfc_add_block_to_block (&se.pre, &se_sz.pre);
+ se_sz.string_length
+ = gfc_evaluate_now (se_sz.string_length, &se.pre);
+ gfc_add_block_to_block (&se.pre, &se_sz.post);
memsz = se_sz.string_length;
}
else if (code->expr3->mold