Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit b4cf0ab

Browse files
committed
Split out filename & directory from DIFile to start generalizing over DIScopes
This is the first step to making all DIScopes have a common metadata prefix (so that things (using directives, for example) that can appear in any scope can be added to that common prefix). DIFile is itself a DIScope so the common prefix of all DIScopes cannot be a DIFile - instead it's the raw filename/directory name pair. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177239 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 14de1a8 commit b4cf0ab

File tree

87 files changed

+330
-220
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+330
-220
lines changed

include/llvm/DebugInfo.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,6 @@ namespace llvm {
177177
if (DbgNode && !isFile())
178178
DbgNode = 0;
179179
}
180-
StringRef getFilename() const { return getStringField(1); }
181-
StringRef getDirectory() const { return getStringField(2); }
182180
bool Verify() const;
183181
};
184182

lib/IR/DIBuilder.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,14 @@ void DIBuilder::createCompileUnit(unsigned Lang, StringRef Filename,
117117
/// for a file.
118118
DIFile DIBuilder::createFile(StringRef Filename, StringRef Directory) {
119119
assert(!Filename.empty() && "Unable to create file without name");
120-
Value *Elts[] = {
121-
GetTagConstant(VMContext, dwarf::DW_TAG_file_type),
120+
Value *Pair[] {
122121
MDString::get(VMContext, Filename),
123122
MDString::get(VMContext, Directory),
124123
};
124+
Value *Elts[] = {
125+
GetTagConstant(VMContext, dwarf::DW_TAG_file_type),
126+
MDNode::get(VMContext, Pair)
127+
};
125128
return DIFile(MDNode::get(VMContext, Elts));
126129
}
127130

lib/IR/DebugInfo.cpp

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,28 @@ bool DIDescriptor::Verify() const {
6666
DITemplateValueParameter(DbgNode).Verify());
6767
}
6868

69-
StringRef
70-
DIDescriptor::getStringField(unsigned Elt) const {
71-
if (DbgNode == 0)
72-
return StringRef();
69+
static Value *getField(const MDNode *DbgNode, unsigned Elt) {
70+
if (DbgNode == 0 || Elt >= DbgNode->getNumOperands())
71+
return 0;
72+
return DbgNode->getOperand(Elt);
73+
}
7374

74-
if (Elt < DbgNode->getNumOperands())
75-
if (MDString *MDS = dyn_cast_or_null<MDString>(DbgNode->getOperand(Elt)))
76-
return MDS->getString();
75+
static const MDNode *getNodeField(const MDNode *DbgNode, unsigned Elt) {
76+
if (const MDNode *R = dyn_cast_or_null<MDNode>(getField(DbgNode, Elt)))
77+
return R;
78+
return 0;
79+
}
7780

81+
static StringRef getStringField(const MDNode *DbgNode, unsigned Elt) {
82+
if (MDString *MDS = dyn_cast_or_null<MDString>(getField(DbgNode, Elt)))
83+
return MDS->getString();
7884
return StringRef();
7985
}
8086

87+
StringRef DIDescriptor::getStringField(unsigned Elt) const {
88+
return ::getStringField(DbgNode, Elt);
89+
}
90+
8191
uint64_t DIDescriptor::getUInt64Field(unsigned Elt) const {
8292
if (DbgNode == 0)
8393
return 0;
@@ -531,7 +541,7 @@ bool DINameSpace::Verify() const {
531541

532542
/// \brief Verify that the file descriptor is well formed.
533543
bool DIFile::Verify() const {
534-
return isFile() && DbgNode->getNumOperands() == 3;
544+
return isFile() && DbgNode->getNumOperands() == 2;
535545
}
536546

537547
/// \brief Verify that the enumerator descriptor is well formed.
@@ -661,9 +671,7 @@ StringRef DIScope::getFilename() const {
661671
return DINameSpace(DbgNode).getFilename();
662672
if (isType())
663673
return DIType(DbgNode).getFilename();
664-
if (isFile())
665-
return DIFile(DbgNode).getFilename();
666-
llvm_unreachable("Invalid DIScope!");
674+
return ::getStringField(getNodeField(DbgNode, 1), 0);
667675
}
668676

669677
StringRef DIScope::getDirectory() const {
@@ -681,9 +689,7 @@ StringRef DIScope::getDirectory() const {
681689
return DINameSpace(DbgNode).getDirectory();
682690
if (isType())
683691
return DIType(DbgNode).getDirectory();
684-
if (isFile())
685-
return DIFile(DbgNode).getDirectory();
686-
llvm_unreachable("Invalid DIScope!");
692+
return ::getStringField(getNodeField(DbgNode, 1), 1);
687693
}
688694

689695
DIArray DICompileUnit::getEnumTypes() const {

test/CodeGen/ARM/2010-08-04-StackVariable.ll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
7878

7979
!0 = metadata !{i32 786478, i32 0, metadata !1, metadata !"SVal", metadata !"SVal", metadata !"", metadata !2, i32 11, metadata !14, i1 false, i1 false, i32 0, i32 0, null, i1 false, i1 false, null} ; [ DW_TAG_subprogram ]
8080
!1 = metadata !{i32 786451, metadata !2, metadata !"SVal", metadata !2, i32 1, i64 128, i64 64, i64 0, i32 0, null, metadata !4, i32 0, null} ; [ DW_TAG_structure_type ]
81-
!2 = metadata !{i32 786473, metadata !"small.cc", metadata !"/Users/manav/R8248330"} ; [ DW_TAG_file_type ]
81+
!2 = metadata !{i32 786473, metadata !48} ; [ DW_TAG_file_type ]
8282
!3 = metadata !{i32 786449, i32 0, i32 4, metadata !2, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 false, metadata !"", i32 0, metadata !47, metadata !47, metadata !46, metadata !47, metadata !""} ; [ DW_TAG_compile_unit ]
8383
!4 = metadata !{metadata !5, metadata !7, metadata !0, metadata !9}
8484
!5 = metadata !{i32 786445, metadata !1, metadata !"Data", metadata !2, i32 7, i64 64, i64 64, i64 0, i32 0, metadata !6} ; [ DW_TAG_member ]
@@ -124,3 +124,4 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
124124
!45 = metadata !{i32 27, i32 0, metadata !39, null}
125125
!46 = metadata !{metadata !0, metadata !9, metadata !16, metadata !17, metadata !20}
126126
!47 = metadata !{i32 0}
127+
!48 = metadata !{metadata !"small.cc", metadata !"/Users/manav/R8248330"}

test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,9 @@ entry:
7676
}
7777

7878
!llvm.dbg.cu = !{!2}
79-
!40 = metadata !{metadata !0, metadata !6, metadata !7, metadata !8, metadata !9}
80-
!41 = metadata !{metadata !13, metadata !14, metadata !15, metadata !16, metadata !17}
81-
!42 = metadata !{metadata !10, metadata !11}
82-
!43 = metadata !{metadata !18, metadata !19}
83-
!44 = metadata !{metadata !21, metadata !22}
84-
!45 = metadata !{metadata !24, metadata !25}
85-
!46 = metadata !{metadata !27, metadata !28}
8679

8780
!0 = metadata !{i32 786478, i32 0, metadata !1, metadata !"get1", metadata !"get1", metadata !"get1", metadata !1, i32 4, metadata !3, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 true, i8 (i8)* @get1, null, null, metadata !42, i32 4} ; [ DW_TAG_subprogram ]
88-
!1 = metadata !{i32 786473, metadata !"foo.c", metadata !"/tmp/"} ; [ DW_TAG_file_type ]
81+
!1 = metadata !{i32 786473, metadata !47} ; [ DW_TAG_file_type ]
8982
!2 = metadata !{i32 786449, i32 0, i32 1, metadata !1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2369.8)", i1 true, metadata !"", i32 0, null, null, metadata !40, metadata !41, metadata !""} ; [ DW_TAG_compile_unit ]
9083
!3 = metadata !{i32 786453, metadata !1, metadata !"", metadata !1, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !4, i32 0, null} ; [ DW_TAG_subroutine_type ]
9184
!4 = metadata !{metadata !5, metadata !5}
@@ -124,3 +117,11 @@ entry:
124117
!37 = metadata !{i32 13, i32 0, metadata !26, null}
125118
!38 = metadata !{i32 16, i32 0, metadata !9, null}
126119
!39 = metadata !{i32 16, i32 0, metadata !29, null}
120+
!40 = metadata !{metadata !0, metadata !6, metadata !7, metadata !8, metadata !9}
121+
!41 = metadata !{metadata !13, metadata !14, metadata !15, metadata !16, metadata !17}
122+
!42 = metadata !{metadata !10, metadata !11}
123+
!43 = metadata !{metadata !18, metadata !19}
124+
!44 = metadata !{metadata !21, metadata !22}
125+
!45 = metadata !{metadata !24, metadata !25}
126+
!46 = metadata !{metadata !27, metadata !28}
127+
!47 = metadata !{metadata !"foo.c", metadata !"/tmp/"}

test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,10 @@ define i32 @get5(i32 %a) nounwind optsize ssp {
7373
declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
7474

7575
!llvm.dbg.cu = !{!0}
76-
!40 = metadata !{metadata !1, metadata !6, metadata !7, metadata !8, metadata !9}
77-
!42 = metadata !{metadata !10, metadata !11}
78-
!43 = metadata !{metadata !13, metadata !14}
79-
!44 = metadata !{metadata !16, metadata !17}
80-
!45 = metadata !{metadata !19, metadata !20}
81-
!46 = metadata !{metadata !27, metadata !28}
82-
!41 = metadata !{metadata !22, metadata !23, metadata !24, metadata !25, metadata !26}
8376

8477
!0 = metadata !{i32 786449, i32 0, i32 12, metadata !2, metadata !"clang", i1 true, metadata !"", i32 0, null, null, metadata !40, metadata !41, null} ; [ DW_TAG_compile_unit ]
8578
!1 = metadata !{i32 786478, i32 0, metadata !2, metadata !"get1", metadata !"get1", metadata !"", metadata !2, i32 5, metadata !3, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 true, i32 (i32)* @get1, null, null, metadata !42, i32 5} ; [ DW_TAG_subprogram ]
86-
!2 = metadata !{i32 786473, metadata !"ss3.c", metadata !"/private/tmp", metadata !0} ; [ DW_TAG_file_type ]
79+
!2 = metadata !{i32 786473, metadata !47} ; [ DW_TAG_file_type ]
8780
!3 = metadata !{i32 786453, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i32 0, i32 0, i32 0, metadata !4, i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
8881
!4 = metadata !{metadata !5}
8982
!5 = metadata !{i32 786468, metadata !0, metadata !"int", null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
@@ -121,3 +114,11 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
121114
!37 = metadata !{i32 14, i32 32, metadata !21, null}
122115
!38 = metadata !{i32 17, i32 16, metadata !9, null}
123116
!39 = metadata !{i32 17, i32 32, metadata !29, null}
117+
!40 = metadata !{metadata !1, metadata !6, metadata !7, metadata !8, metadata !9}
118+
!41 = metadata !{metadata !22, metadata !23, metadata !24, metadata !25, metadata !26}
119+
!42 = metadata !{metadata !10, metadata !11}
120+
!43 = metadata !{metadata !13, metadata !14}
121+
!44 = metadata !{metadata !16, metadata !17}
122+
!45 = metadata !{metadata !19, metadata !20}
123+
!46 = metadata !{metadata !27, metadata !28}
124+
!47 = metadata !{metadata !"ss3.c", metadata !"/private/tmp"}

test/CodeGen/ARM/debug-info-arg.ll

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,10 @@ declare void @foobar(i64, i64)
3030
declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
3131

3232
!llvm.dbg.cu = !{!0}
33-
!30 = metadata !{metadata !1}
34-
!31 = metadata !{metadata !5, metadata !13, metadata !14, metadata !17, metadata !18, metadata!19}
3533

3634
!0 = metadata !{i32 786449, i32 0, i32 12, metadata !2, metadata !"Apple clang version 3.0 (tags/Apple/clang-211.10.1) (based on LLVM 3.0svn)", i1 true, metadata !"", i32 0, null, null, metadata !30, null, null} ; [ DW_TAG_compile_unit ]
3735
!1 = metadata !{i32 786478, i32 0, metadata !2, metadata !"foo", metadata !"foo", metadata !"", metadata !2, i32 11, metadata !3, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 true, void (%struct.tag_s*, %struct.tag_s*, i64, i64, %struct.tag_s*, %struct.tag_s*)* @foo, null, null, metadata !31, i32 11} ; [ DW_TAG_subprogram ]
38-
!2 = metadata !{i32 786473, metadata !"one.c", metadata !"/Volumes/Athwagate/R10048772"} ; [ DW_TAG_file_type ]
36+
!2 = metadata !{i32 786473, metadata !32} ; [ DW_TAG_file_type ]
3937
!3 = metadata !{i32 786453, metadata !2, metadata !"", metadata !2, i32 0, i64 0, i64 0, i32 0, i32 0, i32 0, metadata !4, i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
4038
!4 = metadata !{null}
4139
!5 = metadata !{i32 786689, metadata !1, metadata !"this", metadata !2, i32 16777227, metadata !6, i32 0, null} ; [ DW_TAG_arg_variable ]
@@ -63,3 +61,6 @@ declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
6361
!27 = metadata !{i32 786443, metadata !1, i32 11, i32 107, metadata !2, i32 0} ; [ DW_TAG_lexical_block ]
6462
!28 = metadata !{i32 13, i32 5, metadata !27, null}
6563
!29 = metadata !{i32 14, i32 1, metadata !27, null}
64+
!30 = metadata !{metadata !1}
65+
!31 = metadata !{metadata !5, metadata !13, metadata !14, metadata !17, metadata !18, metadata!19}
66+
!32 = metadata !{metadata !"one.c", metadata !"/Volumes/Athwagate/R10048772"}

0 commit comments

Comments
 (0)