diff options
author | Andre Vehreschild <vehre@gcc.gnu.org> | 2016-11-18 11:23:34 +0100 |
---|---|---|
committer | Andre Vehreschild <vehre@gcc.gnu.org> | 2016-11-18 11:23:34 +0100 |
commit | 150ff6559f9db1a1514b8c64fe863685e96937c5 (patch) | |
tree | 10a37bb0547f6d6f7f1a8cd5ee66d625f4ce009c /gcc/fortran/trans-array.c | |
parent | 658a1797a67c6a36850fa4b6ca36e294e7417285 (diff) | |
download | gcc-150ff6559f9db1a1514b8c64fe863685e96937c5.tar.gz |
Next step.
Diffstat (limited to 'gcc/fortran/trans-array.c')
-rw-r--r-- | gcc/fortran/trans-array.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index eb09215627a..4ac36746a20 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -9654,9 +9654,14 @@ gfc_trans_deferred_array (gfc_symbol * sym, gfc_wrapped_block * block) gfc_conv_descriptor_data_set (&init, descriptor, null_pointer_node); if (flag_coarray == GFC_FCOARRAY_LIB && sym->attr.codimension) { - tmp = gfc_conv_descriptor_token (descriptor); - gfc_add_modify (&init, tmp, fold_convert (TREE_TYPE (tmp), - null_pointer_node)); + /* Declare the variable static so its array descriptor stays present + after leaving the scope. It may still be accessed through another + image. This may happen, for example, with the caf_mpi + implementation. */ + TREE_STATIC (descriptor) = 1; + tmp = gfc_conv_descriptor_token (descriptor); + gfc_add_modify (&init, tmp, fold_convert (TREE_TYPE (tmp), + null_pointer_node)); } } |