]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/statements/LetStatement.java
(refs #7567) Added throw function to builtins
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / ssa / statements / LetStatement.java
1 package org.simantics.scl.compiler.internal.codegen.ssa.statements;
2
3 import org.simantics.scl.compiler.internal.codegen.references.BoundVar;
4 import org.simantics.scl.compiler.internal.codegen.ssa.SSAStatement;
5 import org.simantics.scl.compiler.internal.codegen.ssa.binders.BoundVarBinder;
6 import org.simantics.scl.compiler.internal.codegen.utils.SSASimplificationContext;
7 import org.simantics.scl.compiler.internal.codegen.utils.SSAValidationContext;
8
9 public abstract class LetStatement extends SSAStatement implements BoundVarBinder {
10     BoundVar target;
11
12     public LetStatement(BoundVar target) {
13         setTarget(target);
14     }
15     
16     @Override
17     public void simplify(SSASimplificationContext context) {
18         if(target.hasNoOccurences()) {
19             remove();
20             context.markModified("dead-let-statement");
21         }                   
22     }
23     
24     public BoundVar getTarget() {
25         return target;
26     }
27     
28     public void setTarget(BoundVar target) {
29         this.target = target;
30         target.parent = this;
31     }
32     
33     @Override
34     public void addBoundVariablesTo(SSAValidationContext context) {
35         context.validBoundVariables.add(target);
36     }
37
38 }