]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/statements/LetApply.java
Fixed an error with recursive definition that is not exported or used
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / ssa / statements / LetApply.java
index b8b7def598175705f4beb2cb1f3b768688afe873..210e3ded3243fc20755dd4553dd19bd309f0d0ba 100644 (file)
@@ -77,7 +77,7 @@ public class LetApply extends LetStatement implements ValRefBinder {
 
     @Override
     public void toString(PrintingContext context) {
-        if(determineGenerateOnFly())
+        if(/*target.getLabel() == null &&*/ determineGenerateOnFly())
             context.addInlineExpression(target, this);
         else
             toStringAux(context);
@@ -356,6 +356,8 @@ public class LetApply extends LetStatement implements ValRefBinder {
                
         SSABlock headBlock = getParent();
         SSAFunction thisFunction = headBlock.getParent();
+        if(thisFunction == function)
+            return;
                
         /*System.out.println("--- INLINING -------------------------------");
         System.out.println(thisFunction);
@@ -399,7 +401,7 @@ public class LetApply extends LetStatement implements ValRefBinder {
         tailBlock.setExit(headBlock.getExit());
         
         // Merge blocks        
-        thisFunction.mergeBlocks(function);           
+        thisFunction.mergeBlocks(function);
         
         headBlock.setExit(new Jump(function.getFirstBlock().createOccurrence(), 
                 parameters));
@@ -488,4 +490,11 @@ public class LetApply extends LetStatement implements ValRefBinder {
         for(ValRef parameter : parameters)
             visitor.visit(parameter);
     }
+
+    @Override
+    public void cleanup() {
+        function.remove();
+        for(ValRef parameter : parameters)
+            parameter.remove();
+    }
 }