From 047ac9f0ce75fcb042794b9d30fea6f37cbaa139 Mon Sep 17 00:00:00 2001 From: msridhar1 Date: Thu, 5 May 2011 03:51:14 +0000 Subject: [PATCH] bug fix: add missing check for invariant points-to set git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@4170 f5eafffb-2e1d-0410-98e4-8ec43c5233c4 --- .../callgraph/AstSSAPropagationCallGraphBuilder.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/AstSSAPropagationCallGraphBuilder.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/AstSSAPropagationCallGraphBuilder.java index d668c9e03..e9e8f25b6 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/AstSSAPropagationCallGraphBuilder.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/AstSSAPropagationCallGraphBuilder.java @@ -535,11 +535,19 @@ public abstract class AstSSAPropagationCallGraphBuilder extends SSAPropagationCa Access r = I.getLexicalUse(ri); if (w.variableName.equals(r.variableName)) { if (w.variableDefiner == null ? r.variableDefiner == null : w.variableDefiner.equals(r.variableDefiner)) { - // handle the control-flow paths through the (transitive) callees where the name is not written; + // handle the control-flow paths through the (transitive) + // callees where the name is not written; // in such cases, the original value (rk) is preserved PointerKey rk = getBuilder().getPointerKeyForLocal(node, r.valueNumber); PointerKey wk = getBuilder().getPointerKeyForLocal(node, w.valueNumber); - system.newConstraint(wk, assignOperator, rk); + if (contentsAreInvariant(symbolTable, du, r.valueNumber)) { + system.recordImplicitPointsToSet(rk); + for (InstanceKey ik : getInvariantContents(r.valueNumber)) { + system.newConstraint(wk, ik); + } + } else { + system.newConstraint(wk, assignOperator, rk); + } } } }