diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2017-10-03 13:49:39 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2017-10-03 13:49:39 +0000 |
commit | 4f8d1d3268c6c1fe336e0cf7587355cd2eb671f0 (patch) | |
tree | 636452e30c1091e4213a88fcd6ebc60ca552fa14 /gcc/fortran | |
parent | 3b7511f9219038110e5b464f197266564e2f8c76 (diff) | |
download | gcc-4f8d1d3268c6c1fe336e0cf7587355cd2eb671f0.tar.gz |
io.c (match_wait_element): Correctly match END and EOR tags.
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.
From-SVN: r253381
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/dump-parse-tree.c | 35 | ||||
-rw-r--r-- | gcc/fortran/io.c | 4 |
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; |