summaryrefslogtreecommitdiff
path: root/Source/Houdini
diff options
context:
space:
mode:
authorGravatar qadeer <unknown>2014-09-16 12:43:10 -0700
committerGravatar qadeer <unknown>2014-09-16 12:43:10 -0700
commit2151f863ce418b3deb50c9a8d955f4b3b72cead6 (patch)
treea45db3950f53819d424c767c6ce4ccd8b5623a01 /Source/Houdini
parentd916a5ee8f357d9e61bd93e7b67a3283b0a6f185 (diff)
fixed a crash
Diffstat (limited to 'Source/Houdini')
-rw-r--r--Source/Houdini/Houdini.cs25
1 files changed, 15 insertions, 10 deletions
diff --git a/Source/Houdini/Houdini.cs b/Source/Houdini/Houdini.cs
index af1bd8ad..7dfa1bc7 100644
--- a/Source/Houdini/Houdini.cs
+++ b/Source/Houdini/Houdini.cs
@@ -944,18 +944,22 @@ namespace Microsoft.Boogie.Houdini {
List<Implementation> implementations = new List<Implementation>();
switch (refutedAnnotation.Kind) {
case RefutedAnnotationKind.REQUIRES:
- foreach (Implementation callee in callGraph.Successors(currentImplementation)) {
- houdiniSessions.TryGetValue(callee, out session);
- Contract.Assume(callee.Proc != null);
- if (callee.Proc.Equals(refutedAnnotation.CalleeProc) && session.InUnsatCore(refutedAnnotation.Constant))
- implementations.Add(callee);
- }
+ foreach (Implementation callee in callGraph.Successors(currentImplementation))
+ {
+ if (vcgenFailures.Contains(callee)) continue;
+ houdiniSessions.TryGetValue(callee, out session);
+ Contract.Assume(callee.Proc != null);
+ if (callee.Proc.Equals(refutedAnnotation.CalleeProc) && session.InUnsatCore(refutedAnnotation.Constant))
+ implementations.Add(callee);
+ }
break;
case RefutedAnnotationKind.ENSURES:
- foreach (Implementation caller in callGraph.Predecessors(currentImplementation)) {
- houdiniSessions.TryGetValue(caller, out session);
- if (session.InUnsatCore(refutedAnnotation.Constant))
- implementations.Add(caller);
+ foreach (Implementation caller in callGraph.Predecessors(currentImplementation))
+ {
+ if (vcgenFailures.Contains(caller)) continue;
+ houdiniSessions.TryGetValue(caller, out session);
+ if (session.InUnsatCore(refutedAnnotation.Constant))
+ implementations.Add(caller);
}
break;
case RefutedAnnotationKind.ASSERT: //the implementation is already in queue
@@ -963,6 +967,7 @@ namespace Microsoft.Boogie.Houdini {
{
foreach (var impl in crossDependencies.assumedInImpl[refutedAnnotation.Constant.Name])
{
+ if (vcgenFailures.Contains(impl)) continue;
houdiniSessions.TryGetValue(impl, out session);
if (session.InUnsatCore(refutedAnnotation.Constant))
implementations.Add(impl);