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,
117 CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out);
135 llvm::Constant *RTTIBuilder::GetAddrOfExternalRTTIDescriptor(QualType Ty) {
139 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
158 static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) {
168 switch (Ty->getKind()) {
230 static bool IsStandardLibraryRTTIDescriptor(QualType Ty) {
232 if (const BuiltinType *BuiltinTy = dyn_cast<BuiltinType>(Ty))
237 if (const PointerType *PointerTy = dyn_cast<PointerType>(Ty))
247 static bool ShouldUseExternalRTTIDescriptor(CodeGenModule &CGM, QualType Ty) {
253 if (const RecordType *RecordTy = dyn_cast<RecordType>(Ty)) {
283 static bool ContainsIncompleteClassType(QualType Ty) {
284 if (const RecordType *RecordTy = dyn_cast<RecordType>(Ty)) {
289 if (const PointerType *PointerTy = dyn_cast<PointerType>(Ty))
293 dyn_cast<MemberPointerType>(Ty)) {
308 getTypeInfoLinkage(CodeGenModule &CGM, QualType Ty) {
318 if (ContainsIncompleteClassType(Ty))
321 switch (Ty->getLinkage()) {
334 if (const RecordType *Record = dyn_cast<RecordType>(Ty)) {
377 void RTTIBuilder::BuildVTablePointer(const Type *Ty) {
390 switch (Ty->getTypeClass()) {
435 cast<CXXRecordDecl>(cast<RecordType>(Ty)->getDecl());
450 Ty = cast<ObjCObjectType>(Ty)->getBaseType().getTypePtr();
453 if (isa<BuiltinType>(Ty)) {
458 assert(isa<ObjCInterfaceType>(Ty));
462 if (cast<ObjCInterfaceType>(Ty)->getDecl()->getSuperClass()) {
517 QualType Ty) {
523 llvm::GlobalVariable::LinkageTypes Linkage = getTypeInfoLinkage(CGM, Ty);
536 CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out);
549 llvm::Constant *RTTIBuilder::BuildTypeInfo(QualType Ty, bool Force) {
551 Ty = CGM.getContext().getCanonicalType(Ty);
556 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
562 maybeUpdateRTTILinkage(CGM, OldGV, Ty);
568 bool IsStdLib = IsStandardLibraryRTTIDescriptor(Ty);
569 if (!Force && (IsStdLib || ShouldUseExternalRTTIDescriptor(CGM, Ty)))
570 return GetAddrOfExternalRTTIDescriptor(Ty);
577 Linkage = getTypeInfoLinkage(CGM, Ty);
580 BuildVTablePointer(cast<Type>(Ty));
583 llvm::GlobalVariable *TypeName = GetAddrOfTypeName(Ty, Linkage);
587 switch (Ty->getTypeClass()) {
630 cast<CXXRecordDecl>(cast<RecordType>(Ty)->getDecl());
646 BuildObjCObjectTypeInfo(cast<ObjCObjectType>(Ty));
650 BuildPointerTypeInfo(cast<ObjCObjectPointerType>(Ty)->getPointeeType());
654 BuildPointerTypeInfo(cast<PointerType>(Ty)->getPointeeType());
658 BuildPointerToMemberTypeInfo(cast<MemberPointerType>(Ty));
685 if (const RecordType *RT = dyn_cast<RecordType>(Ty)) {
697 Visibility ExplicitVisibility = Ty->getVisibility();
701 TypeInfoVisibility = minVisibility(TypeInfoVisibility, Ty->getVisibility());
934 void RTTIBuilder::BuildPointerToMemberTypeInfo(const MemberPointerType *Ty) {
935 QualType PointeeTy = Ty->getPointeeType();
946 const RecordType *ClassType = cast<RecordType>(Ty->getClass());
975 llvm::Constant *CodeGenModule::GetAddrOfRTTIDescriptor(QualType Ty,
983 if (ForEH && Ty->isObjCObjectPointerType() &&
985 return ObjCRuntime->GetEHType(Ty);
987 return RTTIBuilder(*this).BuildTypeInfo(Ty);