The string lengths are truncated to 32-bit
values here, which shouldn't happen.

$ cat substr.f90
program main
  character (len=2_8**32_8+4_8) :: ch
  ch = ' '
  print *,ch(1:2_8**32_8+3_8)
end program main
$ gfortran -fdump-tree-original substr.f90
$ cat substr.f90.003t.original
MAIN__ ()
{
  char ch[1:4];

  _gfortran_set_std (68, 127, 0);
  __builtin_memmove (&ch, " ", 1);
  __builtin_memset (&ch + 1B, 32, 3);

...


-- 
           Summary: truncating strings longer than 2**32 characters
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: tkoenig at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31243

Reply via email to