------- Comment #14 from mikael at gcc dot gnu dot org 2009-09-11 20:39 -------
With this:
Index: scanner.c
===================================================================
--- scanner.c (revision 151461)
+++ scanner.c (working copy)
@@ -1274,6 +1274,16 @@
}
+char
+gfc_next_ascii_char_litteral (void)
+{
+ gfc_char_t c = gfc_wide_tolower(gfc_next_char_literal (0));
+
+ return (gfc_wide_fits_in_byte (c) ? (unsigned char) c :
+ (unsigned char) UCHAR_MAX);
+}
+
+
gfc_char_t
gfc_peek_char (void)
{
Index: match.c
===================================================================
--- match.c (revision 151461)
+++ match.c (working copy)
@@ -522,7 +522,7 @@
old_loc = gfc_current_locus;
gfc_gobble_whitespace ();
- c = gfc_next_ascii_char ();
+ c = gfc_next_ascii_char_litteral ();
if (!(ISALPHA (c) || (c == '_' &&
gfc_option.flag_allow_leading_underscore)))
{
if (gfc_error_flag_test() == 0 && c != '(')
@@ -544,7 +544,7 @@
}
old_loc = gfc_current_locus;
- c = gfc_next_ascii_char ();
+ c = gfc_next_ascii_char_litteral ();
}
while (ISALNUM (c) || c == '_' || (gfc_option.flag_dollar_ok && c == '$'));
I get:
pr41335.f:3.23:
volatile double precision a
1
Error: Syntax error in VOLATILE statement at (1)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41335