Commit 4ed3a4c1 authored by Joel E. Denny's avatar Joel E. Denny
Browse files

[Clacc][OpenACC] Document -fopenacc-ast-print/acc_on_device caveat

parent a59e21d4
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -452,8 +452,8 @@ OpenACC Runtime Library API and Preprocessor
      cannot be linked.  This implementation facilitates Clacc's
      source-to-source mode together with OpenACC's requirement that
      `acc_on_device` evaluate to a constant when its argument is a
      constant.  See the comments on `acc_on_device` in Clacc's
      `openacc.h` for related limitations for source-to-source mode.
      constant.  See the section "Source-to-Source Mode Limitations"
      below for caveats for source-to-source mode.
* Data and memory management routines supported on the host are:
    * `acc_malloc`, `acc_free`
        * OpenACC 3.1 is unclear about handling of a `bytes` argument
@@ -550,8 +550,10 @@ Source-to-Source Mode Limitations
  OpenMP at compile time:
    * `acc_on_device` is implemented in terms of OpenMP fully within
      Clacc's `openacc.h`.  However, support for an OpenMP 5.1
      extension, enum variants, is required for full support.  See the
      comments on `acc_on_device` in Clacc's `openacc.h` for details.
      extension, enum variants, is required for full support.
      Moreover, it can malfunction when enabling source-to-source mode
      using `-fopenacc-ast-print`.  See the comments on
      `acc_on_device` in Clacc's `openacc.h` for details.
    * Other routines are implemented as wrappers around the OpenMP
      Runtime Library Routines and require Clacc's OpenACC runtime
      library to be linked.  See the section "Linking" in
+6 −1
Original line number Diff line number Diff line
@@ -95,7 +95,8 @@ int acc_get_device_num(acc_device_t dev_type);
//     compile-time constant argument, it evaluates at compile time to a
//     constant."
//   - OpenMP 5.1 doesn't specify enum variants.  Currently, Clang supports this
//     extension as required here.
//     extension as required here except when using -fopenacc-ast-print, as
//     described below.
//   - If an OpenMP compiler doesn't support enum variants, the preprocessor
//     macro ACC2OMP_ENUM_VARIANTS_SUPPORTED should be set to 0 before including
//     this header.  Otherwise, the acc_on_device definition below may fail to
@@ -109,6 +110,10 @@ int acc_get_device_num(acc_device_t dev_type);
//     not permit acc_on_device calls in contexts where constant expressions are
//     required.  Even so, compilers might still be able to optimize
//     acc_on_device calls as constant expressions in other contexts.
// - When Clang's OpenACC source-to-source mode is enabled by
//   -fopenacc-ast-print instead of -fopenacc-print, acc_on_device currently
//   behaves as if always called on the host because Clang's AST printing
//   facility currently does not print OpenMP variants correctly.
//----------------------------------------------------------------------------

#ifndef ACC2OMP_ENUM_VARIANTS_SUPPORTED