This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
target/8973: the inteupr handler does not return properly, uses j.d insted of j.d.f
- From: or dot poran at intel dot com
- To: gcc-gnats at gcc dot gnu dot org
- Date: 17 Dec 2002 09:24:58 -0000
- Subject: target/8973: the inteupr handler does not return properly, uses j.d insted of j.d.f
- Reply-to: or dot poran at intel dot com
>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: