mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-21 03:37:47 +00:00
Okay, make the prose match the example too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29697 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1c6f87d665
commit
eda573ddf9
@ -78,12 +78,13 @@
|
||||
AType* Foo;
|
||||
...
|
||||
X = &Foo->F;</pre>
|
||||
<p>it is natural to think that there is only one index, the constant value
|
||||
<tt>1</tt>. This results from C allowing you to treat pointers and arrays as
|
||||
equivalent. LLVM doesn't. In this example, Foo is a pointer. That pointer must
|
||||
be indexed. To arrive at the same address location as the C code, you would
|
||||
provide the GEP instruction with two indices. The first indexes through the
|
||||
pointer, the second index the element of the structure just as if it was:</p>
|
||||
<p>it is natural to think that there is only one index, the selection of the
|
||||
field <tt>F</tt>. However, in this example, <tt>Foo</tt> is a pointer. That
|
||||
pointer must be indexed explicitly in LLVM. C, on the other hand, indexs
|
||||
through it ransparently. To arrive at the same address location as the C
|
||||
code, you would provide the GEP instruction with two index operands. The
|
||||
first operand indexes through the pointer; the second operand indexes the
|
||||
field <tt>F</tt> of the structure, just as if you wrote:</p>
|
||||
<pre>
|
||||
X = &Foo[0].F;</pre>
|
||||
<p>Sometimes this question gets rephrased as:</p>
|
||||
|
Loading…
x
Reference in New Issue
Block a user