.. _omp160:

Removing parallel region with no side-effects. [OMP160]
=======================================================

This optimization remark indicates that a parallel region was deleted because it
was not found to have any side-effects. This can occur if the region does not
write any of its results to memory visible outside the region. This optimization
is necessary because the barrier between sequential and parallel code typically
prevents dead code elimination from completely removing the region. Otherwise
there will still be overhead to fork and merge the threads with no work done.

Example
-------

This optimization occurs whenever a parallel region was not found to have any
side-effects. This can occur if the parallel region only reads memory or is
simply empty.

.. code-block:: c++

  void foo() {
  #pragma omp parallel
    { }
  #pragma omp parallel
    { int x = 1; }
  }
  }

.. code-block:: console

   $ clang++ -fopenmp -O2 -Rpass=openmp-opt omp160.cpp
   omp160.cpp:4:1: remark: Removing parallel region with no side-effects. [OMP160] [-Rpass=openmp-opt]
   #pragma omp parallel
   ^
   delete.cpp:2:1: remark: Removing parallel region with no side-effects. [OMP160] [-Rpass=openmp-opt]
   #pragma omp parallel
   ^
   ^

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

OpenMP optimization remark.
