fixes on FlatWriteDynamicVarNode to handle properly branch node.
authoryeom <yeom>
Thu, 5 Aug 2010 20:27:12 +0000 (20:27 +0000)
committeryeom <yeom>
Thu, 5 Aug 2010 20:27:12 +0000 (20:27 +0000)
Robust/src/IR/Flat/FlatWriteDynamicVarNode.java

index 552b845b74e30e1b69ab7738ce4b1743c345b604..2f2119ea1f267b700b0dd691877d891aa43fe2af 100644 (file)
@@ -30,11 +30,28 @@ public class FlatWriteDynamicVarNode extends FlatNode {
   }
 
   public void spliceIntoIR() {
-    tailNode.removeNext( headNode );
-    headNode.removePrev( tailNode );
     
-    tailNode.addNext( this );
-    this.addNext( headNode );
+    if(tailNode instanceof FlatCondBranch){
+
+      headNode.removePrev( tailNode );
+      
+      if(tailNode.next.elementAt(0).equals(headNode)){
+        tailNode.removeNext( headNode );
+        ((FlatCondBranch)tailNode).addTrueNext(this);
+      }else{
+        tailNode.removeNext( headNode );
+        ((FlatCondBranch)tailNode).addFalseNext(this);
+      }
+      
+      this.addNext( headNode );
+    }else{
+      tailNode.removeNext( headNode );
+      headNode.removePrev( tailNode );
+      
+      tailNode.addNext( this );
+      this.addNext( headNode );
+    }
+
   }
 
   public void addMoreVar2Src( Hashtable<TempDescriptor, VSTWrapper> more ) {