 | InstructionBuilderGetElementPtrInBounds Method (Value, Value) |
[This is preliminary documentation and is subject to change.]
Creates a
Value that accesses an element of a type referenced by a pointer
Namespace:
Llvm.NET.Instructions
Assembly:
Llvm.NET (in Llvm.NET.dll) Version: 3.8.6158
Syntaxpublic Value GetElementPtrInBounds(
Value pointer,
params Value[] args
)
Parameters
- pointer
- Type: Llvm.NET.ValuesValue
pointer to get an element from - args
- Type: Llvm.NET.ValuesValue
additional indices for computing the resulting pointer
Return Value
Type:
ValueValue for the member access. This is a Value
as LLVM may optimize the expression to a ConstantExpression if it
can so the actual type of the result may be ConstantExpression
or GetElementPtr.
Note that pointer must be a pointer to a structure
or an exception is thrown.
Remarks
For details on GetElementPointer (GEP) see http://llvm.org/docs/GetElementPtr.html. The
basic gist is that the GEP instruction does not access memory, it only computes a pointer
offset from a base. A common confusion is around the first index and what it means. For C
and C++ programmers an expression like pFoo->bar seems to only have a single offset or
index. However that is only syntactic sugar where the compiler implicitly hides the first
index. That is, there is no difference between pFoo[0].bar and pFoo->bar except that the
former makes the first index explicit. In order to properly compute the offset for a given
element in an aggregate type LLVM requires an explicit first index even if it is zero.
See Also