Clarify a few things in the inbounds description.

Describing inbounds in terms of infinitely precise arithmetic prohibits
the assumption address-space-sized integer arithmetic will wrap, with
a wrapped-around value landing within the same object.

llvm-svn: 79538
This commit is contained in:
Dan Gohman 2009-08-20 17:08:17 +00:00
parent 9a84665921
commit 2de532c132
1 changed files with 4 additions and 4 deletions

View File

@ -4004,11 +4004,11 @@ entry:
<p>If the <tt>inbounds</tt> keyword is present, the result value of the
<tt>getelementptr</tt> is undefined if the base pointer is not an
<i>in bounds</i> address of an allocated object, or if any of the addresses
formed by successive addition of the offsets implied by the indices to
the base address are not an <i>in bounds</i> address of that allocated
object.
that would be formed by successive addition of the offsets implied by the
indices to the base address with infinitely precise arithmetic are not an
<i>in bounds</i> address of that allocated object.
The <i>in bounds</i> addresses for an allocated object are all the addresses
that point into the object, plus the address one past the end.</p>
that point into the object, plus the address one byte past the end.</p>
<p>If the <tt>inbounds</tt> keyword is not present, the offsets are added to
the base address with silently-wrapping two's complement arithmetic, and