# HG changeset patch # User Thomas Wuerthinger # Date 1308165620 -7200 # Node ID 2bf5ac3f6fc3334324a27e9b0a17387ad9755a32 # Parent 90acf5aaa10e744fb192cf25b45088d24ae60f54 Clean up dead code elimination. Bring simple merge deletion back in. diff -r 90acf5aaa10e -r 2bf5ac3f6fc3 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java Wed Jun 15 20:02:15 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java Wed Jun 15 21:20:20 2011 +0200 @@ -44,25 +44,12 @@ this.brokenLoops = new ArrayList(); // remove chained Merges -// for (Merge merge : graph.getNodes(Merge.class)) { -// if (merge.predecessors().size() == 1 && merge.usages().size() == 0) { -// if (merge.successors().get(0) instanceof Merge) { -// Node pred = merge.predecessors().get(0); -// int predIndex = merge.predecessorsIndex().get(0); -// pred.successors().setAndClear(predIndex, merge, 0); -// merge.delete(); -// } -// } -// } -// Node startSuccessor = graph.start().successors().get(0); -// if (startSuccessor instanceof Merge) { -// Merge startMerge = (Merge) startSuccessor; -// if (startMerge.predecessors().size() == 1 && startMerge.usages().size() == 0) { -// int predIndex = startMerge.predecessorsIndex().get(0); -// graph.start().successors().setAndClear(predIndex, startMerge, 0); -// startMerge.delete(); -// } -// } + for (Merge merge : graph.getNodes(Merge.class)) { + if (merge.endCount() == 1 && merge.usages().size() == 0 && !(merge instanceof LoopEnd) && !(merge instanceof LoopBegin)) { + merge.endAt(0).replace(merge.next()); + merge.delete(); + } + } flood.add(graph.start()); diff -r 90acf5aaa10e -r 2bf5ac3f6fc3 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/schedule/IdentifyBlocksPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/schedule/IdentifyBlocksPhase.java Wed Jun 15 20:02:15 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/schedule/IdentifyBlocksPhase.java Wed Jun 15 21:20:20 2011 +0200 @@ -199,6 +199,7 @@ Node n = block.firstNode(); if (n instanceof LoopBegin) { LoopBegin loopBegin = (LoopBegin) n; + assert loopBegin.loopEnd() != null; nodeToBlock.get(loopBegin.loopEnd()).addSuccessor(block); } }