diff --git a/lib/Analysis/ThreadSafety.cpp b/lib/Analysis/ThreadSafety.cpp
index 469e79be7242f494e9a6c3d8167c2bb04bc0e8a7..f2746cba8cd30b322341b03eeda39da8a85f5634 100644
--- a/lib/Analysis/ThreadSafety.cpp
+++ b/lib/Analysis/ThreadSafety.cpp
@@ -1337,10 +1337,10 @@ void BuildLockset::checkAccess(const Expr *Exp, AccessKind AK) {
   if (Analyzer->Handler.issueBetaWarnings()) {
     // Local variables of reference type cannot be re-assigned;
     // map them to their initializer.
-    while (auto *DRE = dyn_cast<DeclRefExpr>(Exp)) {
-      auto *VD = dyn_cast<VarDecl>(DRE->getDecl()->getCanonicalDecl());
+    while (const auto *DRE = dyn_cast<DeclRefExpr>(Exp)) {
+      const auto *VD = dyn_cast<VarDecl>(DRE->getDecl()->getCanonicalDecl());
       if (VD && VD->isLocalVarDecl() && VD->getType()->isReferenceType()) {
-        if (auto *E = VD->getInit()) {
+        if (const auto *E = VD->getInit()) {
           Exp = E;
           continue;
         }