[cfe-dev] For Review: C++ Casting Patch

Bill Wendling isanbard at gmail.com
Sun Jun 1 18:19:07 PDT 2008


On Apr 16, 2008, at 10:11 PM, Chris Lattner wrote:

>
> On Apr 16, 2008, at 10:08 PM, Bill Wendling wrote:
>
>>>
>>> +  if (CastTyBase.getTypePtr() == ExprTyBase.getTypePtr())
>>> +    return true;
>>>
>>> This isn't safe, one might be a typedef for the other.  Also, you  
>>> should have comments in your methods explaining why you are doing  
>>> what you are doing.
>>>
>> At this point, one of them won't be a pointer type. Essentially,  
>> what I want this method to do is go through all of the layers of  
>> both pointer types until it gets to the base type. It then checks  
>> to see if the base types are equal (the code you quoted above). I  
>> take it from your comment that this isn't sufficient to do that.  
>> How do I check past the typedefs when the types may not be pointers  
>> at all? Should I use "getDesugaredType()"?
>
>
> For exact equality (including CV qualifiers etc), something like  
> this should work:
>
> if (SourceMgr.getCanoncicalType(CastTyBase.getTypePtr()) ==  
> SourceMgr.getCanonicalType(ExprTyBase.getTypePtr()))
>
Here's an updated patch for C++ casting checking.

-bw

-------------- next part --------------
A non-text attachment was scrubbed...
Name: c++.patch
Type: application/octet-stream
Size: 19344 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20080601/0ef88809/attachment.obj>
-------------- next part --------------




More information about the cfe-dev mailing list