http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47633
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org --- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-02-07 18:58:24 UTC --- > if (ichar(v(n:n)) /= 41 .or. ichar(v(n+1:n+1)) /= 32) call abort() (In reply to comment #4) > The testcase is bad, because for vanilla gcc releases there is no (prerelease) > etc. string at all (DEV-PHASE is empty), and because it hardcodes ASCII > values, > so I'm afraid it could fail on EBCDIC or other targets. Regarding the char: using "iachar" instead of "ichar" should work. * * * len = strlen ("GCC version ") + strlen (version_string) + 1; + buffer = XALLOCAVEC (char, len); snprintf (buffer, len, "GCC version %s", version_string); return gfc_get_character_expr (gfc_default_character_kind, + &gfc_current_locus, buffer, len - 1); I wonder whether one should strip the "+1" in the first line and use "len+1" for alloca/snprintf; it seems to be easier to follow than the "len - 1" in the last line.