# HG changeset patch # User Thomas Wuerthinger # Date 1358268811 -3600 # Node ID 88506cfc3baba4dee6999129d8d4623a59eb512a # Parent 53d5f5fc4dd91425e23e542a60898f3a6b1fa59e Canonicalize ((a - a % b) / b) into (a / b). diff -r 53d5f5fc4dd9 -r 88506cfc3bab graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Tue Jan 15 15:44:04 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Tue Jan 15 17:53:31 2013 +0100 @@ -87,6 +87,18 @@ return shift; } } + + // Convert the expression ((a - a % b) / b) into (a / b). + if (x() instanceof IntegerSubNode) { + IntegerSubNode integerSubNode = (IntegerSubNode) x(); + if (integerSubNode.y() instanceof IntegerRemNode) { + IntegerRemNode integerRemNode = (IntegerRemNode) integerSubNode.y(); + if (integerSubNode.kind() == this.kind() && integerRemNode.kind() == this.kind() && integerSubNode.x() == integerRemNode.x() && this.y() == integerRemNode.y()) { + return graph().add(new IntegerDivNode(kind(), integerSubNode.x(), this.y())); + } + } + } + return this; }