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 + + PR fortran/34997 + * match.c (gfc_match_name): Improve error message for '$'. + 2008-02-19 Daniel Franke 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 + + PR fortran/34997 + * gfortran.dg/dollar_sym_1.f90: New. + * gfortran.dg/dollar_sym_2.f90: New. + 2008-02-20 Richard Guenther 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