[cfe-dev] Comparison of pointers between Objc subclasses
Jean-Daniel Dupas
devlists at shadowlab.org
Wed Jul 2 06:16:40 PDT 2008
Le 2 juil. 08 à 12:58, David Chisnall a écrit :
> On 2 Jul 2008, at 00:22, Ted Kremenek wrote:
>
>> Are pointer type compatibility checks for assignments and conversions
>> being handled in the same way? I can understand why assigning a base
>> type to a derived type is dangerous, but it seems to me that
>> comparisons like these should be legal. I'm only raising this point
>> because the code snippet with the warning involved a comparison, not
>> an assignment.
>
> Comparisons between ObjC pointers should contain an implicit cast to
> id. I tweaked CodeGen to do this and sent the patch a month or so
> ago, but it wasn't an ideal solution since the problem is really in
> Sema, and it only fixed a few cases where Sema was doing almost the
> right thing but omitting the implicit cast.
Wouldn't this implicit cast prevent the "comparison of distinct
Objective-C types lacks a cast" warning ?
I think gcc emit this warning, because if gcc is right (the two
pointer does not have compatible type), the comparaison will always be
false.
It 's like when you try to compare a negative signed value with an
unsigned value. considere this:
unsigned i;
...
if (-1 == i) ...
In this case, it's safe/legal to compare the two values, and the
condition may even be true, but gcc emit a warning (but it look like
clang does not says anything about it).
Note that I have no idea about what standard says about this case.
I also saw that "clang -pedantic" properly handles the "incompatible
pointer types assigning…" warning.
> Currently there are lots of Objective-C type-system related bugs in
> clang. I hope to have some time in the next few weeks to be able to
> take a look at it. The Objective-C type system doesn't map very
> cleanly to the LLVM type system, unfortunately, and there are lots of
> places where implicit casts need to be emitted but aren't.
> David
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2427 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20080702/0e2805bf/attachment.bin>
More information about the cfe-dev
mailing list