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

Reply via email to