From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12550 invoked by alias); 25 Nov 2007 10:26:14 -0000 Received: (qmail 12487 invoked by uid 48); 25 Nov 2007 10:26:07 -0000 Date: Sun, 25 Nov 2007 10:26:00 -0000 Subject: [Bug tree-optimization/34223] New: missed optimization - complete unrolling pass before the vectorizer X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "eres at il dot ibm dot com" 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: 2007-11/txt/msg02378.txt.bz2 Consider the following test compiled with r130351 on ppc64-linux: #define M 10 #define N 3 void foo (int n, int *ub, int *uc) { int i, j, tmp1; for (i = 0; i < n; i++) { tmp1 = 0; for (j = 0; j < M; j++) { tmp1 += uc[i] * ((int)(j << N) / M); } ub[i] = tmp1; } } Here is a snippet from the vectorizer dump: c.c:12: note: not vectorized: relevant stmt not supported: D.1652_13 = j_29 << 3 c.c:12: note: bad operation or unsupported loop bound. [Adding a complete unrolling + ccp passes before the vectorizer can help to vectorize the outer loop] -- Summary: missed optimization - complete unrolling pass before the vectorizer Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: eres at il dot ibm dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34223