From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22566 invoked by alias); 3 Jan 2002 15:06:01 -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 22532 invoked by uid 71); 3 Jan 2002 15:06:00 -0000 Resent-Date: 3 Jan 2002 15:06:00 -0000 Resent-Message-ID: <20020103150600.22531.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, luke@stat.umn.edu Received:(qmail 21230 invoked by uid 61); 3 Jan 2002 15:02:52 -0000 Message-Id:<20020103150252.21229.qmail@sources.redhat.com> Date: Thu, 03 Jan 2002 07:06:00 -0000 From: luke@stat.umn.edu Reply-To: luke@stat.umn.edu To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: optimization/5264: Possible optimization bug at -O2 on HP-UX X-SW-Source: 2002-01/txt/msg00120.txt.bz2 List-Id: >Number: 5264 >Category: optimization >Synopsis: Possible optimization bug at -O2 on HP-UX >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Thu Jan 03 07:06:00 PST 2002 >Closed-Date: >Last-Modified: >Originator: Luke Tierney >Release: gcc version 2.95.2 19991024 (release) >Organization: >Environment: HP-UX bass B.11.00 A 9000/780 2007851940 >Description: A possible optimization bug at -O2 on HP-UX found in building R (Gnu S). Simplified program: ---------------(opttest.c)--------------------------------------------#include double x[] = { 1.0, 2.0}, y[] = { 1.0, 2.0 }, z[2]; main() { int i, i1, i2, n, n1, n2; i1 = i2 = 0; n = n1 = n2 = 2; for (i = 0; i < n; i++) { z[i] = x[i1] + y[i2]; i1 = (++i1 == n1) ? 0 : i1; i2 = (++i2 == n2) ? 0 : i2; } printf("z[1] = %g\n", z[1]); } ---------------------------------------------------------------------- Without optimization or with just -O it works fine: tierney@bass [125]% gcc -o opttest opttest.c ltierney@bass [126]% ./opttest z[1] = 4ltierney@bass [127]% gcc -O -o opttest opttest.c ltierney@bass [128]% ./opttest z[1] = 4 But with -O2 it gets the wrong answer: ltierney@bass [129]% gcc -O2 -o opttest opttest.c ltierney@bass [130]% ./opttest z[1] = 2 Please let me know if you need additional info. >How-To-Repeat: On HP-UX compare output of gcc -O2 -o opttest opttest.c; ./opttest gcc -O -o opttest opttest.c; ./opttest >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="opttest.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="opttest.c" I2luY2x1ZGUgPHN0ZGlvLmg+Cgpkb3VibGUgeFtdID0geyAxLjAsIDIuMH0sIHlbXSA9IHsgMS4w LCAyLjAgfSwgelsyXTsKCm1haW4oKQp7CiAgaW50IGksIGkxLCBpMiwgbiwgbjEsIG4yOwoKICBp MSA9IGkyID0gMDsKICBuID0gbjEgPSBuMiA9IDI7CgogIGZvciAoaSA9IDA7IGkgPCBuOyBpKysp IHsKICAgIHpbaV0gPSB4W2kxXSArIHlbaTJdOwogICAgaTEgPSAoKytpMSA9PSBuMSkgPyAwIDog aTE7CiAgICBpMiA9ICgrK2kyID09IG4yKSA/IDAgOiBpMjsKICB9CiAgcHJpbnRmKCJ6WzFdID0g JWdcbiIsIHpbMV0pOwp9Cg==