From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13031 invoked by alias); 17 Jun 2002 13:16:10 -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 12966 invoked by uid 71); 17 Jun 2002 13:16:03 -0000 Resent-Date: 17 Jun 2002 13:16:03 -0000 Resent-Message-ID: <20020617131603.12962.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, pb@nexus.co.uk Received: (qmail 10570 invoked by uid 61); 17 Jun 2002 13:09:27 -0000 Message-Id: <20020617130927.10569.qmail@sources.redhat.com> Date: Mon, 17 Jun 2002 07:00:00 -0000 From: pb@nexus.co.uk Reply-To: pb@nexus.co.uk To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: target/7056: [ARM] zero extend code worse in 3.1 than 3.0 X-SW-Source: 2002-06/txt/msg00392.txt.bz2 List-Id: >Number: 7056 >Category: target >Synopsis: [ARM] zero extend code worse in 3.1 than 3.0 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: pessimizes-code >Submitter-Id: net >Arrival-Date: Mon Jun 17 06:16:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: pb@nexus.co.uk >Release: gcc-3.1 >Organization: >Environment: arm-linux >Description: See code below. With gcc-3.0 -O2, this yields stmfd sp!, {r4, lr} ldrb r3, [r0], #1 @ zero_extendqisi2 ldrb r4, [r0, #0] @ zero_extendqisi2 mov r0, r3 bl g mov r0, r4 @ Sibcall epilogue ldmfd sp!, {r4, lr} b g With gcc-3.1, there is an extra, redundant, AND instruction: stmfd sp!, {r4, lr} ldrb r3, [r0], #1 and r3, r3, #255 ldrb r4, [r0, #0] @ zero_extendqisi2 mov r0, r3 bl g mov r0, r4 @ Sibcall epilogue ldmfd sp!, {r4, lr} b g >How-To-Repeat: void f(unsigned char *p) { unsigned long int a,b; a = *p++; b = *p++; g(a); g(b); } >Fix: >Release-Note: >Audit-Trail: >Unformatted: