[PerformanceTips] Provide context on the impact of assume(x)
authorPhilip Reames <listmail@philipreames.com>
Sun, 26 Apr 2015 22:23:12 +0000 (22:23 +0000)
committerPhilip Reames <listmail@philipreames.com>
Sun, 26 Apr 2015 22:23:12 +0000 (22:23 +0000)
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

docs/Frontend/PerformanceTips.rst
docs/LangRef.rst

index 53ab11b430c26cb02622e10d18adc04cc22419ff..efc4d1c280fdb021211cee06c4306052415bd807 100644 (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.  
index f51870f66a57e53e45c3107f5d61991a3f22400a..767d97a6c814fe52e2fa8558b0f7990fc72ba7fb 100644 (file)
@@ -10285,6 +10285,8 @@ Semantics:
 
 This intrinsic is lowered to the ``val``.
 
+.. _int_assume:
+
 '``llvm.assume``' Intrinsic
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^