From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25612 invoked by alias); 4 Feb 2006 13:52:46 -0000 Received: (qmail 25581 invoked by uid 48); 4 Feb 2006 13:52:43 -0000 Date: Sat, 04 Feb 2006 13:52:00 -0000 Message-ID: <20060204135243.25580.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug rtl-optimization/19580] [3.4/4.0/4.1/4.2 Regression] missed load/store motion In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rguenth at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2006-02/txt/msg00317.txt.bz2 List-Id: ------- Comment #25 from rguenth at gcc dot gnu dot org 2006-02-04 13:52 ------- On the mainline now even g() regresses, probably because of the reassoc pass rewrite. Of course on the mainline this is also "fixed" by --param salias-max-array-elements=6, which makes load/store motion work on the tree level. It looks like expand only with :; r[0] = r[0] + r[1]; r[1] = r[1] + r[2]; r[2] = r[2] + r[3]; r[3] = r[3] + r[4]; r[4] = r[4] + r[5]; r[5] = r[5] + r[0]; ivtmp.63 = ivtmp.63 + 1; if (ivtmp.63 != (unsigned int) n.68) goto ; else goto ; produces RTL that we can optimize to .L13: addl %edi, %esi incl %ebp addl %ebx, %edi addl %ecx, %ebx addl %edx, %ecx addl %eax, %edx addl %esi, %eax cmpl (%esp), %ebp jne .L13 but not for (mainline) :; D.1544 = r[1] + r[0]; r[0] = D.1544; r[1] = r[2] + r[1]; r[2] = r[3] + r[2]; r[3] = r[4] + r[3]; r[4] = r[5] + r[4]; r[5] = D.1544 + r[5]; n.61 = n.61 - 1; if (n.61 != 0) goto ; else goto ; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19580