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