http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51497
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2011-12-12 Ever Confirmed|0 |1 --- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-12-12 14:40:38 UTC --- I can't reproduce anything with the testcase from comment #2. I can confirm, for the whole nf.f90 testcase: 191: LOOP VECTORIZED. 192: LOOP VECTORIZED. 193: LOOP VECTORIZED. -206: LOOP VECTORIZED. -207: LOOP VECTORIZED. -208: LOOP VECTORIZED. -209: LOOP VECTORIZED. -210: LOOP VECTORIZED. -211: LOOP VECTORIZED. -212: LOOP VECTORIZED. 220: LOOP VECTORIZED. 248: LOOP VECTORIZED. -261: LOOP VECTORIZED. 265: LOOP VECTORIZED. 267: LOOP VECTORIZED. 280: LOOP VECTORIZED. -293: LOOP VECTORIZED. 297: LOOP VECTORIZED. 299: LOOP VECTORIZED. for -flto vs. -fno-lto. I see differences in the dumps, mainly around references to parent function variables appearantly no longer hoisted out of the loop. Maybe you can reduce the testcase with this information? Simple try failed: subroutine nfcg(nx,nxy,nxyz,ad,x,maxiter) implicit none ; integer,parameter :: dpkind=kind(1.0D0) integer :: nx , nxy , nxyz , maxiter real(dpkind),dimension(nxyz):: ad,x real(dpkind),allocatable,dimension(:) :: r allocate (r(nxyz)) CALL SPMMULT(r,x) contains subroutine spmmult(x,b) real(dpkind),dimension(nxyz):: x,b b = ad*x end subroutine spmmult end subroutine no CHAIN pointers left.