[clang] Adding support for iterator in motion clauses. (PR #159112)

Alexey Bataev via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 14 06:47:50 PST 2025


================
@@ -8633,6 +8633,21 @@ class MappableExprsHandler {
       if (llvm::is_contained(C->getMotionModifiers(),
                              OMPC_MOTION_MODIFIER_present))
         Kind = Present;
+      if (llvm::is_contained(C->getMotionModifiers(),
+                             OMPC_MOTION_MODIFIER_iterator)) {
+        if (auto *IteratorExpr = dyn_cast<OMPIteratorExpr>(
+                C->getIteratorModifier()->IgnoreParenImpCasts())) {
+          const auto *VD =
+              llvm::dyn_cast<VarDecl>(IteratorExpr->getIteratorDecl(0));
+          CGF.EmitVarDecl(*VD);
+
+          OMPIteratorGeneratorScope IteratorScope(
+              CGF, cast_or_null<OMPIteratorExpr>(
+                       IteratorExpr ? IteratorExpr->IgnoreParenImpCasts()
+                                    : nullptr));
----------------
alexey-bataev wrote:

Why do you need this new scope? You do not use it, exit immediately after its is created

https://github.com/llvm/llvm-project/pull/159112


More information about the cfe-commits mailing list