diff --git a/flang/test/Lower/OpenACC/pre-fir-tree01.f90 b/flang/test/Lower/OpenACC/pre-fir-tree01.f90 new file mode 100644 index 0000000000000..b1b4205856dbc --- /dev/null +++ b/flang/test/Lower/OpenACC/pre-fir-tree01.f90 @@ -0,0 +1,18 @@ +! RUN: bbc -fopenacc -pft-test -o %t %s | FileCheck %s +! RUN: %flang_fc1 -fopenacc -fdebug-dump-pft -o %t %s | FileCheck %s + +! Test structure of the Pre-FIR tree with OpenACC + +subroutine sub1(a, b, n) + real :: a(:), b(:) + integer :: n, i + !$acc parallel loop present(a, b) + do i = 1, n + b(i) = exp(a(i)) + end do +end subroutine + +! CHECK-LABEL: Subroutine sub1 +! CHECK: <> +! CHECK: <> +! CHECK: <> diff --git a/flang/tools/bbc/bbc.cpp b/flang/tools/bbc/bbc.cpp index a4a77855c2796..81ab7895c4a4a 100644 --- a/flang/tools/bbc/bbc.cpp +++ b/flang/tools/bbc/bbc.cpp @@ -84,6 +84,10 @@ static llvm::cl::opt enableOpenMP("fopenmp", llvm::cl::desc("enable openmp"), llvm::cl::init(false)); +static llvm::cl::opt enableOpenACC("fopenacc", + llvm::cl::desc("enable openacc"), + llvm::cl::init(false)); + #define FLANG_EXCLUDE_CODEGEN #include "flang/Tools/CLOptions.inc" @@ -251,6 +255,12 @@ int main(int argc, char **argv) { options.predefinitions.emplace_back("_OPENMP", "201511"); } + // enable parsing of OpenACC + if (enableOpenACC) { + options.features.Enable(Fortran::common::LanguageFeature::OpenACC); + options.predefinitions.emplace_back("_OPENACC", "201911"); + } + Fortran::common::IntrinsicTypeDefaultKinds defaultKinds; Fortran::parser::AllSources allSources; Fortran::parser::AllCookedSources allCookedSources(allSources);