mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-04 02:24:29 +00:00
[PerformanceTips] Provide context on the impact of assume(x)
Sean Silva suggested I add something here a while back. Sorry it's taken so long to get back to this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235826 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -144,7 +144,7 @@ Other things to consider
|
|||||||
#. When checking a value against a constant, emit the check using a consistent
|
#. When checking a value against a constant, emit the check using a consistent
|
||||||
comparison type. The GVN pass _will_ optimize redundant equalities even if
|
comparison type. The GVN pass _will_ optimize redundant equalities even if
|
||||||
the type of comparison is inverted, but GVN only runs late in the pipeline.
|
the type of comparison is inverted, but GVN only runs late in the pipeline.
|
||||||
As a result, you may miss the oppurtunity to run other important
|
As a result, you may miss the opportunity to run other important
|
||||||
optimizations. Improvements to EarlyCSE to remove this issue are tracked in
|
optimizations. Improvements to EarlyCSE to remove this issue are tracked in
|
||||||
Bug 23333.
|
Bug 23333.
|
||||||
|
|
||||||
@ -157,6 +157,13 @@ Other things to consider
|
|||||||
profitable to emit these directly in the language frontend. This item
|
profitable to emit these directly in the language frontend. This item
|
||||||
explicitly includes the use of the :ref:`overflow intrinsics <int_overflow>`.
|
explicitly includes the use of the :ref:`overflow intrinsics <int_overflow>`.
|
||||||
|
|
||||||
|
#. Avoid using the :ref:`assume intrinsic <int_assume>` until you've
|
||||||
|
established that a) there's no other way to express the given fact and b)
|
||||||
|
that fact is critical for optimization purposes. Assumes are a great
|
||||||
|
prototyping mechanism, but they can have negative effects on both compile
|
||||||
|
time and optimization effectiveness. The former is fixable with enough
|
||||||
|
effort, but the later is fairly fundamental to their designed purpose.
|
||||||
|
|
||||||
p.s. If you want to help improve this document, patches expanding any of the
|
p.s. If you want to help improve this document, patches expanding any of the
|
||||||
above items into standalone sections of their own with a more complete
|
above items into standalone sections of their own with a more complete
|
||||||
discussion would be very welcome.
|
discussion would be very welcome.
|
||||||
|
@ -10285,6 +10285,8 @@ Semantics:
|
|||||||
|
|
||||||
This intrinsic is lowered to the ``val``.
|
This intrinsic is lowered to the ``val``.
|
||||||
|
|
||||||
|
.. _int_assume:
|
||||||
|
|
||||||
'``llvm.assume``' Intrinsic
|
'``llvm.assume``' Intrinsic
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user