summaryrefslogtreecommitdiff
path: root/Source/ExecutionEngine/VerificationResultCache.cs
diff options
context:
space:
mode:
authorGravatar wuestholz <unknown>2014-07-04 03:52:02 +0200
committerGravatar wuestholz <unknown>2014-07-04 03:52:02 +0200
commit06aadffd71f2d96070703371c62bd0e14c76b91f (patch)
tree9bae55508560d840e8b479067fc2fe1185e9d3a5 /Source/ExecutionEngine/VerificationResultCache.cs
parentc7508e18b12db7a1acee981560163e2c319dfc5b (diff)
Implemented an optimization for assignments to assumption variables that are injected by the verification result caching for calls within loops.
Diffstat (limited to 'Source/ExecutionEngine/VerificationResultCache.cs')
-rw-r--r--Source/ExecutionEngine/VerificationResultCache.cs4
1 files changed, 3 insertions, 1 deletions
diff --git a/Source/ExecutionEngine/VerificationResultCache.cs b/Source/ExecutionEngine/VerificationResultCache.cs
index 9d1eea24..5c3324cc 100644
--- a/Source/ExecutionEngine/VerificationResultCache.cs
+++ b/Source/ExecutionEngine/VerificationResultCache.cs
@@ -153,11 +153,13 @@ namespace Microsoft.Boogie
var oldProc = programInCachedSnapshot.TopLevelDeclarations.OfType<Procedure>().FirstOrDefault(p => p.Name == node.Proc.Name);
if (oldProc != null
&& DependencyCollector.DependenciesChecksum(oldProc) != DependencyCollector.DependenciesChecksum(node.Proc)
- && DependencyCollector.AllFunctionDependenciesAreDefinedAndUnchanged(oldProc, Program))
+ && DependencyCollector.AllFunctionDependenciesAreDefinedAndUnchanged(oldProc, Program)
+ && node.AssignedAssumptionVariable == null)
{
var lv = new LocalVariable(Token.NoToken,
new TypedIdent(Token.NoToken, string.Format("a##post##{0}", FreshAssumptionVariableName), Type.Bool),
new QKeyValue(Token.NoToken, "assumption", new List<object>(), null));
+ node.AssignedAssumptionVariable = lv;
currentImplementation.InjectAssumptionVariable(lv);
var before = new List<Cmd>();