[Bug tree-optimization/32824] Missed reduction vectorizer after store to global is LIM'd
dorit at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Aug 14 20:48:00 GMT 2007
------- 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
More information about the Gcc-bugs
mailing list