[Bug middle-end/54963] New: Wrong code generated for libgfortran/generated/eoshift3_8.c on SH

kkojima at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Oct 17 23:49:00 GMT 2012


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

             Bug #: 54963
           Summary: Wrong code generated for
                    libgfortran/generated/eoshift3_8.c on SH
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Keywords: wrong-code
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: kkojima@gcc.gnu.org
            Target: sh*-*-*


Created attachment 28469
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28469
A test case

Several fortran tests using some eoshift functions fail on
sh4-unknown-linux-gnu for a while.  The above test case is
a reduced one which fails sh-elf with -O2 -ml -m4.  The right
result would be "adhbeh..." but it wrongly returns "ticzzz...".
It seems that the compiler allocates a stack slot at r15+60
for "len" variable first for the line 126:

   len = ((array)->dim[dim]._ubound + 1 - (array)->dim[dim].lower_bound);

then computes len - abs (sh) for the line 184;

   for (n = 0; n < len - delta; n++)

using "len" variable at r15+68.  The error went away with
-fno-ira-share-spill-slots.



More information about the Gcc-bugs mailing list