Generic-mode kernel is executed with a customized state machine that requires a fallback. [OMP132]
==================================================================================================

.. _omp132:

This analysis remark indicates that a state machine rewrite occurred, but
could not be done fully because of unknown calls to functions that may contain
parallel regions. The state machine handles scheduling work between parallel
worker threads on the device when operating in generic-mode. If there are
unknown parallel regions it prevents the optimization from fully rewriting the
state machine.

Examples
--------

This will occur for any generic-mode kernel that may contain unknown parallel
regions. This is typically coupled with the :ref:`OMP133 <omp133>` remark.

.. code-block:: c++

   extern void setup();

   void foo() {
   #pragma omp target
   {
     setup();
     #pragma omp parallel
     {
       work();
     }
   }
   }

.. code-block:: console

   $ clang++ -fopenmp -fopenmp-targets=nvptx64 -O2 -Rpass-analysis=openmp-opt omp132.cpp
   omp133.cpp:4:1: remark: Generic-mode kernel is executed with a customized state machine
   that requires a fallback. [OMP132]
   #pragma omp target
   ^

Diagnostic Scope
----------------

OpenMP target offloading analysis remark.
