mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-05 14:34:55 +00:00
add a note about variable length array
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22278 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
543a02704e
commit
e67a951720
@ -717,6 +717,14 @@ be any type with a size.</p>
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<p>Note that 'variable sized arrays' can be implemented in LLVM With a zero
|
||||||
|
length array. Normally accesses past the end of an array are undefined in
|
||||||
|
LLVM (e.g. it is illegal to access the 5th element of a 3 element array).
|
||||||
|
As a special case, however, zero length arrays are recognized to be variable
|
||||||
|
length. This allows implementation of 'pascal style arrays' with the LLVM
|
||||||
|
type "{ int, [0 x float]}", for example.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- _______________________________________________________________________ -->
|
<!-- _______________________________________________________________________ -->
|
||||||
@ -1989,7 +1997,15 @@ the LLVM code for the given testcase is equivalent to:</p>
|
|||||||
ret int* %t5
|
ret int* %t5
|
||||||
}
|
}
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
<p>Note that it is undefined to access an array out of bounds: array and
|
||||||
|
pointer indexes must always be within the defined bounds of the array type.
|
||||||
|
The one exception for this rules is zero length arrays. These arrays are
|
||||||
|
defined to be accessible as variable length arrays, which requires access
|
||||||
|
beyond the zero'th element.</p>
|
||||||
|
|
||||||
<h5>Example:</h5>
|
<h5>Example:</h5>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<i>; yields [12 x ubyte]*:aptr</i>
|
<i>; yields [12 x ubyte]*:aptr</i>
|
||||||
%aptr = getelementptr {int, [12 x ubyte]}* %sptr, long 0, uint 1
|
%aptr = getelementptr {int, [12 x ubyte]}* %sptr, long 0, uint 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user