[flang-commits] [flang] 6048c2f - [flang][openacc] Suppport !@acc compiler sentinel (#161706)
via flang-commits
flang-commits at lists.llvm.org
Thu Oct 2 13:00:53 PDT 2025
Author: Valentin Clement (バレンタイン クレメン)
Date: 2025-10-02T10:00:47-10:00
New Revision: 6048c2f0c752d6f9963bc47a10f208c62882c8d6
URL: https://github.com/llvm/llvm-project/commit/6048c2f0c752d6f9963bc47a10f208c62882c8d6
DIFF: https://github.com/llvm/llvm-project/commit/6048c2f0c752d6f9963bc47a10f208c62882c8d6.diff
LOG: [flang][openacc] Suppport !@acc compiler sentinel (#161706)
Added:
flang/test/Semantics/OpenACC/acc-sentinel.f90
Modified:
flang/lib/Parser/parsing.cpp
flang/lib/Parser/prescan.cpp
Removed:
################################################################################
diff --git a/flang/lib/Parser/parsing.cpp b/flang/lib/Parser/parsing.cpp
index 8a8c6ef673a8c..2df6881146af8 100644
--- a/flang/lib/Parser/parsing.cpp
+++ b/flang/lib/Parser/parsing.cpp
@@ -85,6 +85,7 @@ const SourceFile *Parsing::Prescan(const std::string &path, Options options) {
if (options.features.IsEnabled(LanguageFeature::OpenACC) ||
(options.prescanAndReformat && noneOfTheAbove)) {
prescanner.AddCompilerDirectiveSentinel("$acc");
+ prescanner.AddCompilerDirectiveSentinel("@acc");
}
if (options.features.IsEnabled(LanguageFeature::OpenMP) ||
(options.prescanAndReformat && noneOfTheAbove)) {
diff --git a/flang/lib/Parser/prescan.cpp b/flang/lib/Parser/prescan.cpp
index 865c149380d85..66e5b2cbd5c7f 100644
--- a/flang/lib/Parser/prescan.cpp
+++ b/flang/lib/Parser/prescan.cpp
@@ -147,6 +147,11 @@ void Prescanner::Statement() {
directiveSentinel_[4] == '\0') {
// CUDA conditional compilation line.
condOffset = 5;
+ } else if (directiveSentinel_[0] == '@' && directiveSentinel_[1] == 'a' &&
+ directiveSentinel_[2] == 'c' && directiveSentinel_[3] == 'c' &&
+ directiveSentinel_[4] == '\0') {
+ // OpenACC conditional compilation line.
+ condOffset = 5;
}
if (condOffset && !preprocessingOnly_) {
at_ += *condOffset, column_ += *condOffset;
diff --git a/flang/test/Semantics/OpenACC/acc-sentinel.f90 b/flang/test/Semantics/OpenACC/acc-sentinel.f90
new file mode 100644
index 0000000000000..d34d97e8b1b5d
--- /dev/null
+++ b/flang/test/Semantics/OpenACC/acc-sentinel.f90
@@ -0,0 +1,14 @@
+! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenacc
+
+subroutine test_sentinel()
+! Test for error since we currently do not have an OpenACC module upstream.
+!ERROR: Cannot parse module file for module 'openacc': Source file 'openacc.mod' was not found
+ !@acc use openacc
+ integer :: i
+
+ !$acc parallel loop
+ do i = 1, 10
+ end do
+ !$acc end parallel
+
+end subroutine
More information about the flang-commits
mailing list