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