xref: /llvm-project/openmp/docs/remarks/OMP130.rst (revision 0c660256eb41fb0ba44277a32f39d2a028f797f2)
1.. _omp130:
2
3Removing unused state machine from generic-mode kernel. [OMP130]
4================================================================
5
6This optimization remark indicates that an unused state machine was removed from
7a target region. This occurs when there are no parallel regions inside of a
8target construct. Normally, a state machine is required to schedule the threads
9inside of a parallel region. If there are no parallel regions, the state machine
10is unnecessary because there is only a single thread active at any time.
11
12Examples
13--------
14
15This optimization should occur on any target region that does not contain any
16parallel work.
17
18.. code-block:: c++
19
20   void copy(int N, double *X, double *Y) {
21   #pragma omp target teams distribute map(tofrom: X[0:N]) map(tofrom: Y[0:N])
22     for (int i = 0; i < N; ++i)
23       Y[i] = X[i];
24   }
25
26.. code-block:: console
27
28   $ clang++ -fopenmp -fopenmp-targets=nvptx64 -O2 -Rpass=openmp-opt omp130.cpp
29   omp130.cpp:2:1: remark: Removing unused state machine from generic-mode kernel. [OMP130]
30   #pragma omp target teams distribute map(tofrom: X[0:N]) map(tofrom: Y[0:N])
31   ^
32
33Diagnostic Scope
34----------------
35
36OpenMP target offloading optimization remark.
37