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

Attachment: nystrom_triage.patch
Description: Binary data

------------------------------------------------------------------------------
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