PR 25512: pointer overflow defined?
chris jefferson
caj@cs.york.ac.uk
Wed Dec 21 18:26:00 GMT 2005
Robert Dewar wrote:
> Richard Guenther wrote:
>
>> On Wed, 21 Dec 2005, Andrew Haley wrote:
>>
>>
>>
>>> Richard Guenther writes:
>>> > > The problem in this PR is that code like in the testcase (from
>>> > OpenOffice) assumes that pointer overflow is defined. As the
>>> > standard does not talk about wrapping pointer semantics at all (at
>>> > least I couldn't find anything about that), how should we treat
>>> > this?
>>>
>>> Look at Section 6.5.6, Para 8. The code is undefined.
>>>
>>
>> This talks about pointers that point to elements of an array object.
>> It does not talk about doing arithmetic on arbitrary pointer
>> (constants),
>> which is what the code does.
>>
> Right, but that's the point. "doing arithmetic on arbitrary pointer"
> values is
> not defined, it is not even defined to compare two pointers pointing
> to two
> different objects.
>
While that is true according to the standard, I believe that on most
systems you can compare any two pointers. In particular, the C++
standard does require a total ordering on pointers, and at the moment
that is implemented for all systems by just doing "a < b" on the two
pointers.
Chris
More information about the Gcc
mailing list