------- Comment #4 from jvdelisle at gcc dot gnu dot org 2008-03-18 04:25 ------- Naturally, the patch in comment #2 breaks namelist_44.f90 (I say that because, after all, we are up to 44 namelist test cases, and about to go to 45 :) )
Nevertheless, this fixes it and passes regression. Index: list_read.c =================================================================== --- list_read.c (revision 133275) +++ list_read.c (working copy) @@ -356,6 +356,11 @@ eat_separator (st_parameter_dt *dtp) { eat_line (dtp); c = next_char (dtp); + if (c == '!') + { + eat_line (dtp); + c = next_char (dtp); + } } } while (c == '\n' || c == '\r' || c == ' '); eatline leaves us pointing to the first character of the next line, which we then get, which causes the while loop to exit, followed by an unget. So the next get char will get a '!' which is nonsense and can not be matched. The patch circumvents this special case. I will commit as obvious to trunk and then to 4.3 in a few days. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35617