From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17222 invoked by alias); 2 May 2003 03:16: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 17172 invoked by uid 71); 2 May 2003 03:16:01 -0000 Resent-Date: 2 May 2003 03:16:01 -0000 Resent-Message-ID: <20030502031601.17167.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, drepper@redhat.com Received: (qmail 16780 invoked by uid 48); 2 May 2003 03:13:03 -0000 Message-Id: <20030502031303.16779.qmail@sources.redhat.com> Date: Fri, 02 May 2003 03:16:00 -0000 From: drepper@redhat.com Reply-To: drepper@redhat.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: target/10595: [ia64] use of register variables creates stop bits X-SW-Source: 2003-05/txt/msg00108.txt.bz2 List-Id: >Number: 10595 >Category: target >Synopsis: [ia64] use of register variables creates stop bits >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri May 02 03:16:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Ulrich Drepper >Release: gcc-3.2.3 (and probably later) >Organization: >Environment: Linux/ia64 >Description: Every use of register variables, variables declared like register int foo __asm ("r13") cause stop bits to be generated right after loading from the register. The use of register variables is quite frequent in the C runtime and also in the kernel so that this is a problem. >How-To-Repeat: Compile this code: register long int r __asm ("r13"); int foo (long a) { return bar(r) != a; } The result I see looks like this: 0: 01 18 15 08 80 05 [MII] alloc r35=ar.pfs,5,4,0 6: 20 02 00 62 00 80 mov r34=b0 c: 04 68 00 84 mov r36=r13;; 10: 17 00 00 00 00 08 [BBB] nop.b 0x0 12: PCREL21B bar 16: 00 00 00 00 10 00 nop.b 0x0 1c: 08 00 00 50 br.call.sptk.many b0=10 ;; [...] Note the stop bits after mov r36=r13. Many more examples can be seen by looking at the thread Linux library. >Fix: >Release-Note: >Audit-Trail: >Unformatted: