xref: /llvm-project/openmp/docs/remarks/OMP160.rst (revision dead50d4427cbdd5f41c02c5441270822f702730)
1.. _omp160:
2
3Removing parallel region with no side-effects. [OMP160]
4=======================================================
5
6This optimization remark indicates that a parallel region was deleted because it
7was not found to have any side-effects. This can occur if the region does not
8write any of its results to memory visible outside the region. This optimization
9is necessary because the barrier between sequential and parallel code typically
10prevents dead code elimination from completely removing the region. Otherwise
11there will still be overhead to fork and merge the threads with no work done.
12
13Example
14-------
15
16This optimization occurs whenever a parallel region was not found to have any
17side-effects. This can occur if the parallel region only reads memory or is
18simply empty.
19
20.. code-block:: c++
21
22  void foo() {
23  #pragma omp parallel
24    { }
25  #pragma omp parallel
26    { int x = 1; }
27  }
28  }
29
30.. code-block:: console
31
32   $ clang++ -fopenmp -O2 -Rpass=openmp-opt omp160.cpp
33   omp160.cpp:4:1: remark: Removing parallel region with no side-effects. [OMP160] [-Rpass=openmp-opt]
34   #pragma omp parallel
35   ^
36   delete.cpp:2:1: remark: Removing parallel region with no side-effects. [OMP160] [-Rpass=openmp-opt]
37   #pragma omp parallel
38   ^
39   ^
40
41Diagnostic Scope
42----------------
43
44OpenMP optimization remark.
45