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