summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/match.c2
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gfortran.dg/do_iterator.f902
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr29759.f908
-rw-r--r--gcc/testsuite/gfortran.dg/invalid_name.f906
6 files changed, 26 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 116d4ac7e36..5615d1f91a6 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-07 Bernhard Fischer <aldot@gcc.gnu.org>
+
+ PR fortran/27698
+ * match.c (gfc_match_name): Print diagnostics for invalid
+ character in names.
+
2007-01-06 Steven G. Kargl <kargl@gcc.gnu.org>
* array.c: Fix whitespace in comment table.
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 0dc2c7295b1..376f0a538c7 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -396,6 +396,8 @@ gfc_match_name (char *buffer)
c = gfc_next_char ();
if (!ISALPHA (c))
{
+ if (gfc_error_flag_test() == 0)
+ gfc_error ("Invalid character in name at %C");
gfc_current_locus = old_loc;
return MATCH_NO;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cc6dd8ebc7e..3047d1ed28b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2007-01-07 Bernhard Fischer <aldot@gcc.gnu.org>
+
+ PR fortran/27698
+ * gfortran.dg/invalid_name.f90: New test.
+ * gfortran.dg/do_iterator.f90: Adjust pattern for expected error.
+ * gfortran.dg/gomp/pr29759.f90: Ditto.
+
2007-01-06 Steven G. Kargl <kargl@gcc.gnu.org>
* gfortran.dg/present_1.f90: Update error message.
diff --git a/gcc/testsuite/gfortran.dg/do_iterator.f90 b/gcc/testsuite/gfortran.dg/do_iterator.f90
index 0e11aa23339..cb3e50d59bc 100644
--- a/gcc/testsuite/gfortran.dg/do_iterator.f90
+++ b/gcc/testsuite/gfortran.dg/do_iterator.f90
@@ -10,4 +10,4 @@ DO I=1,5 ! { dg-error "cannot be redefined" "changing do-iterator 3" }
READ(5,*,iostat=i) j ! { dg-error "cannot be redefined" "changing do-iterator 3" }
ENDDO
END
-
+! { dg-error "Invalid character" "character" { target *-*-* } 7 }
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr29759.f90 b/gcc/testsuite/gfortran.dg/gomp/pr29759.f90
index 19a19c978ae..b723eeb3c76 100644
--- a/gcc/testsuite/gfortran.dg/gomp/pr29759.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/pr29759.f90
@@ -22,21 +22,21 @@ PROGRAM test_omp
!$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" }
-!$ NUM_THREADS(2) ! { dg-error "Unclassifiable" }
+!$ NUM_THREADS(2) ! { dg-error "Unclassifiable|Invalid character" }
!$OMP END PARALLEL ! { dg-error "Unexpected" }
!$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" }
-!$ & NUM_THREADS(2) ! { dg-error "Unclassifiable" }
+!$ & NUM_THREADS(2) ! { dg-error "Unclassifiable|Invalid character" }
!$OMP END PARALLEL ! { dg-error "Unexpected" }
!$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" }
!
-!$ NUM_THREADS(2) ! { dg-error "Unclassifiable" }
+!$ NUM_THREADS(2) ! { dg-error "Unclassifiable|Invalid character" }
!$OMP END PARALLEL ! { dg-error "Unexpected" }
!$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" }
!
-!$ & NUM_THREADS(2) ! { dg-error "Unclassifiable" }
+!$ & NUM_THREADS(2) ! { dg-error "Unclassifiable|Invalid character" }
!$OMP END PARALLEL ! { dg-error "Unexpected" }
END PROGRAM
diff --git a/gcc/testsuite/gfortran.dg/invalid_name.f90 b/gcc/testsuite/gfortran.dg/invalid_name.f90
new file mode 100644
index 00000000000..895664f8491
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/invalid_name.f90
@@ -0,0 +1,6 @@
+! { dg-do compile }
+! Tests the fix for PR27698, where names not starting with a letter were
+! rejected but not diagnosed with a proper message.
+SUBROUTINE _foo ! { dg-error "Invalid character in name" }
+END
+
OpenPOWER on IntegriCloud