From: Devang Patel Date: Mon, 17 Jan 2011 22:23:07 +0000 (+0000) Subject: Simplify. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=31f7d02f0d46207b077f9687fbfbf273dda4d5f5;p=clang Simplify. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123682 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index ff07f758ed..ba0c8ca8e2 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -879,9 +879,9 @@ llvm::DIType CGDebugInfo::getOrCreateRecordType(QualType RTy, } /// CreateType - get structure or union type. -llvm::DIType CGDebugInfo::CreateType(const RecordType *Ty, - llvm::DIFile Unit) { +llvm::DIType CGDebugInfo::CreateType(const RecordType *Ty) { RecordDecl *RD = Ty->getDecl(); + llvm::DIFile Unit = getOrCreateFile(RD->getLocation()); // Get overall information about the record type for the debug info. llvm::DIFile DefUnit = getOrCreateFile(RD->getLocation()); @@ -1146,18 +1146,11 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty, return RealDecl; } -llvm::DIType CGDebugInfo::CreateType(const EnumType *Ty, - llvm::DIFile Unit) { - return CreateEnumType(Ty->getDecl(), Unit); - -} - -llvm::DIType CGDebugInfo::CreateType(const TagType *Ty, - llvm::DIFile Unit) { +llvm::DIType CGDebugInfo::CreateType(const TagType *Ty) { if (const RecordType *RT = dyn_cast(Ty)) - return CreateType(RT, Unit); + return CreateType(RT); else if (const EnumType *ET = dyn_cast(Ty)) - return CreateType(ET, Unit); + return CreateEnumType(ET->getDecl()); return llvm::DIType(); } @@ -1272,7 +1265,8 @@ llvm::DIType CGDebugInfo::CreateType(const MemberPointerType *Ty, } /// CreateEnumType - get enumeration type. -llvm::DIType CGDebugInfo::CreateEnumType(const EnumDecl *ED, llvm::DIFile Unit){ +llvm::DIType CGDebugInfo::CreateEnumType(const EnumDecl *ED) { + llvm::DIFile Unit = getOrCreateFile(ED->getLocation()); llvm::SmallVector Enumerators; // Create DIEnumerator elements for each enumerator. @@ -1410,7 +1404,7 @@ llvm::DIType CGDebugInfo::CreateTypeNode(QualType Ty, case Type::Typedef: return CreateType(cast(Ty), Unit); case Type::Record: case Type::Enum: - return CreateType(cast(Ty), Unit); + return CreateType(cast(Ty)); case Type::FunctionProto: case Type::FunctionNoProto: return CreateType(cast(Ty), Unit); @@ -1958,7 +1952,7 @@ void CGDebugInfo::EmitGlobalVariable(const ValueDecl *VD, llvm::DIType Ty = getOrCreateType(VD->getType(), Unit); if (const EnumConstantDecl *ECD = dyn_cast(VD)) { if (const EnumDecl *ED = dyn_cast(ECD->getDeclContext())) - Ty = CreateEnumType(ED, Unit); + Ty = CreateEnumType(ED); } // Do not use DIGlobalVariable for enums. if (Ty.getTag() == llvm::dwarf::DW_TAG_enumeration_type) diff --git a/lib/CodeGen/CGDebugInfo.h b/lib/CodeGen/CGDebugInfo.h index 7b258cba8b..1d72cc18ea 100644 --- a/lib/CodeGen/CGDebugInfo.h +++ b/lib/CodeGen/CGDebugInfo.h @@ -84,16 +84,15 @@ class CGDebugInfo { llvm::DIType CreateType(const PointerType *Ty, llvm::DIFile F); llvm::DIType CreateType(const BlockPointerType *Ty, llvm::DIFile F); llvm::DIType CreateType(const FunctionType *Ty, llvm::DIFile F); - llvm::DIType CreateType(const TagType *Ty, llvm::DIFile F); - llvm::DIType CreateType(const RecordType *Ty, llvm::DIFile F); + llvm::DIType CreateType(const TagType *Ty); + llvm::DIType CreateType(const RecordType *Ty); llvm::DIType CreateType(const ObjCInterfaceType *Ty, llvm::DIFile F); llvm::DIType CreateType(const ObjCObjectType *Ty, llvm::DIFile F); - llvm::DIType CreateType(const EnumType *Ty, llvm::DIFile F); llvm::DIType CreateType(const VectorType *Ty, llvm::DIFile F); llvm::DIType CreateType(const ArrayType *Ty, llvm::DIFile F); llvm::DIType CreateType(const LValueReferenceType *Ty, llvm::DIFile F); llvm::DIType CreateType(const MemberPointerType *Ty, llvm::DIFile F); - llvm::DIType CreateEnumType(const EnumDecl *ED, llvm::DIFile Unit); + llvm::DIType CreateEnumType(const EnumDecl *ED); llvm::DIType getOrCreateMethodType(const CXXMethodDecl *Method, llvm::DIFile F); llvm::DIType getOrCreateVTablePtrType(llvm::DIFile F);