Hi,
Can a gatekeeper review the patch to bug 659.
http://bugs.open64.net/show_bug.cgi?id=659. Thank you very much.The case can
be found in the bugzilla.
BB9 is empty and it's the merge BB of the first IF statement. But due to the
continue statement, BB9 is unreachable. In the first pass of DCE, BB9 is
unreachable but still kept due to it's the merge BB of the first IF. There
is a edge from fake entry to BB9 after the first DCE pass (in order to
calculate the DOM).
In the second DCE pass, BB9 is removed. But due to BB9 don't have any
predecessor, the changed_cflow flag is not set and the DOM tree is not
re-calculated. In the traversal of DOM tree in the later phase, BB9 is still
visited and the assertion is triggered. The patch is to set the
changed_cflow flag to TRUE so that the DOM tree can be updated.
Index: opt_dce.cxx
===================================================================
--- opt_dce.cxx (revision 1916)
+++ opt_dce.cxx (working copy)
@@ -1826,6 +1826,10 @@
nextsucc = succ_ref->Next();
changed_cflow |= Update_predecessor_lists( succ_ref->Node() );
}
+ if (bb->Pred() == NULL) {
+ // bb from fake entry is removed, cfg is changed
+ changed_cflow = TRUE;
+ }
_cfg->Remove_bb(bb);
#ifdef Is_True_On
--
Regards,
Lai Jian-Xin
------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
Open64-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open64-devel