[flang-commits] [flang] 4c5ff23 - [Flang][OpenMP] Avoid division-by-zero when checking array section stride (#184726)

via flang-commits flang-commits at lists.llvm.org
Thu Mar 5 08:48:44 PST 2026


Author: Chi-Chun, Chen
Date: 2026-03-05T10:48:40-06:00
New Revision: 4c5ff239ea40145ab860e299f89c2718e39b5ee9

URL: https://github.com/llvm/llvm-project/commit/4c5ff239ea40145ab860e299f89c2718e39b5ee9
DIFF: https://github.com/llvm/llvm-project/commit/4c5ff239ea40145ab860e299f89c2718e39b5ee9.diff

LOG: [Flang][OpenMP] Avoid division-by-zero when checking array section stride (#184726)

Added: 
    

Modified: 
    flang/lib/Semantics/check-omp-structure.cpp
    flang/test/Semantics/OpenMP/depend01.f90
    flang/test/Semantics/OpenMP/reduction05.f90

Removed: 
    


################################################################################
diff  --git a/flang/lib/Semantics/check-omp-structure.cpp b/flang/lib/Semantics/check-omp-structure.cpp
index 89f1cdb5213cb..9bdd3d1dbc231 100644
--- a/flang/lib/Semantics/check-omp-structure.cpp
+++ b/flang/lib/Semantics/check-omp-structure.cpp
@@ -5150,6 +5150,9 @@ void OmpStructureChecker::CheckArraySection(
             if (lval && uval) {
               int64_t sectionLen = *uval - *lval;
               if (strideVal) {
+                if (*strideVal == 0) {
+                  continue;
+                }
                 sectionLen = sectionLen / *strideVal;
               }
 

diff  --git a/flang/test/Semantics/OpenMP/depend01.f90 b/flang/test/Semantics/OpenMP/depend01.f90
index 6c6cc16bcc5f9..2b23cc1c4f68c 100644
--- a/flang/test/Semantics/OpenMP/depend01.f90
+++ b/flang/test/Semantics/OpenMP/depend01.f90
@@ -29,6 +29,12 @@ program omp_depend
   print *, a(5:10), b
   !$omp end task
 
+  !ERROR: 'a' in DEPEND clause must have a positive stride
+  !ERROR: Stride of triplet must not be zero
+  !$omp task shared(a) depend(in: a(1:10:0))
+  print *, a(1:10)
+  !$omp end task
+
   !$omp end single
   !$omp end parallel
 

diff  --git a/flang/test/Semantics/OpenMP/reduction05.f90 b/flang/test/Semantics/OpenMP/reduction05.f90
index aa115ed7454ba..f9edcaf07623b 100644
--- a/flang/test/Semantics/OpenMP/reduction05.f90
+++ b/flang/test/Semantics/OpenMP/reduction05.f90
@@ -35,4 +35,12 @@ program omp_reduction
     k = k + 1
   end do
   !$omp end parallel do
+
+  !ERROR: 'a' in REDUCTION clause must have a positive stride
+  !ERROR: Stride of triplet must not be zero
+  !$omp parallel do reduction(+:a(1:10:0))
+  do i = 1, 10
+    k = k + 1
+  end do
+  !$omp end parallel do
 end program omp_reduction


        


More information about the flang-commits mailing list