[llvm-commits] [llvm] r86572 - /llvm/trunk/docs/LangRef.html
Dan Gohman
gohman at apple.com
Mon Nov 9 10:40:39 PST 2009
Author: djg
Date: Mon Nov 9 12:40:39 2009
New Revision: 86572
URL: http://llvm.org/viewvc/llvm-project?rev=86572&view=rev
Log:
Remove the "special case" for zero-length arrays, and rephrase this
paragraph to be more precise.
Modified:
llvm/trunk/docs/LangRef.html
Modified: llvm/trunk/docs/LangRef.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.html?rev=86572&r1=86571&r2=86572&view=diff
==============================================================================
--- llvm/trunk/docs/LangRef.html (original)
+++ llvm/trunk/docs/LangRef.html Mon Nov 9 12:40:39 2009
@@ -1576,12 +1576,13 @@
</tr>
</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 "<tt>{ i32, [0 x float]}</tt>", for example.</p>
+<p>Except when the <tt>inbounds</tt> keyword is present, there is no limitation
+ on indexing beyond the end of the array implied by the static type (though
+ any loads or stores must of course be within the bounds of the allocated
+ object!). This means that single-dimension 'variable sized array' addressing
+ can be implemented in LLVM with a zero length array type. An implementation
+ of 'pascal style arrays' in LLVM could use the type
+ "<tt>{ i32, [0 x float]}</tt>", for example.</p>
<p>Note that the code generator does not yet support large aggregate types to be
used as function return types. The specific limit on how large an aggregate
More information about the llvm-commits
mailing list