From: Alexey Bataev Date: Thu, 27 Apr 2017 14:46:26 +0000 (+0000) Subject: [OPENMP] Improve performance of the hasDSA() function, NFC. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b6ac2f9d15b1ef6b9e329f6d262487a8c6e93244;p=clang [OPENMP] Improve performance of the hasDSA() function, NFC. Remove some unneccesary code from the function after the fix for ASAN buildbots. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301547 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaOpenMP.cpp b/lib/Sema/SemaOpenMP.cpp index 9c6948b902..9a19023658 100644 --- a/lib/Sema/SemaOpenMP.cpp +++ b/lib/Sema/SemaOpenMP.cpp @@ -824,23 +824,18 @@ DSAStackTy::hasDSA(ValueDecl *D, if (isStackEmpty()) return {}; D = getCanonicalDecl(D); - auto StartI = std::next(Stack.back().first.rbegin()); + auto I = (FromParent && Stack.back().first.size() > 1) + ? std::next(Stack.back().first.rbegin()) + : Stack.back().first.rbegin(); auto EndI = Stack.back().first.rend(); - if (FromParent && StartI != EndI) - StartI = std::next(StartI); - if (StartI == EndI) - return {}; - auto I = std::prev(StartI); do { - ++I; - if (I == EndI) - break; + std::advance(I, 1); if (!DPred(I->Directive) && !isParallelOrTaskRegion(I->Directive)) continue; DSAVarData DVar = getDSA(I, D); if (CPred(DVar.CKind)) return DVar; - } while (I != EndI); + } while (std::distance(I, EndI) > 1); return {}; }