diff options
author | Tobias Burnus <burnus@net-b.de> | 2007-09-22 16:20:57 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2007-09-22 16:20:57 +0200 |
commit | 9fa6cfec03275391d93cf67e1691f11c053f1220 (patch) | |
tree | ca7d1c74fc1a4a59a83a6080cb466e3998beb348 | |
parent | b235734c763af862a2606225d7aefd9990847edd (diff) | |
download | gcc-9fa6cfec03275391d93cf67e1691f11c053f1220.zip gcc-9fa6cfec03275391d93cf67e1691f11c053f1220.tar.gz gcc-9fa6cfec03275391d93cf67e1691f11c053f1220.tar.bz2 |
re PR fortran/33445 (Diagnose "!$OMP&" as an error in free format unless it is a continuation line)
2007-09-22 Tobias Burnus <burnus@net-b.de>
PR fortran/33445
* scanner.c (skip_free_comments): Warn if !$OMP& is used
if no OpenMP directive is to be continued.
2007-09-22 Tobias Burnus <burnus@net-b.de>
PR fortran/33445
* gfortran.dg/gomp/free-2.f90: New.
* gfortran.dg/gomp/appendix-a/a.31.1.f90: Add missing &.
* gfortran.dg/gomp/omp_parse1.f90: Add dg-warning.
From-SVN: r128670
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/scanner.c | 25 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.1.f90 | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/free-2.f90 | 14 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/omp_parse1.f90 | 2 |
6 files changed, 45 insertions, 11 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 586c719..f683ea3 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2007-09-22 Tobias Burnus <burnus@net-b.de> + + PR fortran/33445 + * scanner.c (skip_free_comments): Warn if !$OMP& is used + if no OpenMP directive is to be continued. + 2007-09-21 Paul Thomas <pault@gcc.gnu.org> *trans-expr.c (gfc_trans_pointer_assignment): Convert array diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index b0c7979..fe7d213 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -417,18 +417,25 @@ skip_free_comments (void) if (c == 'o' || c == 'O') { if (((c = next_char ()) == 'm' || c == 'M') - && ((c = next_char ()) == 'p' || c == 'P') - && ((c = next_char ()) == ' ' || continue_flag)) + && ((c = next_char ()) == 'p' || c == 'P')) { - while (gfc_is_whitespace (c)) - c = next_char (); - if (c != '\n' && c != '!') + if ((c = next_char ()) == ' ' || continue_flag) { - openmp_flag = 1; - openmp_locus = old_loc; - gfc_current_locus = start; - return false; + while (gfc_is_whitespace (c)) + c = next_char (); + if (c != '\n' && c != '!') + { + openmp_flag = 1; + openmp_locus = old_loc; + gfc_current_locus = start; + return false; + } } + else + gfc_warning_now ("!$OMP at %C starts a commented " + "line as it neither is followed " + "by a space nor is a " + "continuation line"); } gfc_current_locus = old_loc; next_char (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0b3c194..96387b2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2007-09-22 Tobias Burnus <burnus@net-b.de> + + PR fortran/33445 + * gfortran.dg/gomp/free-2.f90: New. + * gfortran.dg/gomp/appendix-a/a.31.1.f90: Add missing &. + * gfortran.dg/gomp/omp_parse1.f90: Add dg-warning. + 2007-09-22 Uros Bizjak <ubizjak@gmail.com> * gcc.target/i386/sse5-hadduX.c: Remove target selector. diff --git a/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.1.f90 b/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.1.f90 index 294926b..7459897 100644 --- a/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.1.f90 +++ b/gcc/testsuite/gfortran.dg/gomp/appendix-a/a.31.1.f90 @@ -3,7 +3,7 @@ SUBROUTINE A31_1(A, B, X, Y, N) INTEGER N REAL X(*), Y(*), A, B -!$OMP PARALLEL DO PRIVATE(I) SHARED(X, N) REDUCTION(+:A) +!$OMP PARALLEL DO PRIVATE(I) SHARED(X, N) REDUCTION(+:A) & !$OMP& REDUCTION(MIN:B) DO I=1,N A = A + X(I) diff --git a/gcc/testsuite/gfortran.dg/gomp/free-2.f90 b/gcc/testsuite/gfortran.dg/gomp/free-2.f90 new file mode 100644 index 0000000..60bac66 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/free-2.f90 @@ -0,0 +1,14 @@ +! { dg-do compile } +! +! PR fortran/33445 +! +!$OMP&foo ! { dg-warning "starts a commented line" } +! +!$OMP parallel +!$OMP& default(shared) ! { dg-warning "starts a commented line" } +!$OMP end parallel +! +!$OMP parallel +!$OMP+ default(shared) ! { dg-warning "starts a commented line" } +!$OMP end parallel + end diff --git a/gcc/testsuite/gfortran.dg/gomp/omp_parse1.f90 b/gcc/testsuite/gfortran.dg/gomp/omp_parse1.f90 index 9cd5ebf..d4137cd 100644 --- a/gcc/testsuite/gfortran.dg/gomp/omp_parse1.f90 +++ b/gcc/testsuite/gfortran.dg/gomp/omp_parse1.f90 @@ -17,7 +17,7 @@ call bar ! Non-continuation !$omp must be followed by space, and my reading ! doesn't seem to allow tab there. So such lines should be completely ! ignored. -!$omp strange +!$omp strange ! { dg-warning "starts a commented line" } end ! { dg-final { scan-tree-dump-times "pragma omp parallel" 3 "omplower" } } |