[clang] [OpenMP] Fix crash with extern reference and diagnose loop variable reuse in collapsed loops. (PR #203252)

Zahira Ammarguellat via cfe-commits cfe-commits at lists.llvm.org
Sun Jun 14 07:53:39 PDT 2026


================
@@ -10047,14 +10095,24 @@ checkOpenMPLoop(OpenMPDirectiveKind DKind, Expr *CollapseLoopCountExpr,
           SupportsNonPerfectlyNested, NumLoops,
           [DKind, &SemaRef, &DSA, NumLoops, NestedLoopCount,
            CollapseLoopCountExpr, OrderedLoopCountExpr, &VarsWithImplicitDSA,
-           &IterSpaces, &Captures,
-           &CollapsedLoopVarDecls](unsigned Cnt, Stmt *CurStmt) {
+           &IterSpaces, &Captures, &CollapsedLoopVarDecls,
+           &CollapsedLoopInductionVars](unsigned Cnt, Stmt *CurStmt) {
             if (checkOpenMPIterationSpace(
                     DKind, CurStmt, SemaRef, DSA, Cnt, NestedLoopCount,
                     NumLoops, CollapseLoopCountExpr, OrderedLoopCountExpr,
                     VarsWithImplicitDSA, IterSpaces, Captures,
-                    CollapsedLoopVarDecls))
+                    CollapsedLoopVarDecls, CollapsedLoopInductionVars))
               return true;
+            // Add the current loop's induction variable to the set so nested
+            // loops can check against it.
+            if (Cnt < NestedLoopCount && IterSpaces[Cnt].CounterVar) {
+              if (auto *DRE =
+                      dyn_cast<DeclRefExpr>(IterSpaces[Cnt].CounterVar)) {
----------------
zahiraam wrote:

Same as above.

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


More information about the cfe-commits mailing list