Index: flang/test/Driver/bbc-cuda-macro.cuf =================================================================== --- /dev/null +++ flang/test/Driver/bbc-cuda-macro.cuf @@ -0,0 +1,11 @@ +! Test -fcuda option for bbc +! RUN: bbc -fcuda -o - %s | FileCheck %s + +! CHECK-NOT: Unknown command line argument + +program main +#if _CUDA + integer :: var = _CUDA +#endif + integer, device :: dvar +end program Index: flang/tools/bbc/bbc.cpp =================================================================== --- flang/tools/bbc/bbc.cpp +++ flang/tools/bbc/bbc.cpp @@ -190,6 +190,10 @@ llvm::cl::desc("Lower to high level FIR"), llvm::cl::init(false)); +static llvm::cl::opt enableCUDA("fcuda", + llvm::cl::desc("enable CUDA Fortran"), + llvm::cl::init(false)); + #define FLANG_EXCLUDE_CODEGEN #include "flang/Tools/CLOptions.inc" @@ -412,6 +416,11 @@ options.predefinitions.emplace_back("_OPENACC", "202211"); } + // enable parsing of CUDA Fortran + if (enableCUDA) { + options.features.Enable(Fortran::common::LanguageFeature::CUDA); + } + Fortran::common::IntrinsicTypeDefaultKinds defaultKinds; Fortran::parser::AllSources allSources; Fortran::parser::AllCookedSources allCookedSources(allSources);