diff --git a/llvm/lib/Analysis/TSanMPIOptimizer.cpp b/llvm/lib/Analysis/TSanMPIOptimizer.cpp
index b0fd897f3ad7a4993bb953eebbde5dbae33ac482..1fa6d6a56318d8bb3b5134e4d3cc73c8fb3cfecc 100644
--- a/llvm/lib/Analysis/TSanMPIOptimizer.cpp
+++ b/llvm/lib/Analysis/TSanMPIOptimizer.cpp
@@ -149,10 +149,12 @@ int TSanMPIOptimizerAnalysis::recurseGenerateWhitelist(SharedResource V, Recurse
                     addUnique(NewSet, NewVal);
                 } else {
                     if (!U.getUser()) continue;
-                    if (AA.alias(U.getUser(), WorkingSet[i].V.V) != AliasResult::NoAlias) {
-                        RecurseValue NewVal = CREATE_RECVAL(U.getUser());
-                        addUnique(NewSet, NewVal);
-                        break;
+                    for (SharedResource ShRes : SharedResources) { // Finally, check if some Value may be aliased to some ShRes, and, if it is, Mark and recurse
+                        if (AA.alias(U.getUser(),ShRes.V) != AliasResult::NoAlias) {
+                            RecurseValue NewVal = CREATE_RECVAL(U.getUser());
+                            addUnique(NewSet, NewVal);
+                            break;
+                        }
                     }
                 }
             }