[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