From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5846 invoked by alias); 22 Mar 2002 16:06: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 5805 invoked by uid 71); 22 Mar 2002 16:06:03 -0000 Resent-Date: 22 Mar 2002 16:06:02 -0000 Resent-Message-ID: <20020322160602.5804.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, tori@unhappy.mine.nu Received:(qmail 5380 invoked by uid 61); 22 Mar 2002 16:05:05 -0000 Message-Id:<20020322160505.5375.qmail@sources.redhat.com> Date: Fri, 22 Mar 2002 08:06:00 -0000 From: tori@unhappy.mine.nu Reply-To: tori@unhappy.mine.nu To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: target/6040: ARM interrupt attribute generats wrong code (3.1-cvs) X-SW-Source: 2002-03/txt/msg00844.txt.bz2 List-Id: >Number: 6040 >Category: target >Synopsis: ARM interrupt attribute generats wrong code (3.1-cvs) >Confidential: no >Severity: critical >Priority: high >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Mar 22 08:06:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Tobias Ringstrom >Release: gcc version 3.1 20020321 (prerelease) >Organization: >Environment: Crosscompiler for arm-elf >Description: Compile the following code with "arm-elf-gcc -S" void foo(void) __attribute__((__interrupt__)); void foo() { int a=0; } gives the following assembler code: .file "tmp2.c" .text .align 2 .global foo .type foo,function foo: @ Interrupt Service Routine. @ args = 0, pretend = 0, frame = 4 @ frame_needed = 1, uses_anonymous_args = 0 str ip, [sp, #-4]! mov ip, sp sub lr, lr, #4 stmfd sp!, {r3, fp, ip, lr, pc} sub fp, ip, #4 sub sp, sp, #4 mov r3, #0 str r3, [fp, #-24] ldmea fp, {r3, fp, ip, pc}^ .Lfe1: .size foo,.Lfe1-foo .ident "GCC: (GNU) 3.1 20020321 (prerelease)" Major problem: The stack pointer (sp) is never restored! Comment/question: There are four lost bytes, but that might be due to alignment of the stack. Is it? /Tobias >How-To-Repeat: See Description above! >Fix: >Release-Note: >Audit-Trail: >Unformatted: