This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: ARM port bug


> 
> 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]