[flang][openacc] Suppport !@acc compiler sentinel (#161706)

This commit is contained in:
Valentin Clement (バレンタイン クレメン)
2025-10-02 10:00:47 -10:00
committed by GitHub
parent 11faf88d8f
commit 6048c2f0c7
3 changed files with 20 additions and 0 deletions

View File

@@ -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)) {

View File

@@ -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;

View File

@@ -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