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