http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52724
Bug #: 52724 Summary: Internal read with character(kind=4) data Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: tkoe...@gcc.gnu.org This code in io/unit.c looks fishy: /* Set initial values for unit parameters. */ if (dtp->common.unit) { iunit->s = open_internal4 (dtp->internal_unit - start_record, dtp->internal_unit_len, -start_record); fbuf_init (iunit, 256); } else iunit->s = open_internal (dtp->internal_unit - start_record, dtp->internal_unit_len, -start_record); because it supposes that an internal unit for character(kind=4) data has an internal unit number which is unequal to zero. And, in fact, this fails: ig25@linux-fd1f:~/Krempel/Opt> cat foo.f90 !234567 character buffer4(100) integer i buffer4 = 4_'123' read(buffer4,*) i print *,i end ig25@linux-fd1f:~/Krempel/Opt> gfortran foo.f90 ig25@linux-fd1f:~/Krempel/Opt> ./a.out 1