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