diff options
author | Eric Christopher <echristo@apple.com> | 2012-08-17 04:42:07 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2012-08-17 04:42:07 +0000 |
commit | 1dc7ab0bbe6ef1b179f450eaa536323b0c3ba034 (patch) | |
tree | d558ef1e2908354d4e6ac08b6cd8e86f544c36a9 /lib/CodeGen/CGDebugInfo.cpp | |
parent | e7259aad3fc6db0c9add85d486cafa6eeb53585d (diff) |
Temporarily revert r162066 and r162062 to see if it brings the gdb
bots back.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162080 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGDebugInfo.cpp')
-rw-r--r-- | lib/CodeGen/CGDebugInfo.cpp | 44 |
1 files changed, 15 insertions, 29 deletions
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index 11e0e31c86..fd1c7a3398 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -351,54 +351,40 @@ llvm::DIType CGDebugInfo::CreateType(const BuiltinType *BT) { case BuiltinType::Void: return llvm::DIType(); case BuiltinType::ObjCClass: - if (ClassTy.Verify()) - return ClassTy; - ClassTy = DBuilder.createForwardDecl(llvm::dwarf::DW_TAG_structure_type, - "objc_class", TheCU, - getOrCreateMainFile(), 0); - return ClassTy; + return DBuilder.createForwardDecl(llvm::dwarf::DW_TAG_structure_type, + "objc_class", TheCU, + getOrCreateMainFile(), 0); case BuiltinType::ObjCId: { // typedef struct objc_class *Class; // typedef struct objc_object { // Class isa; // } *id; - if (ObjTy.Verify()) - return ObjTy; - - if (!ClassTy.Verify()) - ClassTy = DBuilder.createForwardDecl(llvm::dwarf::DW_TAG_structure_type, - "objc_class", TheCU, - getOrCreateMainFile(), 0); - + // TODO: Cache these two types to avoid duplicates. + llvm::DIType OCTy = + DBuilder.createForwardDecl(llvm::dwarf::DW_TAG_structure_type, + "objc_class", TheCU, getOrCreateMainFile(), 0); unsigned Size = CGM.getContext().getTypeSize(CGM.getContext().VoidPtrTy); - llvm::DIType ISATy = DBuilder.createPointerType(ClassTy, Size); + llvm::DIType ISATy = DBuilder.createPointerType(OCTy, Size); - llvm::MDNode *ObjNode = DBuilder.createStructType(TheCU, "objc_object", - getOrCreateMainFile(), - 0, 0, 0, 0, - llvm::DIArray()); - SmallVector<llvm::Value *, 1> EltTys; + SmallVector<llvm::Value *, 16> EltTys; llvm::DIType FieldTy = - DBuilder.createMemberType(llvm::DIDescriptor(ObjNode), "isa", + DBuilder.createMemberType(getOrCreateMainFile(), "isa", getOrCreateMainFile(), 0, Size, 0, 0, 0, ISATy); EltTys.push_back(FieldTy); llvm::DIArray Elements = DBuilder.getOrCreateArray(EltTys); - - ObjNode->replaceOperandWith(10, Elements); - ObjTy = llvm::DIType(ObjTy); - return ObjTy; + + return DBuilder.createStructType(TheCU, "objc_object", + getOrCreateMainFile(), + 0, 0, 0, 0, Elements); } case BuiltinType::ObjCSel: { - if (SelTy.Verify()) - return SelTy; - SelTy = + return DBuilder.createForwardDecl(llvm::dwarf::DW_TAG_structure_type, "objc_selector", TheCU, getOrCreateMainFile(), 0); - return SelTy; } case BuiltinType::UChar: case BuiltinType::Char_U: Encoding = llvm::dwarf::DW_ATE_unsigned_char; break; |