[cfe-dev] Comparison of pointers between Objc subclasses

Ted Kremenek kremenek at apple.com
Tue Jul 1 23:30:48 PDT 2008


On Jul 1, 2008, at 9:48 PM, Eli Friedman wrote:

> On Tue, Jul 1, 2008 at 8:54 PM, Ted Kremenek <kremenek at apple.com>  
> wrote:
>> So, I think the answers we are looking for are outside the letter  
>> of C99
>> standard.  The Objective-C and C++ object type systems are a  
>> completely
>> different animal.
>
> Okay, so in that case typesAreCompatible should say that non-identical
> ObjC types aren't compatible, and the necessary handling for
> comparison/assignment/conditionals/whatever else is needed for ObjC
> pointers should move into SemaExpr.
>
> -Eli

That sounds like a reasonable plan.  Incidentally, what does:

   __builtin_type_compatible_p

do for these pointer types?  I've never even used this builtin, so I'm  
not quite certain how to use it in practice.  I only ask because we  
use ASTContext::typesAreCompatible to implement  
Expr::isIntegerConstantExpr for TypesCompatibleExpr.

If we can cross-check GCC's behavior with this builtin, that should  
give a definitive answer on whether or not NSArray* and  
NSMutableArray* should be considered compatible types (and hence put  
the logic in ASTContext::typesAreCompatible) or, if not, put (as you  
suggest) the necessary handling for ObjC pointers in SemaExpr.



More information about the cfe-dev mailing list