[OPENMP] Fix handling of implicit mapping of array sections.

llvm-svn: 314220
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index 735e827..4d04f5a 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -1972,9 +1972,8 @@
                   OMPClauseMappableExprCommon::MappableExprComponentListRef
                       StackComponents,
                   OpenMPClauseKind) {
-                if (CurComponents.size() < StackComponents.size())
-                  return false;
                 auto CCI = CurComponents.rbegin();
+                auto CCE = CurComponents.rend();
                 for (const auto &SC : llvm::reverse(StackComponents)) {
                   // Do both expressions have the same kind?
                   if (CCI->getAssociatedExpression()->getStmtClass() !=
@@ -1992,6 +1991,8 @@
                   if (SCD != CCD)
                     return false;
                   std::advance(CCI, 1);
+                  if (CCI == CCE)
+                    break;
                 }
                 return true;
               })) {