[PATCH] Canonicalize UnaryTransformType types when they don't have a known underlying type

Vassil Vassilev via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 30 15:41:49 PDT 2016


On 30/03/16 21:38, Richard Smith wrote:
> +      DependentDecltypeTypes.InsertNode(Canon, InsertPos);
>
> This is being inserted into the wrong set.
>
> +    ut = new (*this, TypeAlignment) UnaryTransformType (BaseTy, UnderlyingTy,
> +                                                        Kind,
> +                                                        QualType(Canon, 0));
>
> Pass in QualType() instead of UnderlyingTy here. UnderlyingTy is
> meaningless if BaseTy is dependent.
Just for the record: that was clarified over IRC. Richard was right I 
needed a bit more tweaking to make this suggestion work.
>
> On Thu, Mar 17, 2016 at 11:55 AM, Vassil Vassilev via cfe-commits
> <cfe-commits at lists.llvm.org> wrote:
>> ping...
>>
>> On 10/03/16 15:33, Vassil Vassilev wrote:
>>> Would this one more reasonable to commit. As you suggested if the base
>>> type is dependent, create a unique canonical UnaryTransformType with the
>>> canonical form of the base type as its base type and with DependentTy as its
>>> underlying type, then use that canonical dependent type as the underlying
>>> type for your sugared UnaryTransformType.
>>> The attached patch follows the getDecltypeType approach.
>>> --Vassil
>>> On 24/02/16 23:09, Richard Smith wrote:
>>>> A UnaryTransformType should itself be a canonical type if its BaseType
>>>> is dependent -- that is, its CanonicalType should be QualType(this,
>>>> 0). It should definitely not be treated as being canonically
>>>> equivalent to its BaseType.
>>>>
>>>> On Wed, Feb 24, 2016 at 2:03 PM, Vassil Vassilev <v.g.vassilev at gmail.com>
>>>> wrote:
>>>>> ping...
>>>>>
>>>>> On 07/01/16 08:09, Vassil Vassilev via cfe-commits wrote:
>>>>>
>>>>> Hi all,
>>>>>     I am attaching a fix for https://llvm.org/bugs/show_bug.cgi?id=26014
>>>>>     To which type should I tie the canonical type of the unknown
>>>>> underlying
>>>>> type? Currently it is tied to its BaseType.
>>>>>
>>>>>     Please review.
>>>>> --Vassil
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> cfe-commits mailing list
>>>>> cfe-commits at lists.llvm.org
>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>>
>>>>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list