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