From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6072 invoked by alias); 5 Dec 2002 02:46:05 -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 6009 invoked by uid 71); 5 Dec 2002 02:46:04 -0000 Resent-Date: 5 Dec 2002 02:46:04 -0000 Resent-Message-ID: <20021205024604.6007.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, tege@bob.swox.se Received: (qmail 3838 invoked from network); 5 Dec 2002 02:42:46 -0000 Received: from unknown (HELO king.swox.se) (212.247.3.130) by sources.redhat.com with SMTP; 5 Dec 2002 02:42:46 -0000 Received: from bob.swox.se (bob.swox.se [10.0.0.141]) by king.swox.se (Postfix) with ESMTP id 9043D385 for ; Thu, 5 Dec 2002 03:42:45 +0100 (CET) Received: by bob.swox.se (Postfix, from userid 1001) id 2F7ED7; Thu, 5 Dec 2002 03:42:45 +0100 (MET) Message-Id: <20021205024245.2F7ED7@bob.swox.se> Date: Wed, 04 Dec 2002 18:46:00 -0000 From: tege@bob.swox.se To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: 3.113 Subject: target/8816: bad assembly generated X-SW-Source: 2002-12/txt/msg00262.txt.bz2 List-Id: >Number: 8816 >Category: target >Synopsis: bad assembly generated >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Wed Dec 04 18:46:02 PST 2002 >Closed-Date: >Last-Modified: >Originator: Torbjorn Granlund >Release: 3.2.1 >Organization: Swox AB >Environment: System: SunOS bob.swox.se 5.7 Generic sun4u sparc SUNW,Ultra-60 Architecture: sun4 host: sparc-sun-solaris2.7 build: sparc-sun-solaris2.7 target: sparc-sun-solaris2.7 configured with: /u/gcc/gcc-3.2.1/configure --enable-languages=c,c++ >Description: Incorrect assembly code is generated for symbol+constant expressions that are generated as a result of constant propagation. Assembly sample: lduh [%o0+%lo(tab)+2], %o0 The last instruction is really dubious, adding a cnstant outside the lo() expression. The system assembler rightly complains, but the GNU assembler (version 2.13.1) silently ignores the +2. (I report that bug separately.) What makes this bug really serious is that the GNU assembler misses the incorrect assembly syntax. >How-To-Repeat: Compilation command: gcc -O -m64 ~/tco.c This is tco.c: unsigned short tab[] = { 0xbad, 0xcafe }; int foo () { int n = 1; return tab[n]; } int main () { if (foo () != 0xcafe) abort (); return 0; } >Fix: >Release-Note: >Audit-Trail: >Unformatted: