[flang-commits] [flang] 2dc0fa1 - [Flang] Nested directives are comments (#166348)
via flang-commits
flang-commits at lists.llvm.org
Tue Nov 4 08:43:22 PST 2025
Author: Michael Kruse
Date: 2025-11-04T17:43:17+01:00
New Revision: 2dc0fa1000d651c902edad7d206785de7efc75f3
URL: https://github.com/llvm/llvm-project/commit/2dc0fa1000d651c902edad7d206785de7efc75f3
DIFF: https://github.com/llvm/llvm-project/commit/2dc0fa1000d651c902edad7d206785de7efc75f3.diff
LOG: [Flang] Nested directives are comments (#166348)
Directives cannot be nested. A directive sentinel that appears within
another directive should be ignored, and instead fall back to be treated
as a line comment.
Fixes: #165874
Added:
flang/test/Parser/OpenMP/nested-directive.f90
Modified:
flang/lib/Parser/prescan.cpp
Removed:
################################################################################
diff --git a/flang/lib/Parser/prescan.cpp b/flang/lib/Parser/prescan.cpp
index efce8fc3d2e35..8cccd84f9fa19 100644
--- a/flang/lib/Parser/prescan.cpp
+++ b/flang/lib/Parser/prescan.cpp
@@ -557,7 +557,7 @@ bool Prescanner::MustSkipToEndOfLine() const {
return true; // skip over ignored columns in right margin (73:80)
} else if (*at_ == '!' && !inCharLiteral_ &&
(!inFixedForm_ || tabInCurrentLine_ || column_ != 6)) {
- return !IsCompilerDirectiveSentinel(at_ + 1);
+ return InCompilerDirective() || !IsCompilerDirectiveSentinel(at_ + 1);
} else {
return false;
}
diff --git a/flang/test/Parser/OpenMP/nested-directive.f90 b/flang/test/Parser/OpenMP/nested-directive.f90
new file mode 100644
index 0000000000000..2a10bbe666bb8
--- /dev/null
+++ b/flang/test/Parser/OpenMP/nested-directive.f90
@@ -0,0 +1,7 @@
+! RUN: %flang_fc1 -fdebug-unparse -fopenmp %s 2>&1 | FileCheck %s --match-full-lines
+
+subroutine func
+ implicit none
+! CHECK: !$OMP NOTHING
+ !$omp nothing !$omp Cannot nest directives inside directives; must be interpreted as a comment
+end subroutine func
More information about the flang-commits
mailing list