1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

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 93431d032f
commit 0a6e8a4bcd

View File

@ -4004,11 +4004,11 @@ entry:
<p>If the <tt>inbounds</tt> keyword is present, the result value of the <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 <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 <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 that would be formed by successive addition of the offsets implied by the
the base address are not an <i>in bounds</i> address of that allocated indices to the base address with infinitely precise arithmetic are not an
object. <i>in bounds</i> address of that allocated object.
The <i>in bounds</i> addresses for an allocated object are all the addresses 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 <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 the base address with silently-wrapping two's complement arithmetic, and