Introduced bm_test_and_clear().

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7824 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_thread.c b/exp-drd/drd_thread.c
index 55bf0fd..b8eb755 100644
--- a/exp-drd/drd_thread.c
+++ b/exp-drd/drd_thread.c
@@ -670,10 +670,13 @@
     for (p = s_threadinfo[i].first; p; p = p->next)
     {
       if (other_user == DRD_INVALID_THREADID
-          && i != s_drd_running_tid
-          && bm_has_any_access(p->bm, a1, a2))
+          && i != s_drd_running_tid)
       {
-        other_user = i;
+        if (UNLIKELY(bm_test_and_clear(p->bm, a1, a2)))
+        {
+          other_user = i;
+        }
+        continue;
       }
       bm_clear(p->bm, a1, a2);
     }