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

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 30 12:38:42 PDT 2016


+      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.

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