This is related to an undocumented warning flag. In options.c, gfortran sets
several warnings to on. One of these is
gfc_option.warn_character_truncation = 1;
If I change this to 0, then your code with -Wall compiles. Fortunately,
gfc_option.warn_character_truncation appears only in decl.c and
resolve.c, and occurs exactly once in both files. A few things need to
occur:
1) Add a -W[no-]character-truncation option.
2) Document the option.
3) Fix Martin's bug