diff --git a/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp b/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp index 8bb2f83282b55..5c4d0a5159bc1 100644 --- a/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp +++ b/flang/lib/Lower/OpenMP/DataSharingProcessor.cpp @@ -332,6 +332,7 @@ void DataSharingProcessor::defaultPrivatize( if (!Fortran::semantics::IsProcedure(*sym) && !sym->GetUltimate().has() && !sym->GetUltimate().has() && + !Fortran::semantics::IsImpliedDoIndex(sym->GetUltimate()) && !symbolsInNestedRegions.contains(sym) && !symbolsInParentRegions.contains(sym) && !privatizedSymbols.contains(sym)) diff --git a/flang/test/Lower/OpenMP/default-clause-implied-do-fix.f90 b/flang/test/Lower/OpenMP/default-clause-implied-do-fix.f90 new file mode 100644 index 0000000000000..25579272a6e0b --- /dev/null +++ b/flang/test/Lower/OpenMP/default-clause-implied-do-fix.f90 @@ -0,0 +1,11 @@ +!RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - | FileCheck %s + +!CHECK: @_QPsb +subroutine sb(a) + integer :: a(:) +!CHECK: omp.parallel + !$omp parallel default(private) +!CHECK: hlfir.elemental + if (any(a/=(/(100,i=1,5)/))) print *, "OK" + !$omp end parallel +end subroutine