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;
+ }
}
}
}