Hi Jianxin,

Thanks for your review.
I did some complement for previous patch.
Also modify StInfo::applyModulus, avoid collpase parent into its kid cg
node.

would you help review this?

On Fri, May 6, 2011 at 1:25 PM, Jian-Xin Lai <laij...@gmail.com> wrote:

> This patch looks fine to me. Please check it in.
>
> 2011/4/29 Hui Shi <kalin....@gmail.com>
>
>> Would gatekeeper help review this patch?
>>
>> https://bugs.open64.net/show_bug.cgi?id=767
>> Nystrom alias issue: 456.gobmk base output difference on train data
>>
>> The wrong alias is caused in
>> ConstraintGraphNode::collapseTypeIncompatibleNodes.
>> It try to collpase a kid node's parent node into kid.
>>
>> In ConstraintGraphNode::collapse(cur), collpase node cur into this.
>>
>>   // Merge cur with 'this' node
>>   ConstraintGraphNode *curParent = cur->parent();
>>
>>   // When merging, merge with 'this's parent
>>   ConstraintGraphNode *thisParent = this->parent();
>>
>>   if (curParent != thisParent) {   // skip merging here because parent
>> are same
>>     thisParent->merge(curParent);
>>     curParent->repParent(thisParent);
>>   }
>>
>>   // When cur's parent is merged with this, we might have transfered
>>   // a parent copy edge from cur's parent to cur, which needs to be
>> removed
>>   cur->deleteInOutEdges();  // delete all edges here
>>
>>
>> Problem is no merge happen in this case, but node cur's all edge is
>> deleted.
>>
>> Fix is
>> 1. In ConstraintGraphNode::collapseTypeIncompatibleNodes, if collpased
>> node is parent of collapsed target, switch the collapse node and target
>> node.
>> 2. add assertion ConstraintGraphNode::collapse, node cur is not parent of
>> node this.
>>
>> Index: osprey/be/com/constraint_graph.cxx
>> ===================================================================
>> --- osprey/be/com/constraint_graph.cxx  (revision 3575)
>> +++ osprey/be/com/constraint_graph.cxx  (working copy)
>> @@ -3194,6 +3194,8 @@
>>              ("Not expecting this node: %d to be collasped", id()));
>>    FmtAssert(!cur->checkFlags(CG_NODE_FLAGS_COLLAPSED),
>>              ("Not expecting cur node: %d to be collasped", cur->id()));
>> +  FmtAssert(parent() != cur,
>> +            ("Not expecting cur node be parent of this "));
>>
>>    // Merge cur with 'this' node
>>    ConstraintGraphNode *curParent = cur->parent();
>> @@ -4333,6 +4335,12 @@
>>          FmtAssert(ptdNode->stInfo()->firstOffset()->nextOffset() == NULL,
>>                    ("Only single offset expected"));
>>          ptdNode = ptdNode->stInfo()->firstOffset();
>> +        // can't collapse node's parent to its self.
>> +        if (ptdNode == repNode->parent()) {
>> +          ConstraintGraphNode *tmp = ptdNode;
>> +          ptdNode = repNode;
>> +          repNode = tmp;
>> +        }
>>          // SparseBitSetIterator caches ids when iterating. So of the
>> 'effect'
>>          // of collapsing is not immediately visible, in which case we
>> might
>>          // encounter collapsed nodes when iterating the pts
>>
>>
>> Regards
>> Shi ,Hui
>>
>>
>>
>> ------------------------------------------------------------------------------
>> WhatsUp Gold - Download Free Network Management Software
>> The most intuitive, comprehensive, and cost-effective network
>> management toolset available today.  Delivers lowest initial
>> acquisition cost and overall TCO of any competing solution.
>> http://p.sf.net/sfu/whatsupgold-sd
>> _______________________________________________
>> Open64-devel mailing list
>> Open64-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>
>>
>
>
> --
> Regards,
> Lai Jian-Xin
>

Attachment: bug767_1.patch
Description: Binary data

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to