Mercurial > hg > graal-compiler
changeset 6706:e9e724ea5097
make LoopFragment deal correctly with GVN'd VirtualState
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Mon, 12 Nov 2012 17:45:27 +0100 |
parents | 0cb1ac637dd0 |
children | 847bab44637b |
files | graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java |
diffstat | 1 files changed, 4 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java Mon Nov 12 13:04:08 2012 +0100 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java Mon Nov 12 17:45:27 2012 +0100 @@ -258,7 +258,9 @@ FrameState newExitState = newEarlyExit.stateAfter(); FrameState state = null; if (exitState != null) { - state = exitState.duplicateWithVirtualState(); + state = exitState; + exitState = exitState.duplicateWithVirtualState(); + earlyExit.setStateAfter(exitState); merge.setStateAfter(state); } @@ -291,7 +293,7 @@ if (!merge.isPhiAtMerge(usage)) { if (usage instanceof VirtualState) { VirtualState stateUsage = (VirtualState) usage; - if (exitState.isPartOfThisState(stateUsage) || newExitState.isPartOfThisState(stateUsage)) { + if (exitState.isPartOfThisState(stateUsage)) { continue; } }