From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12775 invoked by alias); 12 Jun 2002 11:46:04 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 12751 invoked by uid 71); 12 Jun 2002 11:46:01 -0000 Resent-Date: 12 Jun 2002 11:46:01 -0000 Resent-Message-ID: <20020612114601.12750.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, skimo@kotnet.org Received: (qmail 12555 invoked by uid 61); 12 Jun 2002 11:45:03 -0000 Message-Id: <20020612114503.12554.qmail@sources.redhat.com> Date: Wed, 12 Jun 2002 04:46:00 -0000 From: skimo@kotnet.org Reply-To: skimo@kotnet.org To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: optimization/7002: gcc -fPIC incorrect optimization on i586 X-SW-Source: 2002-06/txt/msg00268.txt.bz2 List-Id: >Number: 7002 >Category: optimization >Synopsis: gcc -fPIC incorrect optimization on i586 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Wed Jun 12 04:46:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Sven Verdoolaege >Release: 3.1 >Organization: >Environment: System: Linux pool 2.4.12 #31 Sat Oct 13 23:07:11 CEST 2001 i586 unknown Architecture: i586 host: i586-pc-linux-gnu build: i586-pc-linux-gnu target: i586-pc-linux-gnu configured with: ../../src/gcc/configure --enable-shared --prefix=/usr : (reconf igured) ../../src/gcc/configure --enable-shared --prefix=/usr GNU C Library stable release version 2.2.4, by Roland McGrath et al. GNU ld version 2.12.90.0.9 20020526 >Description: The following piece of code (in a certain context) is compiled incorrectly with -O2 -fPIC. It compiles correctly without either of the two. vert = Matrix_Alloc(temp->NbRows-1, temp->NbColumns); for (i = 1; i < temp->NbRows; i++) for (j = 0; j < temp->NbColumns ; j++) ((vert->p[i-1][j]) = (temp->p[0][j])-(temp->p[i][j])); (line 2257 of Lattice.i) objdump: value_substract(vert->p[i-1][j],temp->p[0][j],temp->p[i][j]); 3e5: 8b 75 e4 mov 0xffffffe4(%ebp),%esi 3e8: 8b bd 58 ff ff ff mov 0xffffff58(%ebp),%edi %edi contains temp->p[i] %ecx contains temp->p[0] 3ee: 8b 04 f1 mov (%ecx,%esi,8),%eax 3f1: 8b 54 f1 04 mov 0x4(%ecx,%esi,8),%edx 3f5: 2b 04 f7 sub (%edi,%esi,8),%eax 3f8: 1b 54 f7 04 sbb 0x4(%edi,%esi,8),%edx subtraction is correctly performed, 3fc: 89 04 f7 mov %eax,(%edi,%esi,8) but result is written back into temp->p[i][j] instead of into vert->p[i-1][j] 3ff: 8b 85 50 ff ff ff mov 0xffffff50(%ebp),%eax 405: 89 54 f7 04 mov %edx,0x4(%edi,%esi,8) 409: 46 inc %esi 40a: 89 75 e4 mov %esi,0xffffffe4(%ebp) >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-bzip2; name="Lattice.i.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Lattice.i.bz2" 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