]> gerrit.simantics Code Review - simantics/platform.git/blob
0ae6d8930f3ea36f5e2622c216fd91ee8715eafe
[simantics/platform.git] /
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 }