this change is quite large. Other than the obvious cosmetic issues
like "random spacing", bad variable names like "sentive", there is not
much a gatekeeper can do. Also, the IPA already does call site
specific inlining, and you are introducing a new term context
sensitive inlining, not sure what you meant. Please clarify.
I suggest (if you haven't done so already) a code/design review
instead of this code review request
Sun

On Mon, Jan 31, 2011 at 12:38 PM, Hui Shi <kalin....@gmail.com> wrote:
> Hi folks,
>
>
>
> This is a patch for nystrom alias analysis, solve points to when inline
> happens.
>
> Can gatekeeper help check this patch?
>
>
>
> Current nystrom points to analysis is context insensitive, field sensitive
> and performed before inline during IPA.
>
> (nystrom is supposed to  context sensitive finally)
>
> The problem found in following example is, after inline bar into foo1 and
> foo2, p, q's copy in both foo1 and foo2 still points to both a and b.
>
>
>
> int a, b;
>
> int c;
>
>
>
> int foo1()
>
> {
>
>    int *m;
>
>    bar(m, &a);
>
>    *m += a;
>
>    *m += b;
>
>    return *m;
>
> }
>
>
>
> int foo2()
>
> {
>
>    int *n;
>
>    bar(n, &b);
>
>    *n += a;
>
>    *n += b;
>
>    return *n;
>
> }
>
>
>
> void bar(int *p, int *q)
>
> {
>
>   *q = c;
>
>   *p = q;
>
> }
>
>
>
> Because nystrom happens before inline, in bar function, p and q’s cg node
> still points to both a and b.
>
> After inline bar into foo1 and foo2, p and q's dereference WN node's
> constraint graph node still points to both a and b.
>
> They needs to be updated accordingly to get better points to accuracy.
>
> This patch add context sensitive inline to handle this problem.
>
> 1.       When inline process formals, check if actual's points to set is
> accurate than formal's points to set. If so, clone formal's cg node in
> caller, update with actual's point to set.
>
> 2.       After finish processing all formals, solve the nodes in callee
> constraint graph , the initial work set is all formals updated in step1.
>
> No need propagate the updated points to back to caller (like propagate p
> points to a, back to m only points to a), because nystrom context sensitive
> will handle this.
>
>
>
> In context insensitive analysis (current implementation),  m and n’s
> constraint graph node in  foo1 and foo2 will points to a and b, because in
> bar p is assigned both  a and b.
>
> Context sensitive analysis will summarize bar’s side effect <*p = q>, *q = c
> is not pointer update, will not affect the points to info.
>
> when analyze foo1 and foo2 use this summary, foo1 knows m points to a, in
> foo2, knows n points2 to b.
>
> But context sensitive can't solve this problem.
>
>
>
> Best Regards
>
> Shi, Hui
>
>
>
> ------------------------------------------------------------------------------
> Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
> Finally, a world-class log management solution at an even better price-free!
> Download using promo code Free_Logger_4_Dev2Dev. Offer expires
> February 28th, so secure your free ArcSight Logger TODAY!
> http://p.sf.net/sfu/arcsight-sfd2d
> _______________________________________________
> Open64-devel mailing list
> Open64-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/open64-devel
>
>

------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to