[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:
Philip Reames 2015-04-26 22:23:12 +00:00
parent 77456809c4
commit fb3da5cce1
2 changed files with 10 additions and 1 deletions

View File

@ -144,7 +144,7 @@ Other things to consider
#. When checking a value against a constant, emit the check using a consistent
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.
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
Bug 23333.
@ -157,6 +157,13 @@ Other things to consider
profitable to emit these directly in the language frontend. This item
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
above items into standalone sections of their own with a more complete
discussion would be very welcome.

View File

@ -10285,6 +10285,8 @@ Semantics:
This intrinsic is lowered to the ``val``.
.. _int_assume:
'``llvm.assume``' Intrinsic
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^