summaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authortkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2017-10-03 13:49:39 +0000
committertkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2017-10-03 13:49:39 +0000
commit1a59a9b9e4f0b47e481bd2350a51a9e0d162aab7 (patch)
tree636452e30c1091e4213a88fcd6ebc60ca552fa14 /gcc/fortran
parent2417a922eb63de139fae4e41dd0b8f67a6b3a3f8 (diff)
downloadgcc-1a59a9b9e4f0b47e481bd2350a51a9e0d162aab7.tar.gz
2017-10-03 Thomas Koenig <tkoenig@gcc.gnu.org>
* io.c (match_wait_element): Correctly match END and EOR tags. * dump-parse-tree.c (show_code_node): Handle EXEC_WAIT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@253381 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/dump-parse-tree.c35
-rw-r--r--gcc/fortran/io.c4
3 files changed, 42 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 0e7c7a8e787..6f904b1e735 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-03 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * io.c (match_wait_element): Correctly match END and EOR tags.
+ * dump-parse-tree.c (show_code_node): Handle EXEC_WAIT.
+
2017-10-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/82312
diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c
index a9107c15e59..a0098d70743 100644
--- a/gcc/fortran/dump-parse-tree.c
+++ b/gcc/fortran/dump-parse-tree.c
@@ -2727,6 +2727,41 @@ show_code_node (int level, gfc_code *c)
fprintf (dumpfile, " EOR=%d", dt->eor->value);
break;
+ case EXEC_WAIT:
+ fputs ("WAIT", dumpfile);
+
+ if (c->ext.wait != NULL)
+ {
+ gfc_wait *wait = c->ext.wait;
+ if (wait->unit)
+ {
+ fputs (" UNIT=", dumpfile);
+ show_expr (wait->unit);
+ }
+ if (wait->iostat)
+ {
+ fputs (" IOSTAT=", dumpfile);
+ show_expr (wait->iostat);
+ }
+ if (wait->iomsg)
+ {
+ fputs (" IOMSG=", dumpfile);
+ show_expr (wait->iomsg);
+ }
+ if (wait->id)
+ {
+ fputs (" ID=", dumpfile);
+ show_expr (wait->id);
+ }
+ if (wait->err)
+ fprintf (dumpfile, " ERR=%d", wait->err->value);
+ if (wait->end)
+ fprintf (dumpfile, " END=%d", wait->end->value);
+ if (wait->eor)
+ fprintf (dumpfile, " EOR=%d", wait->eor->value);
+ }
+ break;
+
case EXEC_OACC_PARALLEL_LOOP:
case EXEC_OACC_PARALLEL:
case EXEC_OACC_KERNELS_LOOP:
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 2c3d761982b..af465dc00ea 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -4641,8 +4641,8 @@ match_wait_element (gfc_wait *wait)
m = match_etag (&tag_unit, &wait->unit);
RETM m = match_ltag (&tag_err, &wait->err);
- RETM m = match_ltag (&tag_end, &wait->eor);
- RETM m = match_ltag (&tag_eor, &wait->end);
+ RETM m = match_ltag (&tag_end, &wait->end);
+ RETM m = match_ltag (&tag_eor, &wait->eor);
RETM m = match_etag (&tag_iomsg, &wait->iomsg);
if (m == MATCH_YES && !check_char_variable (wait->iomsg))
return MATCH_ERROR;