[PATCH] Add a "probe-stack" attribute
Philip Reames
listmail at philipreames.com
Thu Aug 21 17:01:03 PDT 2014
On 08/18/2014 12:40 PM, John Kåre Alsaker wrote:
> On Mon, Aug 18, 2014 at 8:31 PM, Philip Reames
> <listmail at philipreames.com <mailto:listmail at philipreames.com>> wrote:
>
>
> On 08/15/2014 01:55 PM, John Kåre Alsaker wrote:
>> On Fri, Aug 15, 2014 at 6:47 PM, Philip Reames
>> <listmail at philipreames.com <mailto:listmail at philipreames.com>> wrote:
>>
>> Sorry for the delay.
>>
>> Patch 0002 LGTM. Please submit
>> Patch 0003 LGTM. Please submit.
>>
>> Yes, please submit.
> Do you have commit access? Or do you want me to submit on your
> behalf?
>
> I'd like you to submit them.
I've landed the first couple of minor changes from the series. Mostly as
a show of good faith since the later items still need work. If I missed
something you think should have landed (i.e. got a LGTM), let me know.
I split the 5 page optimization into it's own review and added a couple
of folks with Windows experience. I was all the way up to submitting it
and realized I didn't feel comfortable doing so. The thread is
"Fast-path for stack probes on smaller frames" at
http://reviews.llvm.org/D5018.
>
>
>>
>> Patch 0001 LGTM, but doesn't do anything by itself. Please
>> hold it until either 0004 or 0006 are ready to land.
>>
>> Patch 0004
>> - It seems like you're strill mixing several functional
>> changes in 0004. Can you enumerate (in email) what this
>> patch is trying to accomplish? The trivial implementation I
>> expected is to add MF.shouldProbeStack in a couple places and
>> call it done. Why is the rest needed?
>>
>> It's just generalizing the code for Win64 stack probes to x86-32
>> and x86-64. The __probestack calling convention on both x86-32
>> and x86-64 is the same as __chkstk on Win64.
> Why? Is there a good reason now to use the x86-32 chkstk
> convention on x86-32 probestack? What's the motivation for being
> different?
>
> I'm being consistent across x86 while MSVC is not.
Breaking compatibility with the platform compiler is almost never
acceptable and requires a substantial justification. If you want to
make the argument that that is the right direction to take, you'll need
to find someone else to review your work. I am nowhere *near*
knowledgeable enough in this area to approve such a change.
What is your actual use case? Are you trying to do stack probing on
non-windows platforms? Are you using a custom runtime on Windows? I'm
asking for background so I can make constructive suggestions.
>
>
>> In addition it doesn't assume RAX never is live in.
> Why? Is this a bug fix?
>
> That depends on if it ever can be live in. There were already logic
> for EAX which I generalized.
Is this change needed for anything else? I would prefer not to change
code without reason. Doing so only increases risk.
>
>> It also disables the redzone (which never is used on Windows)
>> since the probing code doesn't account for that.
> Ok. I see the value in this.
>
> This sounds like at least three distinct changes. Please separate
> them and we'll review each in turn.
>
> Sorry for being so pedantic about separation here. I'm trying to
> review code I don't really know well. As a result, I'm trying to
> be extremely carefully about making sure I understand each piece.
> If you can find another reviewer who knows this code better, I'd
> be happy to step aside.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140821/18f601fa/attachment.html>
More information about the llvm-commits
mailing list