This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: ARM port bug
- To: Denis Chertykov <denisc at overta dot ru>
- Subject: Re: ARM port bug
- From: Richard Earnshaw <rearnsha at arm dot com>
- Date: Fri, 01 Jun 2001 10:43:29 +0100
- cc: gcc at gcc dot gnu dot org, Richard dot Earnshaw at arm dot com
- Organization: ARM Ltd.
- Reply-To: Richard dot Earnshaw at arm dot com
>
> I have founded a bug in ARM port (testcase at end of mail).
> gcc version 3.0 20010525 (prerelease)
>
> As I understand the ARM port have a `(define_expand "epilogue" ...)'
> And this `define_expand' don't emit the moves on RTL level for restoring
> a call-saved registers.
>
> While `update_life_info' executed after reload the `mark_regs_live_at_end'
> mark all registers used by the epilogue as being live at the end of
> the function and don't unmark it because RTL version of epilogue
> havn't a moves.
>
> What's right ?
> 1. emit a RTL moves in epilogue;
Probably, but it looks like the rules have been quietly (and subtly)
changed again :-(
> 2. remove `(define_expand "epilogue" ...)' (Why it's needed ?)
IIRC We need this to get a return sequence that can be threaded by the
final jump pass when there is a simple exit sequence.
Please can you use gccbug and submit a formal bug report with the
imformation you have provided. Can you also confirm whether this bug
occured with gcc-2.95? That will affect the priority it gets.
R.