From 2209d0061afe47ee786eafccc7aedc2e29be5748 Mon Sep 17 00:00:00 2001
From: Brian Demsky <bdemsky@uci.edu>
Date: Fri, 6 Jul 2012 23:56:24 -0700
Subject: [PATCH] changes

---
 datarace.cc | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/datarace.cc b/datarace.cc
index 1040a3b..5856e77 100644
--- a/datarace.cc
+++ b/datarace.cc
@@ -76,6 +76,9 @@ void fullRaceCheckWrite(thread_id_t thread, uint64_t * shadow, ClockVector *curr
 		modelclock_t readClock = record->readClock[i];
 		thread_id_t readThread = record->thread[i];
 
+		/* Note that readClock can't actuall be zero here, so it could be
+			 optimized. */
+
 		if (clock_may_race(currClock, thread, readClock, readThread)) {
 			/* We have a datarace */
 			reportDataRace();
@@ -161,9 +164,13 @@ void fullRaceCheckRead(thread_id_t thread, uint64_t * shadow, ClockVector *currC
 		modelclock_t readClock = record->readClock[i];
 		thread_id_t readThread = record->thread[i];
 
-		/* TODO: should this have different logic than all the other
-		 * 'clock_may_race' calls? */
-		if (readThread != thread && currClock->getClock(readThread) <= readClock) {
+		/*  Note that is not really a datarace check as reads cannott
+				actually race.  It is just determining that this read subsumes
+				another in the sense that either this read races or neither
+				read races. Note that readClock can't actually be zero, so it
+				could be optimized.  */
+
+		if (clock_may_race(currClock, thread, readClock, readThread) {
 			/* Still need this read in vector */
 			if (copytoindex!=i) {
 				record->readClock[copytoindex]=record->readClock[i];
-- 
2.34.1