Hi,
Would a gatekeeper please review my change for bug761?
https://bugs.open64.net/show_bug.cgi?id=761
(256.bzip2 assertion failure in DBG built compiler when WSSA enabled).
The assertion happens in verifying the live range:
##Assertion failure at line 883 of opt_verify.cxx
### sym20v2(cr252) use before def in bb1 line 0
The problem is a typo in opt_ssa.cxx (Resurrect_chi), as following:
du = chi->Result();
if (sr->Op() == OPC_OPT_CHI)
chi->Set_OPND(Get_zero_version_CR(chi->Aux_id(), _opt_stab, du));
else {
chi->Set_OPND(Revive_phi_chi_opnd(chi->Opnd()));
chi->OPND()->Set_flag(CF_DONT_PROP);
}
It uses the chi’s result (du) to set_opnd, which causes the non-zero version
use before def.
The fix is to use chi->Opnd()’s zero_version_cr to set_opnd.
Thanks,
Min
Index: opt_ssa.cxx
===================================================================
--- opt_ssa.cxx (revision 3533)
+++ opt_ssa.cxx (working copy)
@@ -1,3 +1,6 @@
+/*
+ * Copyright (C) 2011, Hewlett-Packard Development Company, L.P. All Rights
Reserved.
+ */
//-*-c++-*-
/*
@@ -1612,7 +1615,7 @@
chi->Set_dse_dead(FALSE);
if (sr->Op() == OPC_OPT_CHI)
- chi->Set_OPND( Get_zero_version_CR(chi->Aux_id(), _opt_stab, du));
+ chi->Set_OPND( Get_zero_version_CR(chi->Aux_id(), _opt_stab,
chi->Opnd()));
else {
chi->Set_OPND(Revive_phi_chi_opnd(chi->Opnd()));
chi->OPND()->Set_flag(CF_DONT_PROP);
------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel