diff --git a/lib/Analysis/ThreadSafety.cpp b/lib/Analysis/ThreadSafety.cpp
index d016c3e..06ae32c 100644
--- a/lib/Analysis/ThreadSafety.cpp
+++ b/lib/Analysis/ThreadSafety.cpp
@@ -821,17 +821,19 @@
   }
 
   LockData* findLock(FactManager& FM, const SExpr& M) const {
-    for (const_iterator I=begin(), E=end(); I != E; ++I) {
-      const SExpr& E = FM[*I].MutID;
-      if (E.matches(M)) return &FM[*I].LDat;
+    for (const_iterator I = begin(), E = end(); I != E; ++I) {
+      const SExpr& Exp = FM[*I].MutID;
+      if (Exp.matches(M))
+        return &FM[*I].LDat;
     }
     return 0;
   }
 
   LockData* findLockUniv(FactManager& FM, const SExpr& M) const {
-    for (const_iterator I=begin(), E=end(); I != E; ++I) {
-      const SExpr& E = FM[*I].MutID;
-      if (E.matches(M) || E.isUniversal()) return &FM[*I].LDat;
+    for (const_iterator I = begin(), E = end(); I != E; ++I) {
+      const SExpr& Exp = FM[*I].MutID;
+      if (Exp.matches(M) || Exp.isUniversal())
+        return &FM[*I].LDat;
     }
     return 0;
   }
