@@ -567,6 +567,7 @@ struct ASTContext::Implementation {
567567 llvm::DenseMap<Type, ExistentialType *> ExistentialTypes;
568568 llvm::FoldingSet<UnboundGenericType> UnboundGenericTypes;
569569 llvm::FoldingSet<BoundGenericType> BoundGenericTypes;
570+ llvm::FoldingSet<BuiltinFixedArrayType> BuiltinFixedArrayTypes;
570571 llvm::FoldingSet<ProtocolCompositionType> ProtocolCompositionTypes;
571572 llvm::FoldingSet<ParameterizedProtocolType> ParameterizedProtocolTypes;
572573 llvm::FoldingSet<LayoutConstraintInfo> LayoutConstraints;
@@ -632,7 +633,6 @@ struct ASTContext::Implementation {
632633 llvm::DenseMap<BuiltinIntegerWidth, BuiltinIntegerType*> BuiltinIntegerTypes;
633634 llvm::DenseMap<unsigned , BuiltinUnboundGenericType*> BuiltinUnboundGenericTypes;
634635 llvm::FoldingSet<BuiltinVectorType> BuiltinVectorTypes;
635- llvm::FoldingSet<BuiltinFixedArrayType> BuiltinFixedArrayTypes;
636636 llvm::FoldingSet<DeclName::CompoundDeclName> CompoundNames;
637637 llvm::DenseMap<UUID, GenericEnvironment *> OpenedElementEnvironments;
638638 llvm::FoldingSet<IndexSubset> IndexSubsets;
@@ -3737,20 +3737,26 @@ BuiltinUnboundGenericType::get(TypeKind genericTypeKind,
37373737
37383738BuiltinFixedArrayType *BuiltinFixedArrayType::get (CanType Size,
37393739 CanType ElementType) {
3740+ RecursiveTypeProperties properties;
3741+ properties |= Size->getRecursiveProperties ();
3742+ properties |= ElementType->getRecursiveProperties ();
3743+
3744+ AllocationArena arena = getArena (properties);
3745+
37403746 llvm::FoldingSetNodeID id;
37413747 BuiltinFixedArrayType::Profile (id, Size, ElementType);
3742- auto &context = Size->getASTContext ();
3748+ auto &ctx = Size->getASTContext ();
37433749
37443750 void *insertPos;
3745- if (BuiltinFixedArrayType *vecType
3746- = context .getImpl ().BuiltinFixedArrayTypes
3751+ if (BuiltinFixedArrayType *faTy
3752+ = ctx .getImpl (). getArena (arena ).BuiltinFixedArrayTypes
37473753 .FindNodeOrInsertPos (id, insertPos))
3748- return vecType ;
3754+ return faTy ;
37493755
37503756 BuiltinFixedArrayType *faTy
3751- = new (context, AllocationArena::Permanent)
3752- BuiltinFixedArrayType (Size, ElementType);
3753- context. getImpl (). BuiltinFixedArrayTypes .InsertNode (faTy, insertPos);
3757+ = new (ctx, arena) BuiltinFixedArrayType (Size, ElementType, properties);
3758+ ctx. getImpl (). getArena (arena). BuiltinFixedArrayTypes
3759+ .InsertNode (faTy, insertPos);
37543760 return faTy;
37553761}
37563762
0 commit comments