Mercurial > hg > graal-compiler
changeset 22357:dcf959fb2223
Rename SSAUtils->SSAUtils.
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/LIRGenerationPhase.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/LIRGenerationPhase.java Fri Jul 24 13:49:56 2015 +0200 @@ -64,7 +64,7 @@ emitBlock(nodeLirBuilder, lirGenRes, (Block) b, graph, schedule.getBlockToNodesMap()); } context.lirGen.beforeRegisterAllocation(); - assert !ConstructionSSAlirDuringLirBuilding.getValue() || SSAUtils.verifySSAForm(lirGenRes.getLIR()); + assert !ConstructionSSAlirDuringLirBuilding.getValue() || SSAUtil.verifySSAForm(lirGenRes.getLIR()); } private static void emitBlock(NodeLIRBuilderTool nodeLirGen, LIRGenerationResult lirGenRes, Block b, StructuredGraph graph, BlockMap<List<Node>> blockMap) {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRVerifier.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRVerifier.java Fri Jul 24 13:49:56 2015 +0200 @@ -132,7 +132,7 @@ assert last instanceof StandardOp.JumpOp : "block with successor must end with unconditional jump"; } if (block.getPredecessorCount() > 1) { - SSAUtils.verifyPhi(lir, block); + SSAUtil.verifyPhi(lir, block); } for (LIRInstruction op : lir.getLIRforBlock(block)) {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinarScanResolveDataFlowPhase.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinarScanResolveDataFlowPhase.java Fri Jul 24 13:49:56 2015 +0200 @@ -34,7 +34,7 @@ import com.oracle.graal.lir.*; import com.oracle.graal.lir.alloc.lsra.*; import com.oracle.graal.lir.ssa.*; -import com.oracle.graal.lir.ssa.SSAUtils.PhiValueVisitor; +import com.oracle.graal.lir.ssa.SSAUtil.PhiValueVisitor; class SSALinarScanResolveDataFlowPhase extends LinearScanResolveDataFlowPhase { @@ -55,7 +55,7 @@ AbstractBlockBase<?> phiOutBlock = midBlock != null ? midBlock : fromBlock; List<LIRInstruction> instructions = allocator.getLIR().getLIRforBlock(phiOutBlock); - int phiOutIdx = SSAUtils.phiOutIndex(allocator.getLIR(), phiOutBlock); + int phiOutIdx = SSAUtil.phiOutIndex(allocator.getLIR(), phiOutBlock); int phiOutId = midBlock != null ? fromBlockLastInstructionId : instructions.get(phiOutIdx).id(); assert phiOutId >= 0; @@ -83,8 +83,8 @@ } }; - SSAUtils.forEachPhiValuePair(allocator.getLIR(), toBlock, phiOutBlock, visitor); - SSAUtils.removePhiOut(allocator.getLIR(), phiOutBlock); + SSAUtil.forEachPhiValuePair(allocator.getLIR(), toBlock, phiOutBlock, visitor); + SSAUtil.removePhiOut(allocator.getLIR(), phiOutBlock); } }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinearScan.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinearScan.java Fri Jul 24 13:49:56 2015 +0200 @@ -73,7 +73,7 @@ try (Scope s1 = Debug.scope("Remove Phi In")) { for (AbstractBlockBase<?> toBlock : sortedBlocks()) { if (toBlock.getPredecessorCount() > 1) { - SSAUtils.removePhiIn(getLIR(), toBlock); + SSAUtil.removePhiIn(getLIR(), toBlock); } } }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinearScanLifetimeAnalysisPhase.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssa/SSALinearScanLifetimeAnalysisPhase.java Fri Jul 24 13:49:56 2015 +0200 @@ -51,7 +51,7 @@ Interval to = allocator.getOrCreateInterval((AllocatableValue) targetValue); - SSAUtils.forEachPhiRegisterHint(allocator.getLIR(), allocator.blockForId(label.id()), label, targetValue, mode, (ValueConsumer) (registerHint, valueMode, valueFlags) -> { + SSAUtil.forEachPhiRegisterHint(allocator.getLIR(), allocator.blockForId(label.id()), label, targetValue, mode, (ValueConsumer) (registerHint, valueMode, valueFlags) -> { if (LinearScan.isVariableOrRegister(registerHint)) { Interval from = allocator.getOrCreateInterval((AllocatableValue) registerHint);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssi/SSILinearScanResolveDataFlowPhase.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/ssi/SSILinearScanResolveDataFlowPhase.java Fri Jul 24 13:49:56 2015 +0200 @@ -33,7 +33,7 @@ import com.oracle.graal.debug.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.alloc.lsra.*; -import com.oracle.graal.lir.ssa.SSAUtils.PhiValueVisitor; +import com.oracle.graal.lir.ssa.SSAUtil.PhiValueVisitor; import com.oracle.graal.lir.ssi.*; public class SSILinearScanResolveDataFlowPhase extends LinearScanResolveDataFlowPhase {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanResolveDataFlowPhase.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceLinearScanResolveDataFlowPhase.java Fri Jul 24 13:49:56 2015 +0200 @@ -32,7 +32,7 @@ import com.oracle.graal.debug.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.alloc.lsra.*; -import com.oracle.graal.lir.ssa.SSAUtils.PhiValueVisitor; +import com.oracle.graal.lir.ssa.SSAUtil.PhiValueVisitor; import com.oracle.graal.lir.ssi.*; public class TraceLinearScanResolveDataFlowPhase extends LinearScanResolveDataFlowPhase {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceRegisterAllocationPhase.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/trace/TraceRegisterAllocationPhase.java Fri Jul 24 13:49:56 2015 +0200 @@ -40,7 +40,7 @@ import com.oracle.graal.lir.gen.*; import com.oracle.graal.lir.gen.LIRGeneratorTool.SpillMoveFactory; import com.oracle.graal.lir.phases.*; -import com.oracle.graal.lir.ssa.SSAUtils.PhiValueVisitor; +import com.oracle.graal.lir.ssa.SSAUtil.PhiValueVisitor; import com.oracle.graal.lir.ssi.*; public class TraceRegisterAllocationPhase extends AllocationPhase {
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSADestructionPhase.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSADestructionPhase.java Fri Jul 24 13:49:56 2015 +0200 @@ -48,15 +48,15 @@ List<LIRInstruction> instructions = lir.getLIRforBlock(pred); - int insertBefore = SSAUtils.phiOutIndex(lir, pred); + int insertBefore = SSAUtil.phiOutIndex(lir, pred); PhiResolver resolver = PhiResolver.create(lirGen, new LIRInsertionBuffer(), instructions, insertBefore); - SSAUtils.forEachPhiValuePair(lir, block, pred, resolver::move); + SSAUtil.forEachPhiValuePair(lir, block, pred, resolver::move); resolver.dispose(); - SSAUtils.removePhiOut(lir, pred); + SSAUtil.removePhiOut(lir, pred); } - SSAUtils.removePhiIn(lir, block); + SSAUtil.removePhiIn(lir, block); } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAUtil.java Fri Jul 24 13:49:56 2015 +0200 @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2015, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.lir.ssa; + +import java.util.*; + +import jdk.internal.jvmci.meta.*; + +import com.oracle.graal.compiler.common.cfg.*; +import com.oracle.graal.lir.*; +import com.oracle.graal.lir.LIRInstruction.OperandMode; +import com.oracle.graal.lir.StandardOp.BlockEndOp; +import com.oracle.graal.lir.StandardOp.JumpOp; +import com.oracle.graal.lir.StandardOp.LabelOp; + +/** + * Utilities for working with Static-Single-Assignment LIR form. + * + * <h2>Representation of <code>PHI</code>s</h2> + * + * There is no explicit <code>PHI</code> {@linkplain LIRInstruction}. Instead, they are implemented + * as parallel copy that span across a control-flow edge. + * + * The variables introduced by <code>PHI</code>s of a specific {@linkplain AbstractBlockBase merge + * block} are {@linkplain LabelOp#setIncomingValues attached} to the {@linkplain LabelOp} of the + * block. The outgoing values from the predecessor are {@link JumpOp#setOutgoingValues input} to the + * {@linkplain BlockEndOp} of the predecessor. Because there are no critical edges we know that the + * {@link BlockEndOp} of the predecessor has to be a {@link JumpOp}. + * + * <h3>Example:</h3> + * + * <pre> + * B0 -> B1 + * ... + * v0|i = ... + * JUMP ~[v0|i, int[0|0x0]] destination: B0 -> B1 + * ________________________________________________ + * + * B2 -> B1 + * ... + * v1|i = ... + * v2|i = ... + * JUMP ~[v1|i, v2|i] destination: B2 -> B1 + * ________________________________________________ + * + * B1 <- B0,B2 + * [v3|i, v4|i] = LABEL + * ... + * </pre> + */ +public final class SSAUtil { + + public interface PhiValueVisitor { + /** + * @param phiIn the incoming value at the merge block + * @param phiOut the outgoing value from the predecessor block + */ + void visit(Value phiIn, Value phiOut); + } + + /** + * Visits each phi value pair of an edge, i.e. the outgoing value from the predecessor and the + * incoming value to the merge block. + */ + public static void forEachPhiValuePair(LIR lir, AbstractBlockBase<?> merge, AbstractBlockBase<?> pred, PhiValueVisitor visitor) { + if (merge.getPredecessorCount() < 2) { + return; + } + assert merge.getPredecessors().contains(pred) : String.format("%s not in predecessor list: %s", pred, merge.getPredecessors()); + assert pred.getSuccessorCount() == 1 : String.format("Merge predecessor block %s has more than one successor? %s", pred, pred.getSuccessors()); + assert pred.getSuccessors().get(0) == merge : String.format("Predecessor block %s has wrong successor: %s, should be: %s", pred, pred.getSuccessors().get(0), merge); + + JumpOp jump = phiOut(lir, pred); + LabelOp label = phiIn(lir, merge); + + assert label.getIncomingSize() == jump.getOutgoingSize() : String.format("Phi In/Out size mismatch: in=%d vs. out=%d", label.getIncomingSize(), jump.getOutgoingSize()); + + for (int i = 0; i < label.getIncomingSize(); i++) { + visitor.visit(label.getIncomingValue(i), jump.getOutgoingValue(i)); + } + } + + private static JumpOp phiOut(LIR lir, AbstractBlockBase<?> block) { + assert block.getSuccessorCount() == 1; + List<LIRInstruction> instructions = lir.getLIRforBlock(block); + int index = instructions.size() - 1; + LIRInstruction op = instructions.get(index); + return (JumpOp) op; + } + + public static int phiOutIndex(LIR lir, AbstractBlockBase<?> block) { + assert block.getSuccessorCount() == 1; + List<LIRInstruction> instructions = lir.getLIRforBlock(block); + int index = instructions.size() - 1; + assert instructions.get(index) instanceof JumpOp; + return index; + } + + private static LabelOp phiIn(LIR lir, AbstractBlockBase<?> block) { + assert block.getPredecessorCount() > 1; + LabelOp label = (LabelOp) lir.getLIRforBlock(block).get(0); + return label; + } + + public static void removePhiOut(LIR lir, AbstractBlockBase<?> block) { + JumpOp jump = phiOut(lir, block); + jump.clearOutgoingValues(); + } + + public static void removePhiIn(LIR lir, AbstractBlockBase<?> block) { + LabelOp label = phiIn(lir, block); + label.clearIncomingValues(); + } + + public static boolean verifySSAForm(LIR lir) { + return new SSAVerifier(lir).verify(); + } + + public static void verifyPhi(LIR lir, AbstractBlockBase<?> merge) { + assert merge.getPredecessorCount() > 1; + for (AbstractBlockBase<?> pred : merge.getPredecessors()) { + forEachPhiValuePair(lir, merge, pred, (phiIn, phiOut) -> { + assert phiIn.getLIRKind().equals(phiOut.getLIRKind()) || + (phiIn.getPlatformKind().equals(phiOut.getPlatformKind()) && phiIn.getLIRKind().isUnknownReference() && phiOut.getLIRKind().isValue()); + }); + } + } + + public static void forEachPhiRegisterHint(LIR lir, AbstractBlockBase<?> block, LabelOp label, Value targetValue, OperandMode mode, ValueConsumer valueConsumer) { + assert mode == OperandMode.DEF : "Wrong operand mode: " + mode; + assert lir.getLIRforBlock(block).get(0).equals(label) : String.format("Block %s and Label %s do not match!", block, label); + + if (!label.isPhiIn()) { + return; + } + int idx = indexOfValue(label, targetValue); + assert idx >= 0 : String.format("Value %s not in label %s", targetValue, label); + + for (AbstractBlockBase<?> pred : block.getPredecessors()) { + JumpOp jump = phiOut(lir, pred); + Value sourceValue = jump.getOutgoingValue(idx); + valueConsumer.visitValue(jump, sourceValue, null, null); + } + + } + + private static int indexOfValue(LabelOp label, Value value) { + for (int i = 0; i < label.getIncomingSize(); i++) { + if (label.getIncomingValue(i).equals(value)) { + return i; + } + } + return -1; + } + +}
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssa/SSAUtils.java Fri Jul 24 15:39:14 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -/* - * Copyright (c) 2015, 2015, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.graal.lir.ssa; - -import java.util.*; - -import jdk.internal.jvmci.meta.*; - -import com.oracle.graal.compiler.common.cfg.*; -import com.oracle.graal.lir.*; -import com.oracle.graal.lir.LIRInstruction.OperandMode; -import com.oracle.graal.lir.StandardOp.BlockEndOp; -import com.oracle.graal.lir.StandardOp.JumpOp; -import com.oracle.graal.lir.StandardOp.LabelOp; - -/** - * Utilities for working with Static-Single-Assignment LIR form. - * - * <h2>Representation of <code>PHI</code>s</h2> - * - * There is no explicit <code>PHI</code> {@linkplain LIRInstruction}. Instead, they are implemented - * as parallel copy that span across a control-flow edge. - * - * The variables introduced by <code>PHI</code>s of a specific {@linkplain AbstractBlockBase merge - * block} are {@linkplain LabelOp#setIncomingValues attached} to the {@linkplain LabelOp} of the - * block. The outgoing values from the predecessor are {@link JumpOp#setOutgoingValues input} to the - * {@linkplain BlockEndOp} of the predecessor. Because there are no critical edges we know that the - * {@link BlockEndOp} of the predecessor has to be a {@link JumpOp}. - * - * <h3>Example:</h3> - * - * <pre> - * B0 -> B1 - * ... - * v0|i = ... - * JUMP ~[v0|i, int[0|0x0]] destination: B0 -> B1 - * ________________________________________________ - * - * B2 -> B1 - * ... - * v1|i = ... - * v2|i = ... - * JUMP ~[v1|i, v2|i] destination: B2 -> B1 - * ________________________________________________ - * - * B1 <- B0,B2 - * [v3|i, v4|i] = LABEL - * ... - * </pre> - */ -public final class SSAUtils { - - public interface PhiValueVisitor { - /** - * @param phiIn the incoming value at the merge block - * @param phiOut the outgoing value from the predecessor block - */ - void visit(Value phiIn, Value phiOut); - } - - /** - * Visits each phi value pair of an edge, i.e. the outgoing value from the predecessor and the - * incoming value to the merge block. - */ - public static void forEachPhiValuePair(LIR lir, AbstractBlockBase<?> merge, AbstractBlockBase<?> pred, PhiValueVisitor visitor) { - if (merge.getPredecessorCount() < 2) { - return; - } - assert merge.getPredecessors().contains(pred) : String.format("%s not in predecessor list: %s", pred, merge.getPredecessors()); - assert pred.getSuccessorCount() == 1 : String.format("Merge predecessor block %s has more than one successor? %s", pred, pred.getSuccessors()); - assert pred.getSuccessors().get(0) == merge : String.format("Predecessor block %s has wrong successor: %s, should be: %s", pred, pred.getSuccessors().get(0), merge); - - JumpOp jump = phiOut(lir, pred); - LabelOp label = phiIn(lir, merge); - - assert label.getIncomingSize() == jump.getOutgoingSize() : String.format("Phi In/Out size mismatch: in=%d vs. out=%d", label.getIncomingSize(), jump.getOutgoingSize()); - - for (int i = 0; i < label.getIncomingSize(); i++) { - visitor.visit(label.getIncomingValue(i), jump.getOutgoingValue(i)); - } - } - - private static JumpOp phiOut(LIR lir, AbstractBlockBase<?> block) { - assert block.getSuccessorCount() == 1; - List<LIRInstruction> instructions = lir.getLIRforBlock(block); - int index = instructions.size() - 1; - LIRInstruction op = instructions.get(index); - return (JumpOp) op; - } - - public static int phiOutIndex(LIR lir, AbstractBlockBase<?> block) { - assert block.getSuccessorCount() == 1; - List<LIRInstruction> instructions = lir.getLIRforBlock(block); - int index = instructions.size() - 1; - assert instructions.get(index) instanceof JumpOp; - return index; - } - - private static LabelOp phiIn(LIR lir, AbstractBlockBase<?> block) { - assert block.getPredecessorCount() > 1; - LabelOp label = (LabelOp) lir.getLIRforBlock(block).get(0); - return label; - } - - public static void removePhiOut(LIR lir, AbstractBlockBase<?> block) { - JumpOp jump = phiOut(lir, block); - jump.clearOutgoingValues(); - } - - public static void removePhiIn(LIR lir, AbstractBlockBase<?> block) { - LabelOp label = phiIn(lir, block); - label.clearIncomingValues(); - } - - public static boolean verifySSAForm(LIR lir) { - return new SSAVerifier(lir).verify(); - } - - public static void verifyPhi(LIR lir, AbstractBlockBase<?> merge) { - assert merge.getPredecessorCount() > 1; - for (AbstractBlockBase<?> pred : merge.getPredecessors()) { - forEachPhiValuePair(lir, merge, pred, (phiIn, phiOut) -> { - assert phiIn.getLIRKind().equals(phiOut.getLIRKind()) || - (phiIn.getPlatformKind().equals(phiOut.getPlatformKind()) && phiIn.getLIRKind().isUnknownReference() && phiOut.getLIRKind().isValue()); - }); - } - } - - public static void forEachPhiRegisterHint(LIR lir, AbstractBlockBase<?> block, LabelOp label, Value targetValue, OperandMode mode, ValueConsumer valueConsumer) { - assert mode == OperandMode.DEF : "Wrong operand mode: " + mode; - assert lir.getLIRforBlock(block).get(0).equals(label) : String.format("Block %s and Label %s do not match!", block, label); - - if (!label.isPhiIn()) { - return; - } - int idx = indexOfValue(label, targetValue); - assert idx >= 0 : String.format("Value %s not in label %s", targetValue, label); - - for (AbstractBlockBase<?> pred : block.getPredecessors()) { - JumpOp jump = phiOut(lir, pred); - Value sourceValue = jump.getOutgoingValue(idx); - valueConsumer.visitValue(jump, sourceValue, null, null); - } - - } - - private static int indexOfValue(LabelOp label, Value value) { - for (int i = 0; i < label.getIncomingSize(); i++) { - if (label.getIncomingValue(i).equals(value)) { - return i; - } - } - return -1; - } - -}
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIConstructionPhase.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIConstructionPhase.java Fri Jul 24 13:49:56 2015 +0200 @@ -38,7 +38,7 @@ @Override protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, LIRGeneratorTool lirGen) { - assert SSAUtils.verifySSAForm(lirGenRes.getLIR()); + assert SSAUtil.verifySSAForm(lirGenRes.getLIR()); LIR lir = lirGenRes.getLIR(); new SSIBuilder(lir).build(lirGen); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIUtils.java Fri Jul 24 15:39:14 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIUtils.java Fri Jul 24 13:49:56 2015 +0200 @@ -31,7 +31,7 @@ import com.oracle.graal.lir.StandardOp.BlockEndOp; import com.oracle.graal.lir.LIRInstruction.*; import com.oracle.graal.lir.StandardOp.*; -import com.oracle.graal.lir.ssa.SSAUtils.*; +import com.oracle.graal.lir.ssa.SSAUtil.*; public final class SSIUtils {