bug fix: The result of the pointer analysis is broken when it tries to do something...
[IRC.git] / Robust / src / Analysis / Disjoint / PointerMethod.java
index 88f23b992c5559b2f24b8020b97c31e465431256..5ab2314cb961a1aa81e4833f3ff20a281e03793e 100644 (file)
@@ -25,37 +25,37 @@ public class PointerMethod {
       toprocess.remove(fn);
       HashSet<FlatNode> myset=new HashSet<FlatNode>();
       if (!analysisCares(fn)) {
-       for(int i=0; i<fn.numPrev(); i++) {
-         if (map.containsKey(fn.getPrev(i)))
-           myset.addAll(map.get(fn.getPrev(i)));
-       }
+        for(int i=0; i<fn.numPrev(); i++) {
+          if (map.containsKey(fn.getPrev(i)))
+            myset.addAll(map.get(fn.getPrev(i)));
+        }
       } else {
-       myset.add(fn);
+        myset.add(fn);
       }
       if (!map.containsKey(fn)||!map.get(fn).equals(myset)) {
-       map.put(fn, myset);
-       for(int i=0; i<fn.numNext(); i++) {
-         toprocess.add(fn.getNext(i));
-       }
+        map.put(fn, myset);
+        for(int i=0; i<fn.numNext(); i++) {
+          toprocess.add(fn.getNext(i));
+        }
       }
     }
     for(Iterator<FlatNode> it=map.keySet().iterator(); it.hasNext(); ) {
       FlatNode fn=it.next();
       if (analysisCares(fn)) {
-       HashSet<FlatNode> myset=new HashSet<FlatNode>();
-       for(int i=0; i<fn.numPrev(); i++) {
-         if (map.containsKey(fn.getPrev(i)))
-           myset.addAll(map.get(fn.getPrev(i)));
-       }
-       if (!prevmap.containsKey(fn))
-         prevmap.put(fn, new Vector());
-       for(Iterator<FlatNode> it2=myset.iterator(); it2.hasNext(); ) {
-         FlatNode fnprev=it2.next();
-         if (!nextmap.containsKey(fnprev))
-           nextmap.put(fnprev, new Vector());
-         nextmap.get(fnprev).add(fn);
-         prevmap.get(fn).add(fnprev);
-       }
+        HashSet<FlatNode> myset=new HashSet<FlatNode>();
+        for(int i=0; i<fn.numPrev(); i++) {
+          if (map.containsKey(fn.getPrev(i)))
+            myset.addAll(map.get(fn.getPrev(i)));
+        }
+        if (!prevmap.containsKey(fn))
+          prevmap.put(fn, new Vector());
+        for(Iterator<FlatNode> it2=myset.iterator(); it2.hasNext(); ) {
+          FlatNode fnprev=it2.next();
+          if (!nextmap.containsKey(fnprev))
+            nextmap.put(fnprev, new Vector());
+          nextmap.get(fnprev).add(fn);
+          prevmap.get(fn).add(fnprev);
+        }
       }
     }
   }
@@ -98,6 +98,7 @@ public class PointerMethod {
     case FKind.FlatSESEEnterNode:
     case FKind.FlatSESEExitNode:
     case FKind.FlatGenReachNode:
+    case FKind.FlatGenDefReachNode:
     case FKind.FlatExit:
       return true;