forked from OSchip/llvm-project
[Docs] [llvm-mca] Point out a caveat for using llvm-mca markers in source code.
Summary: See: https://bugs.llvm.org/show_bug.cgi?id=42173 Reviewers: andreadb, mattd, RKSimon, spatel Reviewed By: andreadb Subscribers: tschuett, gbedwell, llvm-commits, andreadb Tags: #llvm Patch by Max Marrone (maxpm)! Thanks! Differential Revision: https://reviews.llvm.org/D63040 llvm-svn: 362979
This commit is contained in:
parent
c920c37361
commit
41bf444e61
|
@ -241,8 +241,8 @@ Example of overlapping regions:
|
|||
Note that multiple anonymous regions cannot overlap. Also, overlapping regions
|
||||
cannot have the same name.
|
||||
|
||||
Inline assembly directives may be used from source code to annotate the
|
||||
assembly text:
|
||||
There is no support for marking regions from high-level source code, like C or
|
||||
C++. As a workaround, inline assembly directives may be used:
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
|
@ -254,6 +254,15 @@ assembly text:
|
|||
return a;
|
||||
}
|
||||
|
||||
However, this interferes with optimizations like loop vectorization and may have
|
||||
an impact on the code generated. This is because the ``__asm`` statements are
|
||||
seen as real code having important side effects, which limits how the code
|
||||
around them can be transformed. If users want to make use of inline assembly
|
||||
to emit markers, then the recommendation is to always verify that the output
|
||||
assembly is equivalent to the assembly generated in the absence of markers.
|
||||
The `Clang options to emit optimization reports <https://clang.llvm.org/docs/UsersManual.html#options-to-emit-optimization-reports>`_
|
||||
can also help in detecting missed optimizations.
|
||||
|
||||
HOW LLVM-MCA WORKS
|
||||
------------------
|
||||
|
||||
|
|
Loading…
Reference in New Issue