RFA: PR 19225
Dale Johannesen
dalej@apple.com
Thu Mar 24 23:08:00 GMT 2005
On Mar 24, 2005, at 12:35 PM, James E Wilson wrote:
> Dale Johannesen wrote:
>> I'm interested in fixing this, but could use some help from somebody
>> knowledgeable about how x86 EH is supposed to work. In particular,
>> what's the expected relationship between SP at the point of a throwing
>> call, and when it gets back to the landing pad?
>
> There is no direct relationship between the two SP values. If they are
> different, then there should be unwind info indicating the difference,
> and the unwinder should be applying those differences while unwinding.
> There is a statement to this effect in comment #3 from Andrew.
Actually I wrote that comment. While I see that it could be done that
way
in the unwinder, I found no code that was actually trying to do it. So
I was unclear about the intent.
> However, looking at this, I am tempted to call it a bug in the defer
> pop
> optimization. ...It is probably much easier to fix the defer pop
> optimization
> than to fix the unwinder to handle this.
I had tentatively reached this conclusion also, more slowly I'm sure.
> Actually, looking at this, I am surprised how may NO_DEFER_POP calls we
> have without corresponding OK_DEFER_POP calls. I wonder if this
> optimization is already broken, in the sense that is it being
> accidentally disabled when it shouldn't be. Or maybe the code is just
> more obtuse than it needs to be.
No, I think you are right, I'll see if I can clean things up without
breaking it.
Thanks for your comments.
More information about the Gcc
mailing list