diff options
author | wuestholz <unknown> | 2014-07-04 03:52:02 +0200 |
---|---|---|
committer | wuestholz <unknown> | 2014-07-04 03:52:02 +0200 |
commit | 06aadffd71f2d96070703371c62bd0e14c76b91f (patch) | |
tree | 9bae55508560d840e8b479067fc2fe1185e9d3a5 /Source/ExecutionEngine/VerificationResultCache.cs | |
parent | c7508e18b12db7a1acee981560163e2c319dfc5b (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.cs | 4 |
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>();
|