Skip to content

Commit 7f90479

Browse files
authored
[flang][OpenMP] Don't abort when default is used on an invalid directive (#107586)
The previous assert was not considering programs with semantic errors. Fixes #107495 Fixes #93437
1 parent 95831f0 commit 7f90479

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

flang/lib/Semantics/resolve-directives.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2152,7 +2152,9 @@ void OmpAttributeVisitor::CreateImplicitSymbols(
21522152
dirContext.defaultDSA == Symbol::Flag::OmpShared) {
21532153
// 1) default
21542154
// Allowed only with parallel, teams and task generating constructs.
2155-
assert(parallelDir || taskGenDir || teamsDir);
2155+
if (!parallelDir && !taskGenDir && !teamsDir) {
2156+
return;
2157+
}
21562158
if (dirContext.defaultDSA != Symbol::Flag::OmpShared)
21572159
makePrivateSymbol(dirContext.defaultDSA);
21582160
else

flang/test/Semantics/OpenMP/default.f90

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,13 @@ program omp_default
3131
end do
3232
!$omp end teams
3333

34+
!$omp parallel
35+
!ERROR: DEFAULT clause is not allowed on the DO directive
36+
!$omp do default(private)
37+
do i = 1, 10
38+
k = i
39+
end do
40+
!$omp end do
41+
!$omp end parallel
42+
3443
end program omp_default

0 commit comments

Comments
 (0)