| .. _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. |