Some background from my interaction with Shivaram:
X8664 disables copy prop of identity assignments for assembly inputs (with 
unknown reasons), but DCE appears to assume that  copy prop can always happen 
on identify assignments and therefore they are removable, which leads to 
downstream assertions on missing definitions.

While it is not performance-friendly to disable copy props,  but disabling 
copy-prop is not an illegal action and DCE should not have pre-assumptions.   
Shivaram was following this logic to find fixes in the DCE.    Other non-X86 
targets simply allows copy prop which will hide the DCE pre-assumptions.

It is very likely that Shivaram misses something, but in my opinion he is 
heading for a more difficult yet correct paths.

-Mei

From: Sun Chan [mailto:sun.c...@gmail.com]
Sent: Tuesday, October 18, 2011 12:57 AM
To: open64-devel@lists.sourceforge.net
Subject: Re: [Open64-devel] r3764 - trunk/osprey/be/opt

This is strange. Must be a regression from elsewhere. I am sure the identity 
stmt had been removable without your change before. Is this fix the right fix?
Fred, your comment?
Sun
On Sun, Oct 16, 2011 at 6:12 PM, <s...@open64.net<mailto:s...@open64.net>> 
wrote:
Author: shivaram
Date: 2011-10-16 06:12:14 -0400 (Sun, 16 Oct 2011)
New Revision: 3764

Modified:
  trunk/osprey/be/opt/opt_dce.cxx
Log:
Fix for bug#787. Removal of identity assignment statements(i=i) is
prevented if lhs is not propagatable.
CR by Ye,Mei and Gautam



Modified: trunk/osprey/be/opt/opt_dce.cxx
===================================================================
--- trunk/osprey/be/opt/opt_dce.cxx     2011-10-14 08:12:52 UTC (rev 3763)
+++ trunk/osprey/be/opt/opt_dce.cxx     2011-10-16 10:12:14 UTC (rev 3764)
@@ -2149,7 +2149,8 @@

  if (OPERATOR_is_scalar_store (opr) &&
      Enable_identity_removal() &&
-      stmt->Is_identity_assignment_removable())  // if COPYPROP assumes the 
stmt is deleted
+      stmt->Is_identity_assignment_removable() &&
+      !(stmt->Lhs()->Flags() & CF_DONT_PROP))  // if COPYPROP assumes the stmt 
is deleted
    return FALSE;

  // statements with zero-version chi nodes are required
@@ -3262,7 +3263,8 @@

  if (OPERATOR_is_scalar_store (opr) &&
      Enable_identity_removal() &&
-      stmt->Is_identity_assignment_removable()) {
+      stmt->Is_identity_assignment_removable() &&
+      !(stmt->Lhs()->Flags() & CF_DONT_PROP)) {
    // process the rhs expression, if any
    CODEREP *rhs = stmt->Rhs();
    if ( rhs != NULL ) {


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2d-oct
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net<mailto:Open64-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/open64-devel

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2d-oct
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to