I think your bin search works. We should extend this to the points_to_set to help triage problems also. Today, auto triage fails if it is points_to related (i.e. still alias problem) Sun
On Fri, May 13, 2011 at 4:05 PM, Hui Shi <kalin....@gmail.com> wrote: > Hi All, > > Would gatekeeper help review this patch? > This patch is adding function for nystrom alias triage. > I use this triage method find the nystrom problem in bug767. > https://bugs.open64.net/show_bug.cgi?id=767 > > If have a testcase pass with current alias analysis while fail at nystrom > alias. > We need triage the alias info’s to find what’s wrong with new alias result. > If output difference is caused by wrong new alias result, there must be real > aliased tags are not aliased. > The basic idea of triaging is making the two non-aliased tag aliased, and > check if the run-time failure still exist. > If testcase passes, this pair of alias tag have wrong alias result. > > Of course, there is another possiblity, more accurate alias result expose > some optimization's bug. > > Triage algorithm > The initial status is force all alias tags aliased with each other, the > result must be pass. > Binary search is force part of the alias tags alias with all other tags. > > The complexity of alias triage is, there usually be multiple pairs of alias > tags cause the final error result. > It's hard to locate a single pair alias tags. So triage script is to find > the first alias tag pair that has correctness issue. > > Binary search to find the first fail alias tag pair, split triage into two > steps > frist step find an alias tag x, > When all alias tag in range [2,x] force alias with others, testcase pass. > When all alias tag in range [2,x-1] force alias with others, testcase fail. > 1. Initial max=N, min=2, work = (max-min)/2+min > 2. stop when work = max > Make alias tags in range [2, work] aliased with all other alias tags. > 2.1 pass, problem alias tag must lay in [min, work] > max=work, work= (max-min)/2+min, go to step 2 > 2.2 fail, the first problematic alias tag in higher half. > min=work, work= (max-min)/2+min, go to step 2 > > second step if find the tag y. > all alias tag in range [2,x-1] force alias with other tags > When force x alias with [2, y], testcase pass > When force x alias with [2, y-1], testcase fail > script is same with first step. > > <x, y> is the first incorrect alias tag pair. > > Triage option > according to triage algorithm two options added > -OPT:aa_force_tag_alias_before_dim1=[0] for first step > -OPT:aa_force_tag_alias_before_dim2=[MAX] combine with first option for > second step > > Triage step > 1. Get initial alias tag count by trace option -Wb,-tt24:0x400 > (NYSTROM_ALIAS_TAG_FLAG) > 2. Run triage script > > Regards > Shi Hui > > ------------------------------------------------------------------------------ > Achieve unprecedented app performance and reliability > What every C/C++ and Fortran developer should know. > Learn how Intel has extended the reach of its next-generation tools > to help boost performance applications - inlcuding clusters. > http://p.sf.net/sfu/intel-dev2devmay > _______________________________________________ > Open64-devel mailing list > Open64-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/open64-devel > > ------------------------------------------------------------------------------ Achieve unprecedented app performance and reliability What every C/C++ and Fortran developer should know. Learn how Intel has extended the reach of its next-generation tools to help boost performance applications - inlcuding clusters. http://p.sf.net/sfu/intel-dev2devmay _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel