------- Comment #5 from dorit at gcc dot gnu dot org 2007-08-14 20:47 ------- Additional testcases:
(1) see loop in lines 23 and 32 in http://gcc.gnu.org/ml/gcc-help/2007-08/msg00171.html (2) > SUBROUTINE SUSCEP(L,Iz) > IMPLICIT NONE > INTEGER L , Iz(L,L) , iznum, ix, iy > iznum = 0 > DO ix = 1 , L > DO iy = 1 , L > iznum = iznum + Iz(iy,ix) > ENDDO > ENDDO > PRINT* iznum > END subroutine > end > The above is a slightly modified testcase taken from Polyhedron test suite (ac.f90). We get: b.f90:6: note: Analyze phi: iznum_lsm.74_31 = PHI <iznum_lsm.74_32(4), iznum_lsm.74_12(6)> b.f90:6: note: reduction: not commutative/associative: iznum.10_37 tobias2b.f90:6: note: Unknown def-use cycle pattern. ... b.f90:6: note: worklist: examine stmt: iznum.9_36 = iznum_lsm.74_31 b.f90:6: note: vect_is_simple_use: operand iznum_lsm.74_31 b.f90:6: note: def_stmt: iznum_lsm.74_31 = PHI <iznum_lsm.74_32(4), iznum_lsm.74_12(6)> b.f90:6: note: Unsupported pattern. b.f90:6: note: not vectorized: unsupported use in stmt. 2b.f90:6: note: unexpected pattern. This happens because we get the following pattern: # iznum_lsm.74_31 = PHI <iznum_lsm.74_32(4), iznum_lsm.74_12(6)> ... iznum.9_36 = iznum_lsm.74_31; iznum.10_37 = D.1420_35 + iznum.9_36; iznum_lsm.74_12 = iznum.10_37; ... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32824