mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 06:00:28 +00:00
Revert "Debug Info: Add basic support for external types references."
This reverts commit r242302. External type refs of this form were never used by any LLVM frontend so this is effectively dead code. (They were introduced to support clang module debug info, but in the end we came up with a better design that doesn't use this feature at all.) rdar://problem/25897929 Differential Revision: https://reviews.llvm.org/D30917 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297684 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f3ed5aafdd
commit
8c12617ac6
@ -440,13 +440,6 @@ namespace llvm {
|
||||
DINode::DIFlags Flags = DINode::FlagZero,
|
||||
unsigned CC = 0);
|
||||
|
||||
/// Create an external type reference.
|
||||
/// \param Tag Dwarf TAG.
|
||||
/// \param File File in which the type is defined.
|
||||
/// \param UniqueIdentifier A unique identifier for the type.
|
||||
DICompositeType *createExternalTypeRef(unsigned Tag, DIFile *File,
|
||||
StringRef UniqueIdentifier);
|
||||
|
||||
/// Create a new DIType* with "artificial" flag set.
|
||||
DIType *createArtificialType(DIType *Ty);
|
||||
|
||||
|
@ -34,7 +34,8 @@ HANDLE_DI_FLAG((1 << 11), Vector)
|
||||
HANDLE_DI_FLAG((1 << 12), StaticMember)
|
||||
HANDLE_DI_FLAG((1 << 13), LValueReference)
|
||||
HANDLE_DI_FLAG((1 << 14), RValueReference)
|
||||
HANDLE_DI_FLAG((1 << 15), ExternalTypeRef)
|
||||
// 15 was formerly ExternalTypeRef, but this was never used.
|
||||
HANDLE_DI_FLAG((1 << 15), Reserved)
|
||||
HANDLE_DI_FLAG((1 << 16), SingleInheritance)
|
||||
HANDLE_DI_FLAG((2 << 16), MultipleInheritance)
|
||||
HANDLE_DI_FLAG((3 << 16), VirtualInheritance)
|
||||
|
@ -629,7 +629,6 @@ public:
|
||||
bool isStaticMember() const { return getFlags() & FlagStaticMember; }
|
||||
bool isLValueReference() const { return getFlags() & FlagLValueReference; }
|
||||
bool isRValueReference() const { return getFlags() & FlagRValueReference; }
|
||||
bool isExternalTypeRef() const { return getFlags() & FlagExternalTypeRef; }
|
||||
|
||||
static bool classof(const Metadata *MD) {
|
||||
switch (MD->getMetadataID()) {
|
||||
|
@ -544,7 +544,6 @@ void DwarfDebug::beginModule() {
|
||||
// The retained types array by design contains pointers to
|
||||
// MDNodes rather than DIRefs. Unique them here.
|
||||
if (DIType *RT = dyn_cast<DIType>(Ty))
|
||||
if (!RT->isExternalTypeRef())
|
||||
// There is no point in force-emitting a forward declaration.
|
||||
CU.getOrCreateTypeDIE(RT);
|
||||
}
|
||||
|
@ -297,13 +297,6 @@ void DwarfUnit::addDIETypeSignature(DIE &Die, uint64_t Signature) {
|
||||
dwarf::DW_FORM_ref_sig8, DIEInteger(Signature));
|
||||
}
|
||||
|
||||
void DwarfUnit::addDIETypeSignature(DIE &Die, dwarf::Attribute Attribute,
|
||||
StringRef Identifier) {
|
||||
uint64_t Signature = DD->makeTypeSignature(Identifier);
|
||||
Die.addValue(DIEValueAllocator, Attribute, dwarf::DW_FORM_ref_sig8,
|
||||
DIEInteger(Signature));
|
||||
}
|
||||
|
||||
void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute,
|
||||
DIEEntry Entry) {
|
||||
const DIEUnit *CU = Die.getUnit();
|
||||
@ -696,8 +689,7 @@ DIE *DwarfTypeUnit::createTypeDIE(const DICompositeType *Ty) {
|
||||
|
||||
constructTypeDIE(TyDIE, cast<DICompositeType>(Ty));
|
||||
|
||||
if (!Ty->isExternalTypeRef())
|
||||
updateAcceleratorTables(Context, Ty, TyDIE);
|
||||
updateAcceleratorTables(Context, Ty, TyDIE);
|
||||
return &TyDIE;
|
||||
}
|
||||
|
||||
@ -911,13 +903,6 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const DISubroutineType *CTy) {
|
||||
}
|
||||
|
||||
void DwarfUnit::constructTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
|
||||
if (CTy->isExternalTypeRef()) {
|
||||
StringRef Identifier = CTy->getIdentifier();
|
||||
assert(!Identifier.empty() && "external type ref without identifier");
|
||||
addFlag(Buffer, dwarf::DW_AT_declaration);
|
||||
return addDIETypeSignature(Buffer, dwarf::DW_AT_signature, Identifier);
|
||||
}
|
||||
|
||||
// Add name if not anonymous or intermediate type.
|
||||
StringRef Name = CTy->getName();
|
||||
|
||||
|
@ -198,9 +198,6 @@ public:
|
||||
|
||||
/// Add a type's DW_AT_signature and set the declaration flag.
|
||||
void addDIETypeSignature(DIE &Die, uint64_t Signature);
|
||||
/// Add an attribute containing the type signature for a unique identifier.
|
||||
void addDIETypeSignature(DIE &Die, dwarf::Attribute Attribute,
|
||||
StringRef Identifier);
|
||||
|
||||
/// Add block data.
|
||||
void addBlock(DIE &Die, dwarf::Attribute Attribute, DIELoc *Block);
|
||||
|
@ -449,14 +449,6 @@ DISubroutineType *DIBuilder::createSubroutineType(DITypeRefArray ParameterTypes,
|
||||
return DISubroutineType::get(VMContext, Flags, CC, ParameterTypes);
|
||||
}
|
||||
|
||||
DICompositeType *DIBuilder::createExternalTypeRef(unsigned Tag, DIFile *File,
|
||||
StringRef UniqueIdentifier) {
|
||||
assert(!UniqueIdentifier.empty() && "external type ref without uid");
|
||||
return DICompositeType::get(VMContext, Tag, "", nullptr, 0, nullptr, nullptr,
|
||||
0, 0, 0, DINode::FlagExternalTypeRef, nullptr, 0,
|
||||
nullptr, nullptr, UniqueIdentifier);
|
||||
}
|
||||
|
||||
DICompositeType *DIBuilder::createEnumerationType(
|
||||
DIScope *Scope, StringRef Name, DIFile *File, unsigned LineNumber,
|
||||
uint64_t SizeInBits, uint32_t AlignInBits, DINodeArray Elements,
|
||||
|
@ -1,52 +0,0 @@
|
||||
; REQUIRES: object-emission
|
||||
; RUN: %llc_dwarf -filetype=obj -O0 < %s | llvm-dwarfdump -debug-dump=info - | FileCheck %s
|
||||
; Manually derived by externalizing the composite types from:
|
||||
;
|
||||
; namespace N { class B; }
|
||||
; using N::B;
|
||||
; class A;
|
||||
; A *a;
|
||||
;
|
||||
; Test the direct use of an external type.
|
||||
; CHECK: DW_TAG_variable
|
||||
; CHECK: DW_AT_type [DW_FORM_ref4] {{.*}}{[[PTR:.*]]}
|
||||
; CHECK: [[PTR]]: DW_TAG_pointer_type
|
||||
; CHECK: DW_AT_type [DW_FORM_ref4] {{.*}}{[[A:.*]]}
|
||||
; CHECK: [[A]]: DW_TAG_class_type
|
||||
; CHECK: DW_AT_declaration [DW_FORM_flag] (0x01)
|
||||
; CHECK: DW_AT_signature [DW_FORM_ref_sig8] (0x4e834ea939695c24)
|
||||
; CHECK: [[B:.*]]: DW_TAG_class_type
|
||||
; CHECK: DW_AT_declaration [DW_FORM_flag] (0x01)
|
||||
; CHECK: DW_AT_signature [DW_FORM_ref_sig8] (0x942e51c7addda5f7)
|
||||
; CHECK: DW_TAG_imported_declaration
|
||||
; CHECK: DW_AT_import [DW_FORM_ref4] {{.*}}[[B]]
|
||||
|
||||
source_filename = "test/DebugInfo/X86/externaltyperef.ll"
|
||||
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-apple-macosx10.10.0"
|
||||
|
||||
%class.A = type opaque
|
||||
|
||||
@a = global %class.A* null, align 8, !dbg !0
|
||||
|
||||
!llvm.dbg.cu = !{!2}
|
||||
!llvm.module.flags = !{!12, !13, !14}
|
||||
!llvm.ident = !{!15}
|
||||
|
||||
!0 = !DIGlobalVariableExpression(var: !1)
|
||||
!1 = !DIGlobalVariable(name: "a", scope: !2, file: !3, line: 2, type: !11, isLocal: false, isDefinition: true)
|
||||
!2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !3, producer: "clang version 3.7.0 (trunk 242039) (llvm/trunk 242046)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !5, globals: !8, imports: !9)
|
||||
!3 = !DIFile(filename: "test.cpp", directory: "/")
|
||||
!4 = !{}
|
||||
!5 = !{!6, !7}
|
||||
!6 = !DICompositeType(tag: DW_TAG_class_type, name: "A", file: !3, flags: DIFlagExternalTypeRef, identifier: "_ZTS1A")
|
||||
!7 = !DICompositeType(tag: DW_TAG_class_type, name: "A", file: !3, flags: DIFlagExternalTypeRef, identifier: "_ZTSN1N1BE")
|
||||
!8 = !{!0}
|
||||
!9 = !{!10}
|
||||
!10 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !2, entity: !7, line: 4)
|
||||
!11 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64, align: 64)
|
||||
!12 = !{i32 2, !"Dwarf Version", i32 2}
|
||||
!13 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
!14 = !{i32 1, !"PIC Level", i32 2}
|
||||
!15 = !{!"clang version 3.7.0 (trunk 242039) (llvm/trunk 242046)"}
|
||||
|
Loading…
Reference in New Issue
Block a user