Mercurial > hg > truffle
comparison graal/GraalCompiler/src/com/sun/c1x/alloc/LinearScan.java @ 2789:aeccd2af4e9e
Fixes around critical edge split and placeholder removal after goto removal.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Wed, 25 May 2011 16:48:28 +0200 |
parents | 79dda81dd337 |
children | 6d14aa4fbf90 |
comparison
equal
deleted
inserted
replaced
2788:df4c5254c5cc | 2789:aeccd2af4e9e |
---|---|
723 // fixed intervals are never live at block boundaries, so | 723 // fixed intervals are never live at block boundaries, so |
724 // they need not be processed in live sets. | 724 // they need not be processed in live sets. |
725 // this is checked by these assertions to be sure about it. | 725 // this is checked by these assertions to be sure about it. |
726 // the entry block may have incoming | 726 // the entry block may have incoming |
727 // values in registers, which is ok. | 727 // values in registers, which is ok. |
728 if (!operand.isVariable() /*&& block != ir.startBlock*/) { | 728 if (!operand.isVariable() && block != ir.startBlock) { |
729 if (isProcessed(operand)) { | 729 if (isProcessed(operand)) { |
730 assert liveKill.get(operandNumber(operand)) : "using fixed register that is not defined in this block"; | 730 assert liveKill.get(operandNumber(operand)) : "using fixed register that is not defined in this block"; |
731 } | 731 } |
732 } | 732 } |
733 } | 733 } |
809 CiBitMap liveInArgs = new CiBitMap(startBlock.liveIn.size()); | 809 CiBitMap liveInArgs = new CiBitMap(startBlock.liveIn.size()); |
810 if (!startBlock.liveIn.isSame(liveInArgs)) { | 810 if (!startBlock.liveIn.isSame(liveInArgs)) { |
811 if (C1XOptions.DetailedAsserts) { | 811 if (C1XOptions.DetailedAsserts) { |
812 reportFailure(numBlocks); | 812 reportFailure(numBlocks); |
813 } | 813 } |
814 | |
815 TTY.println("preds=" + startBlock.blockPredecessors().size() + ", succs=" + startBlock.blockSuccessors().size()); | |
814 | 816 |
815 // bailout of if this occurs in product mode. | 817 // bailout of if this occurs in product mode. |
816 throw new CiBailout("liveIn set of first block must be empty"); | 818 throw new CiBailout("liveIn set of first block must be empty"); |
817 } | 819 } |
818 } | 820 } |