Doing renaming is quite compile-time expensive, because it is like running the SSA construction algorithm. The problem your mentioned would not have occurred if sym2v3 has not been propagated down to STMT3. I don't recall we were doing copy propagation for chi operands. The overlapped live range was caused by this bad copy propagation, NOT by the ILOAD folding.

The above copy propagation is bad because sym2v4 is NOT dead, because it aliases with the default vsym which appears in the mu of STMT2. So your fix should be in preventing the copy propagation.

Fred

On 06/29/2011 11:35 PM, Hui Shi wrote:
Could gatekeeper help review this fix?

In SSA::Create_CODEMAP ILOAD folding is performed during coderep setup.
The problem is iload folding may revive some dead phi/chi node.

For example
STMT1
sym2v4 = chi(sym2v3)  NOT LIVE
default_vsym_v4 = chi(default_vsym_v3) LIVE
....
STMT2
  ILOAD mu(default_vsym_v4)
...
STMT3
sym2v5 = chi(sym2v3) LIVE // sym2v3 is propagate down from above dead chi.
default_vsym_v5 = chi(default_vsym_v4)

If sym2v4 may use at STMT2, ILOAD's MU node must on STMT1's chi list
(because MU node must alias with sym2, otherwise its alias issue).
And MU node's corresponding CHI node must live on STMT1, because set_required_mu will set chi node live. So it's okay for DSE to mark fisrt CHI dead if STMT1 and STMT3 write same memory location.
1. It will not make STMT1 dead, because the other chi node is live.
2. ILOAD's MU node's def statment still STMT1

If ILOAD folding transform ILOAD to LDID and LDID's AUX is sym2.
ILOD_FOLDING revives dead chi sym2v4 = chi(sym2v3) without update the late chi node's opnd.

This introduce overlapped between sym2v3 and sym2v4.
Fix is rename CODEMAP if iload folding revive dead phi/chi node.
OPT_REVISE_SSA::Fold_lda_indirects also rename CODEMAP after optimization.

Fix is
1. record in htable, if dead chi/phi node is revived in SSA::Create_CODEMAP. This only happends when ILOAD_Folding happens and find corresponding chi/phi is dead. 2. After SSA::Create_CODEMAP, rename coderep if dead chi/phi node is revive in CODEMAP setup.

Different with fixing in DSE to mark first chi node live, this fix not affect DSE, so not affect performance.
And this is verified with spec2006.rate on xeon.

Regards
Shi Hui


------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2


_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to