| (omp150)= | |
| # Parallel region merged with parallel region at \<location>. [OMP150] | |
| This optimization remark indicates that a parallel region was merged with others | |
| into a single parallel region. Parallel region merging fuses consecutive | |
| parallel regions to reduce the team activation overhead of forking and increases | |
| the scope of possible OpenMP-specific optimizations within merged parallel | |
| regions. This optimization can also guard sequential code between two parallel | |
| regions if applicable. | |
| ## Example | |
| This optimization should apply to any compatible and consecutive parallel | |
| regions. In this case the sequential region between the parallel regions will be | |
| guarded so it is only executed by a single thread in the new merged region. | |
| ```c++ | |
| void foo() { | |
| #pragma omp parallel | |
| parallel_work(); | |
| sequential_work(); | |
| #pragma omp parallel | |
| parallel_work(); | |
| } | |
| ``` | |
| ```console | |
| $ clang++ -fopenmp -O2 -Rpass=openmp-opt -mllvm -openmp-opt-enable-merging omp150.cpp | |
| omp150.cpp:2:1: remark: Parallel region merged with parallel region at merge.cpp:7:1. [OMP150] | |
| #pragma omp parallel | |
| ^ | |
| ``` | |
| ## Diagnostic Scope | |
| OpenMP optimization remark. |