------- Comment #9 from rearnsha at gcc dot gnu dot org  2009-05-05 10:06 
-------
(In reply to comment #8)
> Sorry for my ignorance to gcc. What types of instructions reload will add?
> Spilling and loading registers? and more?
> 
That's pretty much it, but...

> By reading the the implementation of thumb_far_jump_used_p() I can get the
> conclusion that if reload thinks there is a far jump, later pass won't change
> this decision. But if reload thinks there is no far jump, later pass still 
> need
> to re-check the far jump existence and may change this decision. So if reload
> occasionally makes a wrong decision later pass should correct it, is it right?
> 


Once reload has completed we can't change the decision as to whether or not LR
gets saved onto the stack or not.  Unfortunately, that doesn't play well with
constant pools.  We sometimes need to inline these, and that might cause
branches to be pushed out of range.  Since we don't inline the pools until
after reload has completed, that's a major stumbling block.  The current code
just isn't aware of these issues.


-- 

rearnsha at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rearnsha at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38570

Reply via email to