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