diff options
author | Harald Anlauf <anlauf@gmx.de> | 2025-05-08 22:21:03 +0200 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2025-05-09 21:57:03 +0200 |
commit | c60183d8265b5bd509007cf494549667c8c08faa (patch) | |
tree | 3ffc75d0992e26187a19e8439391731c7ae0ea90 | |
parent | 01324ffac8bcc6813ffbc78993a674bcac7b52ab (diff) | |
download | gcc-c60183d8265b5bd509007cf494549667c8c08faa.zip gcc-c60183d8265b5bd509007cf494549667c8c08faa.tar.gz gcc-c60183d8265b5bd509007cf494549667c8c08faa.tar.bz2 |
Fortran: parsing issue with DO CONCURRENT;ENDDO on same line [PR120179]
PR fortran/120179
gcc/fortran/ChangeLog:
* match.cc (gfc_match_do): Do not attempt to match end-of-statement
twice.
gcc/testsuite/ChangeLog:
* gfortran.dg/do_concurrent_basic.f90: Extend testcase.
(cherry picked from commit 6ce73ad4370c143a7d1e6a13b1d353db5884213f)
-rw-r--r-- | gcc/fortran/match.cc | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/do_concurrent_basic.f90 | 7 |
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/fortran/match.cc b/gcc/fortran/match.cc index ec9e587..0f6b8e9 100644 --- a/gcc/fortran/match.cc +++ b/gcc/fortran/match.cc @@ -2738,7 +2738,7 @@ gfc_match_do (void) locus where = gfc_current_locus; if (gfc_match_eos () == MATCH_YES) - break; + goto concurr_ok; else if (gfc_match ("local ( ") == MATCH_YES) { @@ -2987,6 +2987,7 @@ gfc_match_do (void) if (gfc_match_eos () != MATCH_YES) goto concurr_cleanup; +concurr_ok: if (label != NULL && !gfc_reference_st_label (label, ST_LABEL_DO_TARGET)) goto concurr_cleanup; diff --git a/gcc/testsuite/gfortran.dg/do_concurrent_basic.f90 b/gcc/testsuite/gfortran.dg/do_concurrent_basic.f90 index fe8723d..bdb6e0e 100644 --- a/gcc/testsuite/gfortran.dg/do_concurrent_basic.f90 +++ b/gcc/testsuite/gfortran.dg/do_concurrent_basic.f90 @@ -1,4 +1,4 @@ -! { dg-do run } +! { dg-do compile } program basic_do_concurrent implicit none integer :: i, arr(10) @@ -7,5 +7,8 @@ program basic_do_concurrent arr(i) = i end do + do concurrent (i=1:10);enddo + do,concurrent (i=1:10);arr(i)=i;enddo + print *, arr -end program basic_do_concurrent
\ No newline at end of file +end program basic_do_concurrent |