From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11499 invoked by alias); 25 Feb 2009 12:16:48 -0000 Received: (qmail 11456 invoked by uid 48); 25 Feb 2009 12:16:36 -0000 Date: Wed, 25 Feb 2009 12:16:00 -0000 Subject: [Bug tree-optimization/39300] New: vectorizer confused by predictive commoning X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "matz at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-02/txt/msg02153.txt.bz2 The loop in this test is not vectorized if either PRE or predictive commoning is active: % cat vecttest2.f subroutine Bench_StaggeredLeapfrog2( cctk_dim,XADM_curv_stag0, &ADM_kzz_stag,lgxx,nx) implicit none INTEGER cctk_dim INTEGER XADM_curv_stag0 REAL*8 ADM_kzz_stag(XADM_curv_stag0) integer :: i integer :: nx REAL*8,DIMENSION(cctk_dim):: lgxx do i=2,nx-1 ADM_kzz_stag(i) = ADM_kzz_stag(i)+lgxx(i)+lgxx(i-1)+lgxx(i+1) end do end subroutine Bench_StaggeredLeapfrog2 % gfortran -c -O3 -g -ffast-math -ftree-vectorizer-verbose=2 vecttest2.f vecttest2.f:11: note: not vectorized: unsupported use in stmt. vecttest2.f:12: note: not vectorized: unsupported use in stmt. % add -fno-tree-pre -fno-predictive-commoning to above command: vecttest2.f:11: note: LOOP VECTORIZED. % add only -fno-tree-pre (so predictive commoning is active): vecttest2.f:11: note: LOOP VECTORIZED. vecttest2.f:12: note: not vectorized: unsupported use in stmt. The one vectorized loop in case it mentions two of them is the tail loop for the one produced by predictive commoning. That one doesn't contain any loop carried values. Somehow the vectorizer doesn't like the PHI nodes in the loop created by predictive commoning. This testcase comes from 436.cactusADM, where it's very important to vectorize a certain inner loop, and this (PRE and predcom) is one reason this doesn't happen already. -- Summary: vectorizer confused by predictive commoning Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: matz at gcc dot gnu dot org GCC host triplet: x86_64-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39300