# HG changeset patch # User Josef Eisl # Date 1436268241 -7200 # Node ID 18013bd8052a0a6e960ba63ea5d1b2853cf8a769 # Parent 0be1cc9089de05238eb7584acddb0019b39981a6 SSALinearScanEliminateSpillMovePhase#canEliminateSpillMove: call to super class. diff -r 0be1cc9089de -r 18013bd8052a graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScanEliminateSpillMovePhase.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScanEliminateSpillMovePhase.java Tue Jul 07 15:05:50 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScanEliminateSpillMovePhase.java Tue Jul 07 13:24:01 2015 +0200 @@ -45,14 +45,16 @@ @Override protected boolean canEliminateSpillMove(AbstractBlockBase block, MoveOp move) { - // SSA Linear Scan might introduce moves to stack slots assert isVariable(move.getResult()) || LinearScanPhase.SSA_LSRA.getValue() : "Move should not be produced in a non-SSA compilation: " + move; - Interval curInterval = allocator.intervalFor(move.getResult()); - - if (!isRegister(curInterval.location()) && curInterval.alwaysInMemory() && !isPhiResolutionMove(block, move, curInterval)) { - assert isStackSlotValue(curInterval.location()) : "Not a stack slot: " + curInterval.location(); - return true; + if (super.canEliminateSpillMove(block, move)) { + // SSA Linear Scan might introduce moves to stack slots + Interval curInterval = allocator.intervalFor(move.getResult()); + assert !isRegister(curInterval.location()) && curInterval.alwaysInMemory(); + if (!isPhiResolutionMove(block, move, curInterval)) { + assert isStackSlotValue(curInterval.location()) : "Not a stack slot: " + curInterval.location(); + return true; + } } return false; }