Bug fix...
authorbdemsky <bdemsky>
Tue, 27 Jul 2004 19:17:15 +0000 (19:17 +0000)
committerbdemsky <bdemsky>
Tue, 27 Jul 2004 19:17:15 +0000 (19:17 +0000)
Repair/RepairCompiler/MCC/IR/AbstractRepair.java
Repair/RepairCompiler/MCC/IR/ConcreteInterferes.java
Repair/RepairCompiler/MCC/IR/GraphAnalysis.java

index 3783f4beb8379514afab9236a833a19dd80da61c..d8888490324097dc8f1ee304b01af91fd2cee2a4 100755 (executable)
@@ -35,7 +35,7 @@ class AbstractRepair {
        } else if (getType()==ADDTORELATION) {
            RelationDescriptor rd=(RelationDescriptor)descriptor;
            return sources.relallocSource(rd,isdomain);
        } else if (getType()==ADDTORELATION) {
            RelationDescriptor rd=(RelationDescriptor)descriptor;
            return sources.relallocSource(rd,isdomain);
-       } else throw new Error("");
+       } else throw new Error(type());
     }
 
     public SetDescriptor getDomainSet() {
     }
 
     public SetDescriptor getDomainSet() {
index 87418210200d241723519287204ac45770b41317..083a5063680110a52ce616570553e5b8496466f9 100755 (executable)
@@ -106,35 +106,36 @@ public class ConcreteInterferes {
     
     static private boolean updateonlytonewobject(MultUpdateNode mun, UpdateNode un, Updates updates) {
        AbstractRepair ar=mun.getRepair();
     
     static private boolean updateonlytonewobject(MultUpdateNode mun, UpdateNode un, Updates updates) {
        AbstractRepair ar=mun.getRepair();
-       for(int i=0;i<un.numUpdates();i++) {
-           Updates u=un.getUpdate(i);
-           if (u.getType()==Updates.POSITION&&
-               ar.isNewObject(u.getRightPos()==0)) {
-               Expr newleftexpr=u.getLeftExpr();
-               Expr leftexpr=updates.getLeftExpr();
-               boolean foundfield=false;
-               while(true) {
-                   if (leftexpr.equals(null,newleftexpr)) {
-                       if (foundfield)
-                           return true;
-                       else
+       if ((ar!=null)&&(ar.getType()==AbstractRepair.ADDTOSET||ar.getType()==AbstractRepair.ADDTORELATION))
+           for(int i=0;i<un.numUpdates();i++) {
+               Updates u=un.getUpdate(i);
+               if (u.getType()==Updates.POSITION&&
+                   ar.isNewObject(u.getRightPos()==0)) {
+                   Expr newleftexpr=u.getLeftExpr();
+                   Expr leftexpr=updates.getLeftExpr();
+                   boolean foundfield=false;
+                   while(true) {
+                       if (leftexpr.equals(null,newleftexpr)) {
+                           if (foundfield)
+                               return true;
+                           else
+                               break;
+                       } else if (leftexpr instanceof DotExpr) {
+                           if (!foundfield) {
+                               foundfield=true;
+                           } else {
+                               if (((DotExpr)leftexpr).isPtr())
+                                   break; //if its not a pointer, we're still in the structure
+                           }
+                           leftexpr=((DotExpr)leftexpr).getExpr();
+                       } else if (leftexpr instanceof CastExpr) {
+                           leftexpr=((CastExpr)leftexpr).getExpr();
+                       } else
                            break;
                            break;
-                   } else if (leftexpr instanceof DotExpr) {
-                       if (!foundfield) {
-                           foundfield=true;
-                       } else {
-                           if (((DotExpr)leftexpr).isPtr())
-                               break; //if its not a pointer, we're still in the structure
-                       }
-                       leftexpr=((DotExpr)leftexpr).getExpr();
-                   } else if (leftexpr instanceof CastExpr) {
-                       leftexpr=((CastExpr)leftexpr).getExpr();
-                   } else
-                       break;
+                   }
                }
            }
                }
            }
-       }
-
+       
        return false;
     }
 
        return false;
     }
 
index a44f431ff60c72d5c186440a92ec715e4381e98e..3a5d56fdaa06b1e847f865adc7f543bcf1e57b19 100755 (executable)
@@ -261,6 +261,16 @@ public class GraphAnalysis {
                    }
 
                    System.out.println("Cycle through conjunction "+gn.getTextLabel() +" which can't be removed.");
                    }
 
                    System.out.println("Cycle through conjunction "+gn.getTextLabel() +" which can't be removed.");
+                   System.out.println("CANTREMOVE");
+                   for(Iterator it2=cantremove.iterator();it2.hasNext();) {
+                       GraphNode gn2=(GraphNode)it2.next();
+                       System.out.println(gn2.getTextLabel());
+                   }
+                   System.out.println("MUSTREMOVE");
+                   for(Iterator it2=mustremove.iterator();it2.hasNext();) {
+                       GraphNode gn2=(GraphNode)it2.next();
+                       System.out.println(gn2.getTextLabel());
+                   }
                    return null; // Out of luck
                }
            }
                    return null; // Out of luck
                }
            }