From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32323 invoked by alias); 5 Jul 2012 08:48:50 -0000 Received: (qmail 32314 invoked by uid 22791); 5 Jul 2012 08:48:49 -0000 X-SWARE-Spam-Status: No, hits=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,KHOP_THREADED X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 05 Jul 2012 08:48:37 +0000 From: "ebotcazou at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/47298] -O3 destroys beautifully vectorized code obtained at -O2 Date: Thu, 05 Jul 2012 08:48:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: ebotcazou at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 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: 2012-07/txt/msg00509.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47298 --- Comment #8 from Eric Botcazou 2012-07-05 08:48:24 UTC --- > It's a pass ordering issue, cunrolli also can tremendously help vectorization > because it enables vectorization of the loop that is then the innermost loop > after unrolling. It also helps exposing redunancies as you can trivially > see in SPEC CPU 2006 calculix (gfortran.dg/reassoc_4.f). Sure, no disagreement here. But we have cases where the outer loop is trivially not vectorizable because of CFG contructs and cunrolli kills the vectorization for the 32 innermost loops... Possible stopgap measures are a switch to disable cunrolli or a "no vectorize" pragma on the outer loop to thwart it.