X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Robust%2Fsrc%2FAnalysis%2FSSJava%2FFlowDownCheck.java;h=9cbe54bde105816425298b208b1552548405de42;hb=a8b64832616c39013fa76a9d38c7e7affaa7cb2f;hp=8ff79e398032c8652695b791848a87c93fc22e2b;hpb=ac69f1d79a7ca9e02bc695ec500e77710589a8e2;p=IRC.git diff --git a/Robust/src/Analysis/SSJava/FlowDownCheck.java b/Robust/src/Analysis/SSJava/FlowDownCheck.java index 8ff79e39..9cbe54bd 100644 --- a/Robust/src/Analysis/SSJava/FlowDownCheck.java +++ b/Robust/src/Analysis/SSJava/FlowDownCheck.java @@ -25,6 +25,7 @@ import IR.SymbolTable; import IR.TypeDescriptor; import IR.TypeExtension; import IR.VarDescriptor; +import IR.Flat.FlatNode; import IR.Tree.ArrayAccessNode; import IR.Tree.AssignmentNode; import IR.Tree.BlockExpressionNode; @@ -1527,10 +1528,10 @@ public class FlowDownCheck { } // } -// System.out.println("dstLocation=" + destLocation); -// System.out.println("rhsLocation=" + rhsLocation); -// System.out.println("srcLocation=" + srcLocation); -// System.out.println("constraint=" + constraint); + // System.out.println("dstLocation=" + destLocation); + // System.out.println("rhsLocation=" + rhsLocation); + // System.out.println("srcLocation=" + srcLocation); + // System.out.println("constraint=" + constraint); if (!CompositeLattice.isGreaterThan(srcLocation, destLocation, generateErrorMessage(cd, an))) { @@ -1544,6 +1545,16 @@ public class FlowDownCheck { + " at " + cd.getSourceFileName() + "::" + an.getNumLine()); } + if (srcLocation.equals(destLocation)) { + // keep it for definitely written analysis + Set flatNodeSet = ssjava.getBuildFlat().getFlatNodeSet(an); + for (Iterator iterator = flatNodeSet.iterator(); iterator.hasNext();) { + FlatNode fn = (FlatNode) iterator.next(); + ssjava.addSameHeightWriteFlatNode(fn); + } + + } + } else { destLocation = rhsLocation = @@ -1576,6 +1587,15 @@ public class FlowDownCheck { } + if (srcLocation.equals(destLocation)) { + // keep it for definitely written analysis + Set flatNodeSet = ssjava.getBuildFlat().getFlatNodeSet(an); + for (Iterator iterator = flatNodeSet.iterator(); iterator.hasNext();) { + FlatNode fn = (FlatNode) iterator.next(); + ssjava.addSameHeightWriteFlatNode(fn); + } + } + } return destLocation;