This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/32824] Missed reduction vectorizer after store to global is LIM'd
- From: "dorit at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 14 Aug 2007 20:48:01 -0000
- Subject: [Bug tree-optimization/32824] Missed reduction vectorizer after store to global is LIM'd
- References: <bug-32824-6528@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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