From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23130 invoked by alias); 3 Jun 2002 13:26: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 23091 invoked by uid 71); 3 Jun 2002 13:26:04 -0000 Resent-Date: 3 Jun 2002 13:26:04 -0000 Resent-Message-ID: <20020603132604.23090.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, omakarenko@cyberplat.ru Received:(qmail 19223 invoked by uid 61); 3 Jun 2002 13:23:09 -0000 Message-Id:<20020603132309.19219.qmail@sources.redhat.com> Date: Mon, 03 Jun 2002 06:26:00 -0000 From: omakarenko@cyberplat.ru Reply-To: omakarenko@cyberplat.ru To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: target/6920: gcc-arm-elf v3.1 Wrong assembler code with -mthumb -Os (-O2) X-SW-Source: 2002-06/txt/msg00064.txt.bz2 List-Id: >Number: 6920 >Category: target >Synopsis: gcc-arm-elf v3.1 Wrong assembler code with -mthumb -Os (-O2) >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jun 03 06:26:03 PDT 2002 >Closed-Date: >Last-Modified: >Originator: omakarenko@cyberplat.ru >Release: unknown-1.0 >Organization: >Environment: Host: linux-x86 Target: arm-elf Version: GCC 3.1 (arm/elf) compiled by GNU C version 2.96 20000731 (RedHat Linux 7.3 2.96-110) Configured with: /home/oleg/arm/tools/gcc/configure --target=arm-elf --enable-languages=c,c++ --disable-shared --disable-nls --with-gnu-as --with-gnu-ld --disable-checking --with-multilibs --with-newlib --disable-newlib-io-float Thread model:single >Description: The following simple file: /* test.c stupid code to demonstrate the bug only */ void func(int d, char *x) { char *a[32]; if (a[d++] != (char *) 0) { x = a[d]; } a[d] = x; } when compiled with arm-elf-gcc -o test.Os.s -S -Os -mthumb test.c produces code like: ldr r3, [r3, sp] which is wrong for Thumb mode (sp can not be used in thumb mode) gas then complains with "Error: lo register required" -O2 and -O3 give the same result. That is a duplicate report for c/6916. The attached file was somehow missed from the previous report. Sorry for that. >How-To-Repeat: compile test.c with -mthumb and -Os (or -O2, -O3) options >Fix: >Release-Note: >Audit-Trail: >Unformatted: