aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Vehreschild <vehre@gcc.gnu.org>2017-01-19 16:52:32 +0100
committerAndre Vehreschild <vehre@gcc.gnu.org>2017-01-19 16:52:32 +0100
commit118d5ed3212800810ad6c09c1e51649a02d4caf3 (patch)
tree19376ad3f5757f08f61c02608a53612aa86ca96e
parent9db0a8c2bfe8e9602109d3fc3de0dc5e575b8c5c (diff)
downloadgcc-118d5ed3212800810ad6c09c1e51649a02d4caf3.zip
gcc-118d5ed3212800810ad6c09c1e51649a02d4caf3.tar.gz
gcc-118d5ed3212800810ad6c09c1e51649a02d4caf3.tar.bz2
re PR fortran/70696 ([Coarray] ICE on EVENT POST of host-associated EVENT_TYPE coarray)
gcc/fortran/ChangeLog: 2017-01-19 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/70696 * trans-decl.c (gfc_build_qualified_array): Add static decl to parent function only, when the decl-context is not the translation unit. gcc/testsuite/ChangeLog: 2017-01-19 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/70696 * gfortran.dg/coarray_43.f90: New test. From-SVN: r244637
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/coarray_43.f9013
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 17c419f..ca6ac2a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2017-01-19 Andre Vehreschild <vehre@gcc.gnu.org>
+
+ PR fortran/70696
+ * trans-decl.c (gfc_build_qualified_array): Add static decl to parent
+ function only, when the decl-context is not the translation unit.
+
2017-01-18 Louis Krupp <louis.krupp@zoho.com>
PR fortran/50069
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 51c23e8..5d246cd 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -971,7 +971,9 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym)
DECL_CONTEXT (token) = sym->ns->proc_name->backend_decl;
gfc_module_add_decl (cur_module, token);
}
- else if (sym->attr.host_assoc)
+ else if (sym->attr.host_assoc
+ && TREE_CODE (DECL_CONTEXT (current_function_decl))
+ != TRANSLATION_UNIT_DECL)
gfc_add_decl_to_parent_function (token);
else
gfc_add_decl_to_function (token);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dc54c0a..e0e0bd5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-01-19 Andre Vehreschild <vehre@gcc.gnu.org>
+
+ PR fortran/70696
+ * gfortran.dg/coarray_43.f90: New test.
+
2017-01-19 Richard Earnshaw <rearnsha@arm.com>
PR rtl-optimization/79121
diff --git a/gcc/testsuite/gfortran.dg/coarray_43.f90 b/gcc/testsuite/gfortran.dg/coarray_43.f90
new file mode 100644
index 0000000..d5ee4e1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/coarray_43.f90
@@ -0,0 +1,13 @@
+! { dg-do link }
+! { dg-options "-fcoarray=lib -lcaf_single" }
+
+program coarray_43
+ implicit none
+ integer, parameter :: STR_LEN = 50
+ character(len=STR_LEN) :: str[*]
+ integer :: pos
+ write(str,"(2(a,i2))") "Greetings from image ",this_image()," of ",num_images()
+ block
+ pos = scan(str[5], set="123456789")
+ end block
+end program