Mercurial > hg > graal-compiler
changeset 9382:b59b10ddc797
Do not combine merge with succeeding merge if it holds a stateAfter and the succeeding merge does not.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sun, 28 Apr 2013 06:31:30 +0200 |
parents | addc2a25d727 |
children | 6a050090dff8 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java |
diffstat | 1 files changed, 4 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Sun Apr 28 06:25:26 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Sun Apr 28 06:31:30 2013 +0200 @@ -154,6 +154,10 @@ if (this.anchored().isNotEmpty()) { return; } + if (merge.stateAfter() == null && this.stateAfter() != null) { + // We hold a state, but the succeeding merge does not => do not combine. + return; + } for (PhiNode phi : phis()) { for (Node usage : phi.usages().filter(isNotA(FrameState.class))) { if (!merge.isPhiAtMerge(usage)) {