That looks good to me.

-Mei

From: Jian-Xin Lai [mailto:laij...@gmail.com]
Sent: Thursday, February 10, 2011 8:14 AM
To: open64-devel
Subject: [Open64-devel] code review for bug fix ##618 and #701

Hi,

Can a gatekeeper review the bug fix for #618 and #701? Thank you very much.
Index: osprey/be/opt/opt_cfg_trans.cxx
===================================================================
--- osprey/be/opt/opt_cfg_trans.cxx     (revision 3472)
+++ osprey/be/opt/opt_cfg_trans.cxx     (working copy)
@@ -682,6 +682,8 @@
              // the following test is to screen out COMPGOTO and XGOTO, ...
              if ((branch_sr->Op() == OPC_TRUEBR ||
                   branch_sr->Op() == OPC_FALSEBR)) {
+                if (bb->Kind() == BB_LOGIF && bb->Ifinfo() != NULL)
+                  bb->Set_ifinfo(NULL);
                if (branch_sr->Label_number() != goto_bb->Labnam()) {
                  branch_sr->Set_st(NULL);
                  branch_sr->Set_label_number(goto_bb->Labnam());

When we create CFG in WOPT, we attach info about the high level SCF, such as 
IF/DO_LOOP/DO_WHILE/WHILE_DO/etc, to the BBs in order to re-generate these 
kinds of high level SCFs in PreOPT emitter.
For bug 618, it caused by the wrong THEN_BB in the LOG_IF. We already cloned 
the THEN BB but the THEN_BB in LOG_IF attached on the IF BB is not cleaned or 
updated. When we verify the CFG, we also check the LOG_IF info and trigger this 
assertion.
For bug 701, it's similar. The BB contains GOTO becomes unreachable after the 
CFG transformation but is still marked as 'needed' due to the wrong LOG_IF 
info. Then the bb will be connected to dummy entry but don't have successor.

Since these high level SCF info are not needed by MainOPT emitter. We already 
cleaned these info for loops in remove_SCF() in opt_cfg_trans.cxx. But the 
LOF_IF is not cleaned. This patch is trying to clean the LOG_IF info. With this 
patch, these assertion will not be triggered.

--
Regards,
Lai Jian-Xin
------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to