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

Reply via email to