[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