Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:Ty

36   GetAddrOfTypeName(QualType Ty, llvm::GlobalVariable::LinkageTypes Linkage);
40 llvm::Constant *GetAddrOfExternalRTTIDescriptor(QualType Ty);
43 void BuildVTablePointer(const Type *Ty);
60 void BuildObjCObjectTypeInfo(const ObjCObjectType *Ty);
64 void BuildPointerToMemberTypeInfo(const MemberPointerType *Ty);
112 llvm::Constant *BuildTypeInfo(QualType Ty, bool Force = false);
117 RTTIBuilder::GetAddrOfTypeName(QualType Ty,
121 CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out);
138 llvm::Constant *RTTIBuilder::GetAddrOfExternalRTTIDescriptor(QualType Ty) {
142 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
160 static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) {
170 switch (Ty->getKind()) {
233 static bool IsStandardLibraryRTTIDescriptor(QualType Ty) {
235 if (const BuiltinType *BuiltinTy = dyn_cast<BuiltinType>(Ty))
240 if (const PointerType *PointerTy = dyn_cast<PointerType>(Ty))
250 static bool ShouldUseExternalRTTIDescriptor(CodeGenModule &CGM, QualType Ty) {
256 if (const RecordType *RecordTy = dyn_cast<RecordType>(Ty)) {
286 static bool ContainsIncompleteClassType(QualType Ty) {
287 if (const RecordType *RecordTy = dyn_cast<RecordType>(Ty)) {
292 if (const PointerType *PointerTy = dyn_cast<PointerType>(Ty))
296 dyn_cast<MemberPointerType>(Ty)) {
311 getTypeInfoLinkage(CodeGenModule &CGM, QualType Ty) {
321 if (ContainsIncompleteClassType(Ty))
324 switch (Ty->getLinkage()) {
337 if (const RecordType *Record = dyn_cast<RecordType>(Ty)) {
378 void RTTIBuilder::BuildVTablePointer(const Type *Ty) {
391 switch (Ty->getTypeClass()) {
436 cast<CXXRecordDecl>(cast<RecordType>(Ty)->getDecl());
451 Ty = cast<ObjCObjectType>(Ty)->getBaseType().getTypePtr();
454 if (isa<BuiltinType>(Ty)) {
459 assert(isa<ObjCInterfaceType>(Ty));
463 if (cast<ObjCInterfaceType>(Ty)->getDecl()->getSuperClass()) {
518 QualType Ty) {
524 llvm::GlobalVariable::LinkageTypes Linkage = getTypeInfoLinkage(CGM, Ty);
537 CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out);
550 llvm::Constant *RTTIBuilder::BuildTypeInfo(QualType Ty, bool Force) {
552 Ty = CGM.getContext().getCanonicalType(Ty);
557 CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
563 maybeUpdateRTTILinkage(CGM, OldGV, Ty);
569 bool IsStdLib = IsStandardLibraryRTTIDescriptor(Ty);
570 if (!Force && (IsStdLib || ShouldUseExternalRTTIDescriptor(CGM, Ty)))
571 return GetAddrOfExternalRTTIDescriptor(Ty);
578 Linkage = getTypeInfoLinkage(CGM, Ty);
581 BuildVTablePointer(cast<Type>(Ty));
584 llvm::GlobalVariable *TypeName = GetAddrOfTypeName(Ty, Linkage);
589 switch (Ty->getTypeClass()) {
632 cast<CXXRecordDecl>(cast<RecordType>(Ty)->getDecl());
648 BuildObjCObjectTypeInfo(cast<ObjCObjectType>(Ty));
652 BuildPointerTypeInfo(cast<ObjCObjectPointerType>(Ty)->getPointeeType());
656 BuildPointerTypeInfo(cast<PointerType>(Ty)->getPointeeType());
660 BuildPointerToMemberTypeInfo(cast<MemberPointerType>(Ty));
687 if (const RecordType *RT = dyn_cast<RecordType>(Ty)) {
699 Visibility ExplicitVisibility = Ty->getVisibility();
703 TypeInfoVisibility = minVisibility(TypeInfoVisibility, Ty->getVisibility());
940 void RTTIBuilder::BuildPointerToMemberTypeInfo(const MemberPointerType *Ty) {
941 QualType PointeeTy = Ty->getPointeeType();
952 const RecordType *ClassType = cast<RecordType>(Ty->getClass());
981 llvm::Constant *CodeGenModule::GetAddrOfRTTIDescriptor(QualType Ty,
991 if (ForEH && Ty->isObjCObjectPointerType() && !Features.NeXTRuntime) {
992 return ObjCRuntime->GetEHType(Ty);
995 return RTTIBuilder(*this).BuildTypeInfo(Ty);