The often misunderstood GetElementPtr (GEP) instruction now has its own
FAQ document. For all of you that have struggled with understanding how
this instruction works, hopefully this document will make it clear and
help you with your use of LLVM. Many thanks to Chris Lattner for setting
me straight on how this instruction works and reviewing the document.

Document Link :

Best Regards,


hi Reid,

thanks for the documentation for this. Me too struggled at first with
this concept.

Regarding the page fragment references:

<a href="firstptr">What is the first index of the GEP instruction?</a>
    <li><a href="extra_index">Why is the extra 0 index required?</a></li>

    <li><a href="deref">What is dereferenced by GEP?</a></li>
    <li><a href="lead0">Why don't GEP x,0,0,1 and GEP x,1 alias? </a></li>
    <li><a href="trail0">Why do GEP x,1,0,0 and GEP x,1 alias? </a></li>

I think you should put a # in fron of the href values, otherwise my
preferred browser (firefox) thinks it is a website and not a document

-- Jakob

Reid Spencer wrote:


Reading through this, I found a typo…

In the paragraph after the 3rd code snippet in the 1st question’s section:
“The second operand will be the field offset” seems like it should be the third operand? The second is the pointer offset…

HTH! =]
-Chandler Carruth

Yup. Fixed. Thanks.