summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/match.c7
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/dollar_sym_1.f909
-rw-r--r--gcc/testsuite/gfortran.dg/dollar_sym_2.f9011
5 files changed, 38 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index ea74958f3f9..cdce2802b29 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2008-02-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/34997
+ * match.c (gfc_match_name): Improve error message for '$'.
+
2008-02-19 Daniel Franke <franke.daniel@gmail.com>
PR fortran/35030
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 324e52ecee0..c1920ff9d58 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -519,6 +519,13 @@ gfc_match_name (char *buffer)
}
while (ISALNUM (c) || c == '_' || (gfc_option.flag_dollar_ok && c == '$'));
+ if (c == '$' && !gfc_option.flag_dollar_ok)
+ {
+ gfc_error ("Invalid character '$' at %C. Use -fdollar-ok to allow it as an extension");
+ return MATCH_ERROR;
+ }
+
+
buffer[i] = '\0';
gfc_current_locus = old_loc;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 04c799fe178..34ccb964a48 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/34997
+ * gfortran.dg/dollar_sym_1.f90: New.
+ * gfortran.dg/dollar_sym_2.f90: New.
+
2008-02-20 Richard Guenther <rguenther@suse.de>
PR middle-end/35265
diff --git a/gcc/testsuite/gfortran.dg/dollar_sym_1.f90 b/gcc/testsuite/gfortran.dg/dollar_sym_1.f90
new file mode 100644
index 00000000000..37f0f888d62
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dollar_sym_1.f90
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! PR fortran/34997
+! Variable names containing $ signs
+!
+ REAL*4 PLT$C_HOUSTPIX ! { dg-error "Invalid character '\\$'" }
+ INTEGER PLT$C_COMMAND ! { dg-error "Invalid character '\\$'" }
+ PARAMETER (PLT$B_OPC=0) ! { dg-error "Invalid character '\\$'" }
+ common /abc$def/ PLT$C_HOUSTPIX, PLT$C_COMMAND ! { dg-error "Invalid character '\\$'" }
+ end
diff --git a/gcc/testsuite/gfortran.dg/dollar_sym_2.f90 b/gcc/testsuite/gfortran.dg/dollar_sym_2.f90
new file mode 100644
index 00000000000..800a728749a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dollar_sym_2.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! { dg-options "-fdollar-ok" }
+!
+! PR fortran/34997
+! Variable names containing $ signs
+!
+ REAL*4 PLT$C_HOUSTPIX
+ INTEGER PLT$C_COMMAND
+ PARAMETER (PLT$B_OPC=0)
+ common /abc$def/ PLT$C_HOUSTPIX, PLT$C_COMMAND
+ end