Lines Matching refs:Ty

34   GetAddrOfTypeName(QualType Ty, llvm::GlobalVariable::LinkageTypes Linkage);
38 llvm::Constant *GetAddrOfExternalRTTIDescriptor(QualType Ty);
41 void BuildVTablePointer(const Type *Ty);
58 void BuildObjCObjectTypeInfo(const ObjCObjectType *Ty);
62 void BuildPointerToMemberTypeInfo(const MemberPointerType *Ty);
108 llvm::Constant *BuildTypeInfo(QualType Ty, bool Force = false);
113 RTTIBuilder::GetAddrOfTypeName(QualType Ty, in GetAddrOfTypeName() argument
117 CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out); in GetAddrOfTypeName()
135 llvm::Constant *RTTIBuilder::GetAddrOfExternalRTTIDescriptor(QualType Ty) { in GetAddrOfExternalRTTIDescriptor() argument
139 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out); in GetAddrOfExternalRTTIDescriptor()
158 static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) { in TypeInfoIsInStandardLibrary() argument
168 switch (Ty->getKind()) { in TypeInfoIsInStandardLibrary()
238 static bool IsStandardLibraryRTTIDescriptor(QualType Ty) { in IsStandardLibraryRTTIDescriptor() argument
240 if (const BuiltinType *BuiltinTy = dyn_cast<BuiltinType>(Ty)) in IsStandardLibraryRTTIDescriptor()
245 if (const PointerType *PointerTy = dyn_cast<PointerType>(Ty)) in IsStandardLibraryRTTIDescriptor()
256 QualType Ty) { in ShouldUseExternalRTTIDescriptor() argument
263 if (const RecordType *RecordTy = dyn_cast<RecordType>(Ty)) { in ShouldUseExternalRTTIDescriptor()
295 static bool ContainsIncompleteClassType(QualType Ty) { in ContainsIncompleteClassType() argument
296 if (const RecordType *RecordTy = dyn_cast<RecordType>(Ty)) { in ContainsIncompleteClassType()
301 if (const PointerType *PointerTy = dyn_cast<PointerType>(Ty)) in ContainsIncompleteClassType()
305 dyn_cast<MemberPointerType>(Ty)) { in ContainsIncompleteClassType()
320 getTypeInfoLinkage(CodeGenModule &CGM, QualType Ty) { in getTypeInfoLinkage() argument
330 if (ContainsIncompleteClassType(Ty)) in getTypeInfoLinkage()
333 switch (Ty->getLinkage()) { in getTypeInfoLinkage()
347 if (const RecordType *Record = dyn_cast<RecordType>(Ty)) { in getTypeInfoLinkage()
390 void RTTIBuilder::BuildVTablePointer(const Type *Ty) { in BuildVTablePointer() argument
403 switch (Ty->getTypeClass()) { in BuildVTablePointer()
451 cast<CXXRecordDecl>(cast<RecordType>(Ty)->getDecl()); in BuildVTablePointer()
466 Ty = cast<ObjCObjectType>(Ty)->getBaseType().getTypePtr(); in BuildVTablePointer()
469 if (isa<BuiltinType>(Ty)) { in BuildVTablePointer()
474 assert(isa<ObjCInterfaceType>(Ty)); in BuildVTablePointer()
478 if (cast<ObjCInterfaceType>(Ty)->getDecl()->getSuperClass()) { in BuildVTablePointer()
511 llvm::Constant *RTTIBuilder::BuildTypeInfo(QualType Ty, bool Force) { in BuildTypeInfo() argument
513 Ty = CGM.getContext().getCanonicalType(Ty); in BuildTypeInfo()
518 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out); in BuildTypeInfo()
531 bool IsStdLib = IsStandardLibraryRTTIDescriptor(Ty); in BuildTypeInfo()
532 if (!Force && (IsStdLib || ShouldUseExternalRTTIDescriptor(CGM, Ty))) in BuildTypeInfo()
533 return GetAddrOfExternalRTTIDescriptor(Ty); in BuildTypeInfo()
540 Linkage = getTypeInfoLinkage(CGM, Ty); in BuildTypeInfo()
543 BuildVTablePointer(cast<Type>(Ty)); in BuildTypeInfo()
546 llvm::GlobalVariable *TypeName = GetAddrOfTypeName(Ty, Linkage); in BuildTypeInfo()
550 switch (Ty->getTypeClass()) { in BuildTypeInfo()
596 cast<CXXRecordDecl>(cast<RecordType>(Ty)->getDecl()); in BuildTypeInfo()
612 BuildObjCObjectTypeInfo(cast<ObjCObjectType>(Ty)); in BuildTypeInfo()
616 BuildPointerTypeInfo(cast<ObjCObjectPointerType>(Ty)->getPointeeType()); in BuildTypeInfo()
620 BuildPointerTypeInfo(cast<PointerType>(Ty)->getPointeeType()); in BuildTypeInfo()
624 BuildPointerToMemberTypeInfo(cast<MemberPointerType>(Ty)); in BuildTypeInfo()
651 if (const RecordType *RT = dyn_cast<RecordType>(Ty)) { in BuildTypeInfo()
663 Visibility ExplicitVisibility = Ty->getVisibility(); in BuildTypeInfo()
667 TypeInfoVisibility = minVisibility(TypeInfoVisibility, Ty->getVisibility()); in BuildTypeInfo()
900 void RTTIBuilder::BuildPointerToMemberTypeInfo(const MemberPointerType *Ty) { in BuildPointerToMemberTypeInfo() argument
901 QualType PointeeTy = Ty->getPointeeType(); in BuildPointerToMemberTypeInfo()
912 const RecordType *ClassType = cast<RecordType>(Ty->getClass()); in BuildPointerToMemberTypeInfo()
941 llvm::Constant *CodeGenModule::GetAddrOfRTTIDescriptor(QualType Ty, in GetAddrOfRTTIDescriptor() argument
949 if (ForEH && Ty->isObjCObjectPointerType() && in GetAddrOfRTTIDescriptor()
951 return ObjCRuntime->GetEHType(Ty); in GetAddrOfRTTIDescriptor()
953 return RTTIBuilder(*this).BuildTypeInfo(Ty); in GetAddrOfRTTIDescriptor()