Current mainline gfortran fails to build four SPEC CPU2000 tests on
powerpc64-linux using "-m64 -O2 -ffast-math -funroll-loops".  In a
call to is_gimple_stmt it tries to dereference a pointer that the
garbage collector has poisoned.  This reduced test case (which can
undoubtedly be made smaller) demonstrates the problem using
--param gcc-min-heapsize=1 for powerpc-linux:
                                                                                
      subroutine foo
      implicit real*8 (a-h,o-z)
      real u(5,60,60,60)
      do i = 2, nx-1
        x = dble(i-1) / (nx-1)
        do m = 1, 5
          px = (1.0d+00 - x) * u(m,1,j,k) + x * u(m,nx,j,k)
          pz = (1.0d+00 - z) * u(m,i,j,l) + z * u(m,i,j,nz)
          u(m,i,j,k) = px + p + pz
        end do
      end do
      return
      end

elm3b11% /opt/gcc-nightly/mline/bin/gfortran -c -m64 -O2 -ffast-math
-funroll-loops --param ggc-min-heapsize=1 bug.f
bug.f: In function ‘foo’:
bug.f:1: internal compiler error: Segmentation fault

elm3b11% /opt/gcc-nightly/mline/bin/gfortran -c -m32 -O2 -ffast-math --param
ggc-min-heapsize=1 bug.f
bug.f: In function ‘foo’:
bug.f:1: internal compiler error: Segmentation fault

The failure begins with this patch from dje:

  http://gcc.gnu.org/ml/gcc-cvs/2005-04/msg00598.html

-- 
           Summary: use of poisoned ggc memory causes cpu2000 build failures
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: janis at gcc dot gnu dot org
                CC: dje at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot
                    org
 GCC build triplet: powerpc-linux
  GCC host triplet: powerpc-linux
GCC target triplet: powerpc-linux


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

Reply via email to