summaryrefslogtreecommitdiffstats
path: root/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/PropertySimulator.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/PropertySimulator.java')
-rw-r--r--org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/PropertySimulator.java22
1 files changed, 9 insertions, 13 deletions
diff --git a/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/PropertySimulator.java b/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/PropertySimulator.java
index 1cd6911..c7a8107 100644
--- a/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/PropertySimulator.java
+++ b/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/PropertySimulator.java
@@ -19,15 +19,8 @@ import java.util.Queue;
import java.util.Set;
import java.util.Map.Entry;
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
-import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
-import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.ptp.pldt.mpi.analysis.cdt.graphs.IBlock;
import org.eclipse.ptp.pldt.mpi.analysis.cdt.graphs.IControlFlowEdge;
@@ -213,9 +206,11 @@ public class PropertySimulator {
private Set<SymbolicState> flowBranch(IBlock blk, Set<SymbolicState> ss, boolean value) {
Set<SymbolicState> ret = new HashSet<SymbolicState>();
for (SymbolicState s : ss) {
- SymbolicState s0 = transferBranch(blk, s, value);
- if (!s0.getExecutionState().isBottom()) {
- ret.add(s0);
+ Set<SymbolicState> ss0 = transferBranch(blk, s, value);
+ for (SymbolicState s0 : ss0) {
+ if (!s0.getExecutionState().isBottom()) {
+ ret.add(s0);
+ }
}
}
return group(ret);
@@ -304,12 +299,13 @@ public class PropertySimulator {
return null;
}
- private SymbolicState transferBranch(IBlock blk, SymbolicState s, boolean value) {
+ private Set<SymbolicState> transferBranch(IBlock blk, SymbolicState s, boolean value) {
IASTNode node = blk.getContent();
- SymbolicState ret = s.copy();
+ Set<SymbolicState> ret = new HashSet<SymbolicState>();
+ ret.add(s.copy());
if (node != null) {
- ConditionalVisitor visitor = new ConditionalVisitor(ret.getExecutionState(), value);
+ ConditionalVisitor visitor = new ConditionalVisitor(s, ret, value);
node.accept(visitor);
}