Mercurial > hg > graal-compiler
changeset 18333:db6b7d3dfa1d
ConditionalElimination: only clear the state on loop exits if the graph needs to remain in loop closed form
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 11 Nov 2014 10:06:24 +0100 |
parents | 65a160d9d259 |
children | 0950fa8782c7 |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java |
diffstat | 1 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Mon Nov 10 19:29:08 2014 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Tue Nov 11 10:06:24 2014 +0100 @@ -412,7 +412,11 @@ private void registerControlSplitInfo(Node pred, BeginNode begin) { assert pred != null && begin != null; - if (begin instanceof LoopExitNode) { + /* + * We does not create value proxies for values it may connect accross loop exit node so + * we have to clear the state at loop exits if the graph needs value proxies + */ + if (begin instanceof LoopExitNode && begin.graph().hasValueProxies()) { state.clear(); }