From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2252 invoked by alias); 17 Dec 2002 09:26: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 2233 invoked by uid 71); 17 Dec 2002 09:26:01 -0000 Resent-Date: 17 Dec 2002 09:26:01 -0000 Resent-Message-ID: <20021217092601.2232.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, or.poran@intel.com Received: (qmail 1997 invoked by uid 61); 17 Dec 2002 09:24:58 -0000 Message-Id: <20021217092458.1996.qmail@sources.redhat.com> Date: Tue, 17 Dec 2002 01:26:00 -0000 From: or.poran@intel.com Reply-To: or.poran@intel.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: target/8973: the inteupr handler does not return properly, uses j.d insted of j.d.f X-SW-Source: 2002-12/txt/msg00894.txt.bz2 List-Id: >Number: 8973 >Category: target >Synopsis: the inteupr handler does not return properly, uses j.d insted of j.d.f >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue Dec 17 01:26:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Or Poran >Release: gcc version 3.2, Configured with: ./configure --prefix=/afs/iil/home/o/oporan/fw/gcc/gcc-3.2/../install/ --target=arc-7-elf. >Organization: >Environment: Linux gcc as cross-compiler >Description: inteupt handler code: void ivic3_handler (void) __attribute__ ((__interrupt__ ("ilink1"))); void ivic3_handler (void) { } produce the asn code: .cpu base .section .text .align 4 .global _ivic3_handler .type _ivic3_handler,@function _ivic3_handler: ; interrupt handler sub sp,sp,16 ; BEGIN PROLOGUE ; vars= 0, regs= 0, args= 0, extra= 0 st fp,[sp] mov fp,sp ; END PROLOGUE ; EPILOGUE ld.a fp,[sp,0] j.d ilink1 add sp,sp,16 .Lfe1: .size _ivic3_handler,.Lfe1-_ivic3_handler .ident "GCC: (GNU) 3.2" the return statement: j.d ilink1 should be j.d.f (to update the flags) >How-To-Repeat: >Fix: lines 1337 in gcc/config/arc/arc.c should be replaced with: if (fn_type == ARC_FUNCTION_ILINK1 || fn_type == ARC_FUNCTION_ILINK2) fprintf (file, "\tj.d.f %s\n", reg_names[regs[fn_type]]); else fprintf (file, "\tj.d %s\n", reg_names[regs[fn_type]]); >Release-Note: >Audit-Trail: >Unformatted: