diff options
author | Dan Gohman <gohman@apple.com> | 2010-02-18 18:40:29 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-02-18 18:40:29 +0000 |
commit | e921792509e00c683ed6facc5e2840f5255bcc9d (patch) | |
tree | 4cf21fbab604eecbafaf0547a018a68825491e54 | |
parent | a52eeb93e0db78bfdc7845a8a0406c4ff602499a (diff) |
Clarify that ptrtoint+inttoptr are an alternative to GEP which are
not restricted by the GEP rules.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96598 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | docs/AdvancedGetElementPtr.html | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/docs/AdvancedGetElementPtr.html b/docs/AdvancedGetElementPtr.html index 65ccbc4829..a6baa13219 100644 --- a/docs/AdvancedGetElementPtr.html +++ b/docs/AdvancedGetElementPtr.html @@ -200,9 +200,9 @@ to null?</b></a> </div> <div class="doc_text"> - <p>You can compute an address that way, but you can't use that pointer to - actually access the object if you do, unless the object is managed - outside of LLVM.</p> + <p>You can compute an address that way, but if you use GEP to do the add, + you can't use that pointer to actually access the object, unless the + object is managed outside of LLVM.</p> <p>The underlying integer computation is sufficiently defined; null has a defined value -- zero -- and you can add whatever value you want to it.</p> @@ -211,6 +211,11 @@ object with such a pointer. This includes GlobalVariables, Allocas, and objects pointed to by noalias pointers.</p> + <p>If you really need this functionality, you can do the arithmetic with + explicit integer instructions, and use inttoptr to convert the result to + an address. Most of GEP's special aliasing rules do not apply to pointers + computed from ptrtoint, arithmetic, and inttoptr sequences.</p> + </div> <!-- *********************************************************************** --> @@ -219,9 +224,12 @@ that value to one address to compute the other address?</b></a> </div> <div class="doc_text"> - <p>As with arithmetic on null, You can compute an address that way, but - you can't use that pointer to actually access the object if you do, - unless the object is managed outside of LLVM.</p> + <p>As with arithmetic on null, You can use GEP to compute an address that + way, but you can't use that pointer to actually access the object if you + do, unless the object is managed outside of LLVM.</p> + + <p>Also as above, ptrtoint and inttoptr provide an alternative way to do this + which do not have this restriction.</p> </div> |