.. _omp170:

OpenMP runtime call <call> deduplicated. [OMP170]
====================================================================

This optimization remark indicates that a call to an OpenMP runtime call was
replaced with the result of an existing one. This occurs when the compiler knows
that the result of a runtime call is immutable. Removing duplicate calls is done
by replacing all calls to that function with the result of the first call. This
cannot be done automatically by the compiler because the implementations of the
OpenMP runtime calls live in a separate library the compiler cannot see.

Example
-------

This optimization will trigger for known OpenMP runtime calls whose return value
will not change.

.. code-block:: c++

  void foo(int N) {
    double *A = malloc(N * omp_get_thread_limit());
    double *B = malloc(N * omp_get_thread_limit());

  #pragma omp parallel
    work(&A[omp_get_thread_num() * N]);
  #pragma omp parallel
    work(&B[omp_get_thread_num() * N]);
  }

.. code-block:: console

  $ clang -fopenmp -O2 -Rpass=openmp-opt omp170.c
  ompi170.c:2:26: remark: OpenMP runtime call omp_get_thread_limit deduplicated. [OMP170]
  double *A = malloc(N * omp_get_thread_limit());
                         ^

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

OpenMP optimization remark.
