]> granicus.if.org Git - clang/commitdiff
[OPENMP] Improve performance of the hasDSA() function, NFC.
authorAlexey Bataev <a.bataev@hotmail.com>
Thu, 27 Apr 2017 14:46:26 +0000 (14:46 +0000)
committerAlexey Bataev <a.bataev@hotmail.com>
Thu, 27 Apr 2017 14:46:26 +0000 (14:46 +0000)
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

lib/Sema/SemaOpenMP.cpp

index 9c6948b90269f2fae3ac152b36765a3eddd9c566..9a190236586954cea6c7dab94e88cb71caf08d4c 100644 (file)
@@ -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 {};
 }