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

Jordan Rose jordan_rose at apple.com
Tue Apr 9 09:18:07 PDT 2013


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>:
>> This check still looks wrong to me. CodeGen has special cases for VLAs,
>> void, and function types; any other zero-size type should get a diagnostic.
>> Right now, it looks like you're missing at least the case of an array with a
>> zero-sized element type (such as an array of empty records). I think that's
>> 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



More information about the cfe-commits mailing list