[PATCH] Fix to PR5683 - issue diagnostic for pointer subtraction with type of size zero.

Serge Pavlov sepavloff at gmail.com
Tue Apr 9 10:52:11 PDT 2013


2013/4/9 Jordan Rose <jordan_rose at apple.com>:
>
> On Apr 9, 2013, at 6:46 , Serge Pavlov <sepavloff at gmail.com> wrote:
>
>> Hi Richard,
>>
>> I've changed the check as you recommended before.
>>
>> 2013/4/9 Richard Smith <richard at metafoo.co.uk>:
[...]
>>> the only other case for GNU C, but Objective-C might add some more
>>> possibilities?
>>
>> Yes, array of empty records is another king of zero-size object, which I missed.
>> As for Objective-C, I couldn't invent something new...
>
> I think it's safe to ignore Objective-C. In theory you can declare a zero-size object (which will then be recognized by the runtime somehow, like tagged pointers), but in practice it won't happen in user code. You can't take the size of an Objective-C object in the non-fragile runtime, and even in the fragile runtime you can't create an Objective-C object on the stack.
>
> Jordan

Thank you for the explanation. If object size is unavailable, then the
pointer subtraction doesn't make sense. Indeed, an expression like
'x-y' causes "error: arithmetic on pointer to interface 'empty', which
is not a constant size for this architecture and platform".

--Serge




More information about the cfe-commits mailing list