This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Patch for -mcaller-super-interworking & stack arguments
On Fri, 2004-08-27 at 14:33, Richard Sandiford wrote:
> I'm not sure whether "this" means my patch in particular or just
> -mcaller-super-interworking in general ;) If the former, I'm certainly
> willing to try alternatives.
Well it started of with -mcaller-super-interworking in general, because
it just doesn't work for far too many cases, but then I realised your
patch was addressing most, if not all, of those failures.
Then I didn't like the costs of your proposed solution, until I realised
you'd thought about most of those cases too... and the one case you
really ended up losing on, I think we now have a conceptual approach
for. So I guess I'm not as unhappy now as I was when I first started
reading your proposal :-)
>
> > Another approach would be to use r11 (fp) to hold the 'frame pointer' in
> > the case where we didn't really need a frame (and continue to pretend
> > that the function was frameless). It would mean a further function stub
> > in libgcc (unless you always made it work that way) but would mean that
> > we didn't loose a low register.
>
> Good idea. Will give it a go. I won't commit my original patch
> until I see how the new one works out.
>
> Btw, as a heads-up, I was just looking into how the new patch might be
> written, and I noticed what seems to be a little thinko in the recent
> changes to thumb_compute_save_reg_mask():
>
> if (flag_pic && !TARGET_SINGLE_PIC_BASE)
> mask |= PIC_OFFSET_TABLE_REGNUM;
>
> Looks like it should be "mask |= 1 << ...". I'm not really
> set up to test that change myself though.
You're right. I think that even comes under the 'obvious' rule.
Well spotted.
R.