[LLVMdev] [cfe-dev] LTO "bug" and Clang warnings
Krzysztof Parzyszek
kparzysz at codeaurora.org
Tue Jan 8 11:38:54 PST 2013
On 1/8/2013 1:11 PM, Renato Golin wrote:
>
> Still, doesn't explicitly say it's undefined. I agree this gives the
> freedom of implementers to extend naturally, but it's at least arguable.
> I have the 2011 draft and couldn't find anything, nor in the current
> open issues.
It does, actually:
C++ 2003 [5.7.5]
When an expression that has integral type is added to or subtracted from
a pointer, the result has the type of the pointer operand. If the
pointer operand points to an element of an array object, and the array
is large enough, the result points to an element offset from the
original element such that the difference of the subscripts of the
resulting and original array elements equals the integral expression. In
other words, if the expression P points to the i-th element of an array
object, the expressions (P)+N (equivalently, N+(P)) and (P)-N (where N
has the value n) point to, respectively, the i+n-th and i–n-th elements
of the array object, provided they exist. Moreover, if the expression P
points to the last element of an array object, the expression (P)+1
points one past the last element of the array object, and if the
expression Q points one past the last element of an array object, the
expression (Q)-1 points to the last element of the array object. If both
the pointer operand and the result point to elements of the same array
object, or one past the last element of the array object, the evaluation
shall not produce an overflow; otherwise, the behavior is undefined.
-Krzysztof
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
More information about the llvm-dev
mailing list