X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fcodegen%2Fssa%2Fexits%2FIf.java;h=ee69106cdb5f8dccace0220fcee6ebbf9adf0883;hp=4eca7d1aeb35fa851124281175643a0f489025e7;hb=91682baa9a8252390f09b80fd724f47e5957b234;hpb=3826e289058a51d09310b7ba1251e959dc0ed3d0 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/exits/If.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/exits/If.java index 4eca7d1ae..ee69106cd 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/exits/If.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/exits/If.java @@ -31,7 +31,8 @@ public class If extends SSAExit implements ValRefBinder { private ContRef thenTarget; private ContRef elseTarget; - public If(ValRef condition, ContRef thenTarget, ContRef elseTarget) { + public If(int lineNumber, ValRef condition, ContRef thenTarget, ContRef elseTarget) { + super(lineNumber); setCondition(condition); setThenTarget(thenTarget); setElseTarget(elseTarget); @@ -54,6 +55,7 @@ public class If extends SSAExit implements ValRefBinder { @Override public void generateCode(MethodBuilder mb) { + mb.lineNumber(lineNumber); Val binding = condition.getBinding(); simplifyTestCode: if(binding instanceof BoundVar) { BoundVar boundVar = (BoundVar)binding; @@ -147,9 +149,11 @@ public class If extends SSAExit implements ValRefBinder { @Override public SSAExit copy(CopyContext context) { - return new If(context.copy(condition), + If copy = new If(lineNumber, + context.copy(condition), context.copy(thenTarget), context.copy(elseTarget)); + return copy; } @Override @@ -163,11 +167,11 @@ public class If extends SSAExit implements ValRefBinder { if(cond instanceof BooleanConstant) { SSAExit newExit; if(((BooleanConstant) cond).getValue()) { - newExit = new Jump(thenTarget); + newExit = new Jump(lineNumber, thenTarget); elseTarget.remove(); } else { - newExit = new Jump(elseTarget); + newExit = new Jump(lineNumber, elseTarget); thenTarget.remove(); } condition.remove(); @@ -177,7 +181,7 @@ public class If extends SSAExit implements ValRefBinder { else if(thenTarget.getBinding() == elseTarget.getBinding()) { elseTarget.remove(); condition.remove(); - getParent().setExit(new Jump(thenTarget)); + getParent().setExit(new Jump(lineNumber, thenTarget)); context.markModified("equal-branches-if"); } }