X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fcodegen%2Fssa%2FSSABlock.java;h=fba16bf8370817329234bc66fee160c09dd1f596;hb=refs%2Fchanges%2F34%2F1534%2F3;hp=aaab03e1aae8c3e49686ec7d1960c4dc9dbf1b44;hpb=c26409b1caf2f1e560d37c5befd11b442399c3fe;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/SSABlock.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/SSABlock.java index aaab03e1a..fba16bf83 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/SSABlock.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/SSABlock.java @@ -443,7 +443,7 @@ public final class SSABlock extends Cont implements Printable, BoundVarBinder { for(BranchRef branch : sw.getBranches()) { if(branch.constructor == function) { sw.destroy(); - setExit(new Jump(branch.cont.getBinding().createOccurrence(), + setExit(new Jump(sw.lineNumber, branch.cont.getBinding().createOccurrence(), ValRef.copy(apply.getParameters()))); return true; } @@ -461,7 +461,7 @@ public final class SSABlock extends Cont implements Printable, BoundVarBinder { * [a] */ sw.destroy(); - setExit(new Jump(branch.cont.getBinding().createOccurrence())); + setExit(new Jump(sw.lineNumber, branch.cont.getBinding().createOccurrence())); } } } @@ -530,7 +530,7 @@ public final class SSABlock extends Cont implements Printable, BoundVarBinder { public void markGenerateOnFly() { for(SSAStatement stat = firstStatement; stat != null; stat = stat.next) - stat.markGenerateOnFly(); + stat.markGenerateOnFly(); } public SSABlock copy(CopyContext context) { @@ -598,5 +598,12 @@ public final class SSABlock extends Cont implements Printable, BoundVarBinder { statement.forValRefs(visitor); exit.forValRefs(visitor); } + + public void cleanup() { + for(SSAStatement statement = firstStatement; + statement != null; statement = statement.next) + statement.cleanup(); + exit.cleanup(); + } }