[cfe-commits] r121720 - in /cfe/trunk: include/clang/AST/TypeLoc.h lib/AST/TypeLoc.cpp lib/Sema/SemaTemplateInstantiateDecl.cpp
Enea Zaffanella
zaffanella at cs.unipr.it
Mon Dec 13 23:43:25 PST 2010
Il 14/12/2010 00:06, John McCall ha scritto:
> On Dec 13, 2010, at 2:40 PM, Chandler Carruth wrote:
>> On Mon, Dec 13, 2010 at 2:27 PM, Abramo Bagnara
>> <abramo.bagnara at gmail.com <mailto:abramo.bagnara at gmail.com>> wrote:
>>
>> Skip ParenType on function instantiations.
>>
>>
>> While this fixes one case, your patch remains fundamentally broken.
>> There are more cases throughout Sema that reason about a QualType or
>> TypeSourceInfo or TypeLoc and expect getAs<FunctionType> or
>> dyn_cast<FunctionType> to Just Work. They don't any more. Function
>> attributes won't work now for example. Can you audit the codebase
>> looking for these? They should be very easy to craft test cases for.
>
> getAs<>() should be working just fine because (1) the canonical type is
> untouched and (2) isSugared() and desugar() have been implemented
> correctly.
Yes, we were relying on this behaviour in many places.
> Chandler is right that we probably need to check all the
> explicit isa<>s on TypeLocs.
OK, we'll perform such a review.
> I am skeptical that we need QualType::IgnoreParens() at all,
Currently we only have a couple of uses in the very same function and
you are right, these are unnecessary, since in those places too we have
occurrences of getAs<>, which are going to work just fine. We will
remove this method.
> but TypeLoc::IgnoreParens is reasonable, although I agree with Chandler that
> this should be an inline function.
Agreed: we will code the fast path inline and use an IgnoreParensImpl
for the slow path.
Enea.
>
> John.
More information about the cfe-commits
mailing list