Mercurial > hg > CbC > CbC_llvm
annotate openmp/docs/remarks/OMP170.rst @ 266:00f31e85ec16 default tip
Added tag current for changeset 31d058e83c98
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 14 Oct 2023 10:13:55 +0900 |
parents | c4bab56944e8 |
children |
rev | line source |
---|---|
232
70dce7da266c
llvm original Jul 20 16:41:34 2021
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
223
diff
changeset
|
1 .. _omp170: |
70dce7da266c
llvm original Jul 20 16:41:34 2021
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
223
diff
changeset
|
2 |
223 | 3 OpenMP runtime call <call> deduplicated. [OMP170] |
4 ==================================================================== | |
5 | |
6 This optimization remark indicates that a call to an OpenMP runtime call was | |
7 replaced with the result of an existing one. This occurs when the compiler knows | |
8 that the result of a runtime call is immutable. Removing duplicate calls is done | |
9 by replacing all calls to that function with the result of the first call. This | |
10 cannot be done automatically by the compiler because the implementations of the | |
11 OpenMP runtime calls live in a separate library the compiler cannot see. | |
12 | |
13 Example | |
14 ------- | |
15 | |
16 This optimization will trigger for known OpenMP runtime calls whose return value | |
17 will not change. | |
18 | |
19 .. code-block:: c++ | |
20 | |
21 void foo(int N) { | |
22 double *A = malloc(N * omp_get_thread_limit()); | |
23 double *B = malloc(N * omp_get_thread_limit()); | |
236 | 24 |
223 | 25 #pragma omp parallel |
26 work(&A[omp_get_thread_num() * N]); | |
27 #pragma omp parallel | |
28 work(&B[omp_get_thread_num() * N]); | |
29 } | |
30 | |
31 .. code-block:: console | |
32 | |
236 | 33 $ clang -fopenmp -O2 -Rpass=openmp-opt omp170.c |
223 | 34 ompi170.c:2:26: remark: OpenMP runtime call omp_get_thread_limit deduplicated. [OMP170] |
35 double *A = malloc(N * omp_get_thread_limit()); | |
36 ^ | |
37 | |
38 Diagnostic Scope | |
39 ---------------- | |
40 | |
41 OpenMP optimization remark. |