start of new file
[IRC.git] / Robust / src / Analysis / Prefetch / LoopExit.java
index 7876a2c3a40e8d54529d6ffe3c35408569a96d63..2b1099b6dbd10d16b067bd215c966760c1c05cd8 100644 (file)
@@ -66,8 +66,12 @@ public class LoopExit {
        if (table.containsKey(fn)) {
            if (!table.containsKey(fnnext))
                table.put(fnnext, new HashSet<FlatCondBranch>());
-           if(!table.get(fnnext).containsAll(table.get(fn))) {
-               table.get(fnnext).addAll(table.get(fn));
+           HashSet<FlatCondBranch> toadd=new HashSet<FlatCondBranch>();
+           toadd.addAll(table.get(fn));
+           if (toadd.contains(fnnext)) //can't propagate back to node
+               toadd.remove(fnnext);
+           if(!table.get(fnnext).containsAll(toadd)) {
+               table.get(fnnext).addAll(toadd);
                enqueuechange=true;
            }
        }