[rtsan] Remove mkfifoat interceptor (#116997)
[llvm-project.git] / openmp / docs / remarks / OptimizationRemarks.rst
blob2c683a4376c491dec34e804058560d9194b89c8a
1 OpenMP Optimization Remarks
2 ===========================
4 The :doc:`OpenMP-Aware optimization pass </optimizations/OpenMPOpt>` is able to
5 generate compiler remarks for performed and missed optimisations. To emit them,
6 pass these options to the Clang invocation: ``-Rpass=openmp-opt
7 -Rpass-analysis=openmp-opt -Rpass-missed=openmp-opt``.  For more information and
8 features of the remark system, consult the clang documentation:
10 + `Clang options to emit optimization reports <https://clang.llvm.org/docs/UsersManual.html#options-to-emit-optimization-reports>`_
11 + `Clang diagnostic and remark flags <https://clang.llvm.org/docs/ClangCommandLineReference.html#diagnostic-flags>`_
12 + The `-foptimization-record-file flag
13   <https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-foptimization-record-file>`_
14   and the `-fsave-optimization-record flag
15   <https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang1-fsave-optimization-record>`_
18 OpenMP Remarks
19 --------------
21 .. toctree::
22    :hidden:
23    :maxdepth: 1
25    OMP100
26    OMP101
27    OMP102
28    OMP110
29    OMP111
30    OMP112
31    OMP113
32    OMP120
33    OMP121
34    OMP130
35    OMP131
36    OMP132
37    OMP133
38    OMP140
39    OMP150
40    OMP160
41    OMP170
42    OMP180
43    OMP190
45 .. list-table::
46    :widths: 15 15 70
47    :header-rows: 1
49    * - Diagnostics Number
50      - Diagnostics Kind
51      - Diagnostics Description
52    * - :ref:`OMP100 <omp100>`
53      - Analysis
54      - Potentially unknown OpenMP target region caller.
55    * - :ref:`OMP101 <omp101>`
56      - Analysis
57      - Parallel region is used in unknown / unexpected ways. Will not attempt to
58        rewrite the state machine.
59    * - :ref:`OMP102 <omp102>`
60      - Analysis
61      - Parallel region is not called from a unique kernel. Will not attempt to
62        rewrite the state machine.
63    * - :ref:`OMP110 <omp110>`
64      - Optimization
65      - Moving globalized variable to the stack.
66    * - :ref:`OMP111 <omp111>`
67      - Optimization
68      - Replaced globalized variable with X bytes of shared memory.
69    * - :ref:`OMP112 <omp112>`
70      - Missed
71      - Found thread data sharing on the GPU. Expect degraded performance due to
72        data globalization.
73    * - :ref:`OMP113 <omp113>`
74      - Missed
75      - Could not move globalized variable to the stack. Variable is potentially
76        captured in call. Mark parameter as `__attribute__((noescape))` to
77        override.
78    * - :ref:`OMP120 <omp120>`
79      - Optimization
80      - Transformed generic-mode kernel to SPMD-mode.
81    * - :ref:`OMP121 <omp121>`
82      - Analysis
83      - Value has potential side effects preventing SPMD-mode execution. Add
84        `[[omp::assume(\"ompx_spmd_amenable\")]]` to the called function
85        to override.
86    * - :ref:`OMP130 <omp130>`
87      - Optimization
88      - Removing unused state machine from generic-mode kernel.
89    * - :ref:`OMP131 <omp131>`
90      - Optimization
91      - Rewriting generic-mode kernel with a customized state machine.
92    * - :ref:`OMP132 <omp132>`
93      - Analysis
94      - Generic-mode kernel is executed with a customized state machine that
95        requires a fallback.
96    * - :ref:`OMP133 <omp133>`
97      - Analysis
98      - Call may contain unknown parallel regions. Use
99        `[[omp::assume("omp_no_parallelism")]]` to override.
100    * - :ref:`OMP140 <omp140>`
101      - Analysis
102      - Could not internalize function. Some optimizations may not be possible.
103    * - :ref:`OMP150 <omp150>`
104      - Optimization
105      - Parallel region merged with parallel region at <location>.
106    * - :ref:`OMP160 <omp160>`
107      - Optimization
108      - Removing parallel region with no side-effects.
109    * - :ref:`OMP170 <omp170>`
110      - Optimization
111      - OpenMP runtime call <call> deduplicated.
112    * - :ref:`OMP180 <omp180>`
113      - Optimization
114      - Replacing OpenMP runtime call <call> with <value>.
115    * - :ref:`OMP190 <omp190>`
116      - Optimization
117      - Redundant barrier eliminated. (device only)