[cfe-commits] r106216 - in /cfe/trunk: include/clang/AST/TypeLoc.h include/clang/Lex/Token.h lib/Sema/SemaExprCXX.cpp

John McCall rjmccall at apple.com
Thu Jun 17 11:06:59 PDT 2010


On Jun 17, 2010, at 11:05 AM, Gabor Greif wrote:

> On Thu, Jun 17, 2010 at 7:04 PM, John McCall <rjmccall at apple.com> wrote:
>> 
>> On Jun 17, 2010, at 4:29 AM, Gabor Greif wrote:
>> 
>>> Author: ggreif
>>> Date: Thu Jun 17 06:29:31 2010
>>> New Revision: 106216
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=106216&view=rev
>>> Log:
>>> fix some more gcc3.4 constness warnings
>>> 
>>> Modified:
>>>    cfe/trunk/include/clang/AST/TypeLoc.h
>>>    cfe/trunk/include/clang/Lex/Token.h
>>>    cfe/trunk/lib/Sema/SemaExprCXX.cpp
>>> 
>>> Modified: cfe/trunk/include/clang/AST/TypeLoc.h
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/TypeLoc.h?rev=106216&r1=106215&r2=106216&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/AST/TypeLoc.h (original)
>>> +++ cfe/trunk/include/clang/AST/TypeLoc.h Thu Jun 17 06:29:31 2010
>>> @@ -142,7 +142,7 @@
>>> 
>>> /// \brief Return the TypeLoc for a type source info.
>>> inline TypeLoc TypeSourceInfo::getTypeLoc() const {
>>> -  return TypeLoc(Ty, (void*)(this + 1));
>>> +  return TypeLoc(Ty, const_cast<TypeSourceInfo*>(this + 1));
>>> }
>> 
>> Please make this const_cast<void*>;  right now it looks *really* bizarre.
> 
> It does :-(
> 
> I tried const_cast<void*> first but the compiler would not let me.
> Probably because the const_cast is only allowed to strip cv-quals
> and not let us up/downcast.
> 
> This is all very strange, I believe gcc3.4's c-style cast typechecker
> was programmed by crack smoking aliens...
> 
> I can offer following alternatives:
> 
> 1) extra line:
> void *temp = const_cast<TypeSourceInfo*>(this + 1);
> return TypeLoc(Ty, temp);
> 
> 2) two casts in row:
> return TypeLoc(Ty, const_cast<void*>(static_cast<const void*>(this + 1)));

I think this would be fine.

John.



More information about the cfe-commits mailing list