summaryrefslogtreecommitdiff
path: root/Source/Concurrency/MoverCheck.cs
diff options
context:
space:
mode:
authorGravatar qadeer <unknown>2014-01-09 08:13:15 -0800
committerGravatar qadeer <unknown>2014-01-09 08:13:15 -0800
commit59732afd306a62d53143c2e627fadb97fc0ee9c8 (patch)
tree1ea899d27fbbbe9993726422d93c69a87645be20 /Source/Concurrency/MoverCheck.cs
parenta0da62d4eba25d38b35445378a9cfd7dafed25ba (diff)
some optimizations to mover checks
Diffstat (limited to 'Source/Concurrency/MoverCheck.cs')
-rw-r--r--Source/Concurrency/MoverCheck.cs11
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/Concurrency/MoverCheck.cs b/Source/Concurrency/MoverCheck.cs
index d1e5929d..781fcb36 100644
--- a/Source/Concurrency/MoverCheck.cs
+++ b/Source/Concurrency/MoverCheck.cs
@@ -360,6 +360,11 @@ namespace Microsoft.Boogie
private void CreateCommutativityChecker(Program program, ActionInfo first, ActionInfo second)
{
+ if (first == second)
+ return;
+ if (first.CommutesWith(second))
+ return;
+
Tuple<ActionInfo, ActionInfo> actionPair = new Tuple<ActionInfo, ActionInfo>(first, second);
if (commutativityCheckerCache.Contains(actionPair))
return;
@@ -406,6 +411,9 @@ namespace Microsoft.Boogie
private void CreateGatePreservationChecker(Program program, ActionInfo first, ActionInfo second)
{
+ if (first.gateUsedGlobalVars.Intersect(second.modifiedGlobalVars).Count() == 0)
+ return;
+
Tuple<ActionInfo, ActionInfo> actionPair = new Tuple<ActionInfo, ActionInfo>(first, second);
if (gatePreservationCheckerCache.Contains(actionPair))
return;
@@ -439,6 +447,9 @@ namespace Microsoft.Boogie
private void CreateFailurePreservationChecker(Program program, ActionInfo first, ActionInfo second)
{
+ if (first.gateUsedGlobalVars.Intersect(second.modifiedGlobalVars).Count() == 0 && second.isNonBlocking)
+ return;
+
Tuple<ActionInfo, ActionInfo> actionPair = new Tuple<ActionInfo, ActionInfo>(first, second);
if (failurePreservationCheckerCache.Contains(actionPair))
return;